OpenWrt 初期設定 オールインワンスクリプト Windowsから導入 初心者対応

:flag_jp: Japanese notation

:::note warn
### 重要なお知らせ プロジェクトの移行

このプロジェクトの開発は終了し、今後の開発はすべて新しいリポジトリに移されました
最新のアップデートと進行中の作業については、新しいリポジトリを参照してください
:::

https://qiita.com/site_u/items/bd331296ce535ed7a69e


# はじめに
::: note
### 初心者対応構成
- Windowsからの導入手順
- スクリプトでの自動設定
- [UCI (ttyd)](https://openwrt.org/docs/guide-user/base-system/uci)、[Webコンソール (LuCi)](https://openwrt.org/docs/guide-user/luci/start)、[ファイラー (SFTP)](https://openwrt.org/docs/guide-user/services/nas/sftp.server)にて比較作業がおススメ:exclamation:
:::

# 新規設定用 オールインワンスクリプト 初心者対応
::: note
### オールインワンスクリプト
![config.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/ebcf1227-8809-3fad-ba47-5e44a04ccac6.png)
:warning:不具合あればご連絡下さい
:warning:APK（スナップショット）は一部利用可

<details><summary>仕様</summary>

- スクリプト : [config-software](https://github.com/site-u2023/config-software)
- 対応ファームウェア : [19.07](https://openwrt.org/releases/19.07/start)以降 ※一部[スナップショット](https://openwrt.org/releases/snapshot)及び19、21非対応
- 対応デバイス状態 : 初期値
- 動作確認デバイス : [Velop WRT Pro 7](https://qiita.com/site_u/items/aa619d4330a4f206d16b)/ [BPI-R3](https://qiita.com/site_u/items/4c3363f7c1ce2b7b3bfa)/ [NCP-HG100](https://qiita.com/site_u/items/e07cd5b6326039e45fde)/ [Hyper-V: x86/64](https://qiita.com/site_u/items/f71961111f47c01f7038)
- 動作確認クライアント：Windows11 バージョン24H2/ バージョン23H2
- インターネット設定：[ホームゲートウェイ（HGW）](https://ja.wikipedia.org/wiki/%E3%83%9B%E3%83%BC%E3%83%A0%E3%82%B2%E3%83%BC%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A4)接続必須

---

</details>

<details><summary>詳細</summary>

  - [システム初期設定（ホストネーム・パスワード・wifi等）](https://qiita.com/site_u/items/59c641c9dc0eec3b1324)
    - [Dynamic frequency selection (DFS)](https://qiita.com/site_u/items/f42be7c0953187b9428a#dynamic-frequency-selection-dfs)
    - [Guest Wi-Fi (QR code)](https://qiita.com/site_u/items/f42be7c0953187b9428a#guest-wi-fi-qr-code)
    - [Target Wake Time (TWT)](https://qiita.com/site_u/items/f42be7c0953187b9428a#target-wake-time-twt)
  - [インターネット（MAP-e・DS-LITE・PPPoE）接続設定](https://qiita.com/site_u/items/4b8076cb8c9b05bc3f9a)
    - OCNバーチャルコネクト・V6プラス・IPv6オプション自動設定（マルチセッション対応）
      - マルチセッション対応の設定のみ実行 
    - [NURO光 MAP-e](https://qiita.com/site_u/items/a136971cb29fe12786e3) 
    - トランジックス自動設定
    - クロスパス自動設定
    - v6 コネクト自動設定
    - PPPoE（iPv4・IPv6）: 要認証ID（ユーザー名）・パスワード
      - PPPoEのIPv4接続の設定を実行
      - PPPoEのIPv4及びIPv6接続の設定を実行
  - [推奨パッケージインストール](https://qiita.com/site_u/items/a23d165201081817cb00)[（USB自動判別）](https://qiita.com/site_u/items/597199882dc4d56c2385#usb)
    - 自動フルインストール（推奨パッケージオールイン）
    - 選択インストール
    - フラッシュ後にインストールしたパッケージ確認
  - [アクセスポイント（Dumb / ブリッジ）設定](https://qiita.com/site_u/items/0463c782be0acd6d23d3)
  - [AdGuardHome AdBlock DoH DoTインストール](https://qiita.com/site_u/items/cf34ea1ee9a1971272bc)
    - [AdGuardHomeの設定とインストール（カスタムフィルターアドイン）](https://qiita.com/site_u/items/cf34ea1ee9a1971272bc#adguard-home)
      - 管理用ウェブインターフェイス設定（ポート・ユーザー名・パスワードのみ）
    - [AdBlockdのインストールと設定（カスタムフィルターアドイン）](https://qiita.com/site_u/items/cf34ea1ee9a1971272bc#adblock)
      - AdBlockのインストールと設定（カスタムフィルターアドイン）
      - AdBlock-fastのインストールと設定（カスタムフィルターアドイン）
    - [DNS over HTTPS（DoH）のインストールと設定](https://qiita.com/site_u/items/cf34ea1ee9a1971272bc#https-dns-proxy)
    - [DNS over TLS（DoT）Stubbyのインストールと設定](https://qiita.com/site_u/items/cf34ea1ee9a1971272bc#stubby)
  - [ホームアシスタント](https://qiita.com/site_u/items/c33defca3eae1e8c62b8)
  - 他
    - [ボタン設定とインストール](https://qiita.com/site_u/items/08764ce9473231482c17)
    - [IPERF3インストール及びサービス追加](https://qiita.com/site_u/items/599124e2904d1374c2c9#iperf3)
    - [WiFi位置情報サービス停止（LBS）](https://qiita.com/site_u/items/3cd3fc65a789461262e8#%E4%BD%8D%E7%BD%AE%E6%83%85%E5%A0%B1%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E5%81%9C%E6%AD%A2)
    - [SAMBA4](https://qiita.com/site_u/items/aa9164859a78cb4e3f8f)
    - [Dynamic frequency selection (DFS)](https://qiita.com/site_u/items/f42be7c0953187b9428a#dynamic-frequency-selection-dfs)
    - [Guest Wi-Fi (QR code)](https://qiita.com/site_u/items/f42be7c0953187b9428a#guest-wi-fi-qr-code)
    - [Target Wake Time (TWT)](https://qiita.com/site_u/items/f42be7c0953187b9428a#target-wake-time-twt)
  - 終了

---

</details>

<details><summary>構成</summary>

- [README.md](https://github.com/site-u2023/config-software/blob/main/README.md)
  - [openwrt-config.sh](https://github.com/site-u2023/config-software/blob/main/openwrt-config.sh)
    - [system-config.sh](https://github.com/site-u2023/config-software/blob/main/system-config.sh)
      - [system.sh](https://github.com/site-u2023/config-software/blob/main/system.sh)
      - [zzdfs-config.sh](https://github.com/site-u2023/config-software/blob/main/zzdfs-config.sh)
      - [guest.sh](https://github.com/site-u2023/config-software/blob/main/guest.sh)
    - [internet-config.sh](https://github.com/site-u2023/config-software/blob/main/internet-config.sh)
      - [map-e.sh](https://github.com/site-u2023/config-software/blob/main/map-e.sh)
      - [map-e-nuro.sh](https://github.com/site-u2023/config-software/blob/main/map-e-nuro.sh)
      - [ds-lite.sh](https://github.com/site-u2023/config-software/blob/main/ds-lite.sh)
    - [package-config.sh](https://github.com/site-u2023/config-software/blob/main/package-config.sh)
      - [package-auto.sh](https://github.com/site-u2023/config-software/blob/main/package-auto.sh)
        - [package-auto-e.sh](https://github.com/site-u2023/config-software/blob/main/package-auto-e.sh)
        - [package-manual-g.sh](https://github.com/site-u2023/config-software/blob/main/package-manual-g.sh)
      - [package-manual.sh](https://github.com/site-u2023/config-software/blob/main/package-manual.sh)
        - [package-manual-e.sh](https://github.com/site-u2023/config-software/blob/main/package-manual-e.sh)
        - [package-manual-g.sh](https://github.com/site-u2023/config-software/blob/main/package-manual-g.sh)
      - [install-config.sh](https://github.com/site-u2023/config-software/blob/main/install-config.sh)
    - [dumb-config.sh](https://github.com/site-u2023/config-software/blob/main/dumb-config.sh)
      - [dumb.sh](https://github.com/site-u2023/config-software/blob/main/dumb.sh)
    - [ad-dns-blocking-config.sh](https://github.com/site-u2023/config-software/blob/main/ad-dns-blocking-config.sh)
      - [adguard-config.sh](https://github.com/site-u2023/config-software/blob/main/adguard-config.sh)
        - [adguardhome.yaml](https://raw.githubusercontent.com/site-u2023/config-software/main/adguardhome.yaml)
        - [adguardhome.yaml-g](https://raw.githubusercontent.com/site-u2023/config-software/main/adguardhome.yaml-g)
        - [htpasswd](https://github.com/site-u2023/config-software/blob/main/htpasswd)
        - [htpasswd-x86](https://github.com/site-u2023/config-software/blob/main/htpasswd-x86)
        - [adguard.sh](https://github.com/site-u2023/config-software/blob/main/adguard.sh)
      - [adblock-config.sh](https://github.com/site-u2023/config-software/blob/main/adblock-config.sh)
        - [adblock.sh](https://github.com/site-u2023/config-software/blob/main/adblock.sh)
        - [adblock-fast.sh](https://github.com/site-u2023/config-software/blob/main/adblock-fast.sh)
    - [HomeAssistant](https://github.com/site-u2023/config-software/blob/main/homeassistant.sh)
    - [etc-config.sh](https://github.com/site-u2023/config-software/blob/main/etc-config.sh)
      - [button-config.sh](https://github.com/site-u2023/config-software/blob/main/button-config.sh)
        - [button.sh](https://github.com/site-u2023/config-software/blob/main/button.sh)
      - [iperf3](https://github.com/site-u2023/config-software/blob/main/ad-dns-blocking-config.sh)
      - [zzdfs-config.sh](https://github.com/site-u2023/config-software/blob/main/zzdfs-config.sh)
      - [guest.sh](https://github.com/site-u2023/config-software/blob/main/guest.sh)

---

</details>

:::

::: note
### デバイスアクセス
#### [PowerShell](https://learn.microsoft.com/ja-jp/powershell/scripting/what-is-windows-powershell?view=powershell-7.4)の開始
- キー入力：**`Win`+`x` > `a` > `はい`**

<details><summary>パワーシェル7のインストールとショートカット作成</summary>

```powershell:powershell
$currentVersion = $PSVersionTable.PSVersion
Write-Host "Current PowerShell version: $($currentVersion)"
$installed = Get-Command pwsh -ErrorAction SilentlyContinue
if ($installed) {
    Write-Host "PowerShell 7 is already installed. Skipping installation."
} else {
    Write-Host "Installing PowerShell 7..."
    $url = "https://aka.ms/install-powershell.ps1"
    Invoke-WebRequest -Uri $url -OutFile "install-powershell.ps1"
    .\install-powershell.ps1
    Write-Host "PowerShell 7 installation completed."
}
$desktop = [Environment]::GetFolderPath("Desktop")
$shortcutPath = "$desktop\PowerShell 7 (Admin).lnk"
$targetPath = "C:\Program Files\PowerShell\7\pwsh.exe"
$arguments = "-Command Start-Process pwsh -Verb runAs"
$shell = New-Object -ComObject WScript.Shell
$shortcut = $shell.CreateShortcut($shortcutPath)
$shortcut.TargetPath = $targetPath
$shortcut.Arguments = $arguments
$shortcut.Description = "PowerShell 7 Administrator Shortcut"
$shortcut.WorkingDirectory = "$HOME"
$shortcut.IconLocation = $targetPath
$shortcut.Save()
Write-Host "PowerShell 7 administrator shortcut has been created."

```

---

</details>

#### [UCI（SSH）アクセス](https://openwrt.org/docs/guide-quick-start/sshadministration)
```powershell:powershell:初期設定用
ssh -o StrictHostKeyChecking=no -oHostKeyAlgorithms=+ssh-rsa root@192.168.1.1
```

- root@192.168.1.1's password:`初期値：パスワード無し`

<details><summary>SSHログイン出来ない場合:exclamation:</summary>

  - `%USERPROFILE%\.ssh\known_hosts` ※Windows隠しファイル
```powershell:powershell
Clear-Content .ssh\known_hosts -Force 
```

</details>

<details><summary>OpenSSHのインストールが無い場合:exclamation:</summary>

- 機能の確認
※Windows 10 Fall Creators Update(1709)以降標準搭載
```powershell:powershell
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
```
- 機能のインストール
```powershell:powershell
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
```
---

:::

::: note
### オールインワンスクリプト設定

<details><summary>仕様</summary>

- /etc/config/ttyd
```sh
config ttyd
	option interface '@lan'
	option command '/bin/login -f root'
	option ipv6 '1'
	list client_option 'theme={"background": "black"}'
	list client_option 'titleFixed=ttyd'

config ttyd 'ttyd'
	option port '8888'
	option interface '@lan'
	option ipv6 '1'
	option command 'confsoft'
	list client_option 'theme={"background": "blue"}'
	list client_option 'titleFixed=config-software'
```

※ttydの設定から変更可

---

</details>

<details><summary>構成</summary>

- [ttyd.sh](https://github.com/site-u2023/config-software/blob/main/ttyd.sh)
※ttydインストール：約2MB
  - [openwrt-config.sh](https://github.com/site-u2023/config-software/blob/main/openwrt-config.sh)

---

</details>

#### デバイスのWANにHGWまたはインターネットに繋がる回線に接続
:warning:インターネット接続を設定する場合はHGWに直結させる事
#### 初回設定及び実行
```powershell:powershell
mkdir -p /etc/config-software; wget --no-check-certificate -O /etc/config-software/ttyd.sh https://raw.githubusercontent.com/site-u2023/config-software/main/ttyd.sh; sh /etc/config-software/ttyd.sh; confsoft
```

<details><summary>MAP-eなど未設定でIPv4不通の場合:exclamation:</summary>

※https://github.com/ はIPv6利用で接続可
  - 設定用クライアントをLAN1に接続
```sh:ssh
# IPv6利用設定
uci add network device
uci set network.@device[-1].name='lan1'
uci set network.@device[-1].mtu='1500'
uci set network.@device[-1].ipv6='1'
uci set network.@device[-1].mtu6='1500'
#
uci commit network
/etc/init.d/network reload
```
---

</details>

<details><summary>フラッシュ容量不足でスクリプトが実行出来ない場合:exclamation:</summary>

[confsoft.sh](https://github.com/site-u2023/config-software/blob/main/sonfsoft.sh)
スクリプトのみ実行 ※ttyd未利用
```powershell:powershell
mkdir -p /etc/config-software; wget --no-check-certificate -O /etc/config-software/confsoft.sh https://raw.githubusercontent.com/site-u2023/config-software/main/confsoft.sh; sh /etc/config-software/confsoft.sh; confsoft
```

---

</details>

:::

# アクセス

:::note

### オールインワンスクリプト

#### ブラウザから実行
- **[openwrt.lan:8888](http://openwrt.lan:8888)** [(192.168.1.1:8888)](http://192.168.1.1:8888)

#### コマンドから実行
```sh:ssh
confsoft
```

:warning:強制終了：`Ctrl`+`c`

:::

::: note
### [Webコンソール（LuCi）](https://qiita.com/site_u/items/a23d165201081817cb00#luciweb%E7%AE%A1%E7%90%86%E7%94%BB%E9%9D%A2)
#### ブラウザから実行
- **[openwrt.lan](http://openwrt.lan)** [(192.168.1.1)](http://192.168.1.1)
  - ユーザー名：`root`
  - パスワード：`設定したパスワード`

#### QRコードから実行
- **192.168.1.1**
![QR192.168.1.1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/93eed9ce-7319-9332-99ba-74455b471cdd.png) 
:::

::: note
### [UCI（TTYD）](https://qiita.com/site_u/items/a23d165201081817cb00#ttyd)

#### ブラウザから実行
- **[openwrt.lan:7681](http://openwrt.lan:7681)** [(192.168.1.1:7681)](http://192.168.1.1:7681)
#### LuCiから実行
- **[openwrt.lan/ttyd](openwrt.lan/cgi-bin/luci/admin/services/ttyd)** [(http://192.168.1.1/ttyd)](http://192.168.1.1/cgi-bin/luci/admin/services/ttyd)
#### QRコードから実行
- **192.168.1.1:7681**
![QR_062248.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/e7929d2e-d9b0-b599-33cf-55413d584b19.png)

:::

::: note
### [ファイラー（SFTP）](https://qiita.com/site_u/items/a23d165201081817cb00#sftp-server)

#### クライアント設定（WIndows）
- 手動インストール
  - ダウンロード：[WinSCP](https://winscp.net/eng/download.php)

<details><summary>自動インストール</summary>

- キー入力：`Win`+`x` > `a` > `はい`
- 最新版ソフトウェアのインストール
```powershell:powershell:クライアントPC
$psVersion = $PSVersionTable.PSVersion.Major
$LINKS = Invoke-WebRequest "https://winscp.net/eng/download.php"
$LINKS_VERSION = $LINKS.Links | Where-Object {$_.href -like "*WinSCP-*-Setup.exe*"} | Select-Object -ExpandProperty href
$VERSION = ($LINKS_VERSION -split '/')[-2] -replace "WinSCP-([0-9]+\.[0-9]+\.[0-9]+).*", '$1'
Write-Host "Version to install: $VERSION"
$downloadUrl = "https://jaist.dl.sourceforge.net/project/winscp/WinSCP/$VERSION/WinSCP-$VERSION-Setup.exe?viasf=1"
Write-Host "Downloading from: $downloadUrl"
$ONAMAE = (whoami).Split('\')[1]
$destinationPath = "C:\Users\$ONAMAE\Downloads\WinSCP-$VERSION-Setup.exe"
Invoke-WebRequest -Uri $downloadUrl -OutFile $destinationPath
Write-Host "Installing WinSCP..."
Start-Process -FilePath $destinationPath -ArgumentList "/VERYSILENT /NORESTART" -Wait
Invoke-Expression "C:\Users\$ONAMAE\AppData\Local\Programs\WinSCP\WinSCP.exe"

```

---

</details>

- `警告` > `強制的に貼り付け`
- WinSCP設定
  - セッション
    - ホスト名：`192.168.1.1`
    - ユーザー名：`root`
    - パスワード：`設定したパスワード`
    - `ログイン`をクリック
:::

::: note
### [Guest Wi-Fi](https://qiita.com/site_u/items/f42be7c0953187b9428a#guest-wi-fi-qr-code)

#### QRコード発行
- **[openwrt.lan/guest.html](http://openwrt.lan/guest.html)** [(192.168.1.1/guest.html)](http://192.168.1.1/guest.html)
:::

::: note
### [AdGuardHome](https://qiita.com/site_u/items/cf34ea1ee9a1971272bc#adguardhome)
#### 管理画面
- **初期値 [openwrt.lan:3000](http://openwrt.lan:3000)** [(192.168.1.1:3000)](http://192.168.1.1:3000)

:::

# 初期化

::: note warn
### [ファクトリーリセット(初期化)](https://openwrt.org/docs/guide-user/troubleshooting/failsafe_and_factory_reset#soft_factory_reset)
```sh
# 要注意
firstboot && reboot now
```
This will erase all settings and remove any installed packages. Are you sure? [N/y] `y`

### [デバイスリセットボタン](https://openwrt.org/docs/guide-user/troubleshooting/failsafe_and_factory_reset#reset_button)
デバイスのリセットボタンを5秒押し続ける
:::

# メインページ
https://qiita.com/site_u/items/39fbac482c06c98b229b

# GitHub
https://github.com/site-u2023/config-software/blob/main/README.md

# あとがき

面白くなって色々ワンコピペに組み込んでみました

# 参考資料（感謝:relaxed:）