OpenWrt & OpenMPTCProuter x86/64 Windows11 Home Hyper-V

:warning:Japanese notation
![OpenWrt_icon.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/00cb7976-bf5f-1c85-4544-6cbbc043b497.png)

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

#### [UCI（SSH）アクセス](https://openwrt.org/docs/guide-quick-start/sshadministration)
```powershell:powershell:初期設定用
ssh -o StrictHostKeyChecking=no root@192.168.1.1
```
- root@192.168.1.1's password:`初期値：パスワード無し`

<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
### 前提条件
- 対応OS: Windows11 Home
- 対応仮想化用クライアントPC: x86
:::

# ファームウェアについて
:::note
### [OpenWrt Project へようこそ](https://openwrt.org/start)
![320.logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/b680feca-c6f1-4b68-4516-7001887217f7.png)
- [The UCI system](https://openwrt.org/docs/guide-user/base-system/uci)

![cui.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/ed3c84b5-e046-609a-d975-089bfb3bcecf.png)

- [LuCI web interface](https://openwrt.org/docs/guide-user/luci/start)

![hyperv.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/bdfb6320-a033-d7a5-c1ac-f0cca545c9d1.png)

- [x86ハードウェア上のOpenWrt (PC/ VM/ サーバー)](https://openwrt.org/docs/guide-user/installation/openwrt_x86)

- [デバイス用のOpenWrtファームウェアをダウンロード](https://firmware-selector.openwrt.org)

:::

# デバイスについて
:::note
### 

- 仮想化ハードウェア仕様 (参考)
Windows11 Home
  - CPU         : Intel i5-1235U
  - RAM         : 32 GB
  - SSD         : 512 GB 
  - BIOS        : Virtualization Technology [Enabled]

:::

# OpenWrt x86/64
::: note
### Hyper-VをWindows11 Homeにインストール

:warning: **Proはスルー**

- スクリプト: [hyperv.bat](https://github.com/site-u2023/windows/blob/main/hyperv.bat)
- ディレクトリ: `C:\openwrt`

powershell > `Win`+`x` > `a` > `はい`
`警告` > `強制的に貼り付け`
```powershell:powershell
Set-ExecutionPolicy Unrestricted
New-Item C:\openwrt -ItemType Directory -Force 
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/site-u2023/windows/main/hyperv.bat" -OutFile "C:\openwrt\hyperv.bat"
Start-Process C:\openwrt\hyperv.bat
Set-ExecutionPolicy Restricted

```
今すぐコンピューターを再起動しますか？ (Y/N) 
`y`

:::

::: note
### imgをvhdxに変換
- 以下をダウンロード
[デバイス用のOpenWrtファームウェアをダウンロード](https://firmware-selector.openwrt.org/?version=23.05.5&target=x86%2F64&id=generic)

- `COMBINED-EFI (EXT4)` 

powershell > `Win`+`x` > `a` > `はい`
`警告` > `強制的に貼り付け`
```powershell:powershell
New-Item "c:\openwrt\" -ItemType Directory -ErrorAction SilentlyContinue
Move-Item C:\Users\*\Downloads\openwrt-*.img.gz c:\openwrt\ -force
```

- UbuntuをWindows11にインストール
```powershell:PowerShell
wsl --install

```

```powershell:powershell
wsl.exe --list --online

```

```powershell:powershell
Ubuntu

```
`アカウント名` 及び `パスワード` 入力



```powershell:SSH
sudo apt-get update
sudo apt-get install gzip
sudo apt install qemu-utils
cd /mnt/c/openwrt/
gunzip -k openwrt-*.img.gz
qemu-img resize -f raw openwrt-*.img 1G
qemu-img convert openwrt-*.img -O vhdx openwrt.vhdx
exit
exit

```
[sudo] password for openwrt: `パスワード入力`

:::

::: note
### パーテーション拡張
[フリーパーティション管理ソフト
EaseUS Partition Master Free](https://jp.easeus.com/partition-manager-software/free.html)

- 仮想ディスク
  - VHDxのマウント
`C:\ProgramData\Microsoft\Windows\Virtual Hard Disks\openwrt.vhdx`

  - [ ] 読み取り専用

![ease.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/92c38990-719b-5e41-2dae-d8c813c21e17.png)
- 未割当
  - 作成 
  - サイズと位置を決定する: 最大
  - ドライブレター: 無し
  - ファイルシステム: EXT4
- 一個のタスクを実行
- アンマウント

:::

::: note
### 仮想スイッチ作成
- Hyper-Vマネージャー
`%windir%\System32\mmc.exe "%windir%\System32\virtmgmt.msc"`
  - 仮想スイッチマネージャー
    - 新しい仮想ネットワークスイッチ
      - 内部
        - 仮想スイッチの作成
          - 仮想スイッチのプロパティ
            - 名前: `任意`
            - メモ:  LAN (eth0)
            - 内部ネットワーク

:::


::: note
### OpenWrtイメージマウント
- hyper-V クイック作成
`C:\Program Files\Hyper-V\VMCreate.exe`
- ローカルインストール元
  - インストール元の変更
  - `C:\openwrt\openwrt.vhdx`をHyper-Vにマウント
    - セキュアブート無効

- 接続の編集
  - ハードウェアの追加
    - ネットワークアダプター
      - 追加
        - 作成したLAN
- 接続

- 仮想マシンの起動が完了したらコンソールをクリック
　バナーが表示され、入力可能となる
 
:::

::: note
### 固定IPアドレス設定
- LANの設定: LuCiログイン用 (固定IP)
  - LANに固定IPを環境に合わせ調整
[コマンドをちょっとだけ覚える](https://qiita.com/site_u/items/39fbac482c06c98b229b#%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%92%E3%81%A1%E3%82%87%E3%81%A3%E3%81%A8%E3%81%A0%E3%81%91%E8%A6%9A%E3%81%88%E3%82%8B)
```sh:SSH
vi /etc/config/network

```
- キー配列を置き換えて入力 (Hyper-Vは英文字キーボード)
　: = `shift`+`;`
　_ = `-`
　* = `'`

`option ipaddr '192.168.1.1'`をメインルーターと被らないように変更
例: `192.168.11.1`

- クライアントPCの設定
  - アダプターの設定の変更
    - ネットワーク接続
`任意内部`

![ip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/9520711a-25d9-4172-9761-44d8ee27831f.png)

- o仮想マシンopenwrt
  - 設定
    - ハードウェアの追加
      - ネットワークアダプター
        - 追加
          - 仮想スイッチ: 作成したWANとLANスイッチを追加
- 仮想マシンopenwrtを停止し、再度起動
- option ipaddrに設定したアドレスでLuCiログイン
※WANが無い場合、eth1で`wan`インターフェースを作成

:::

# [新規設定用 オールインワンスクリプト 初心者対応](https://qiita.com/site_u/items/c6a50aa6dea965b5a774)
::: note
### [スクリプトセレクター](https://qiita.com/site_u/items/c6a50aa6dea965b5a774#%E6%96%B0%E8%A6%8F%E8%A8%AD%E5%AE%9A%E7%94%A8-%E3%82%AA%E3%83%BC%E3%83%AB%E3%82%A4%E3%83%B3%E3%83%AF%E3%83%B3%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88-%E5%88%9D%E5%BF%83%E8%80%85%E5%AF%BE%E5%BF%9C)

![config.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/ebcf1227-8809-3fad-ba47-5e44a04ccac6.png)
### 動作確認
OK:
- AdGuard HOME

NG:
- luci-app-cpu-perf
- luci-app-temp-status

:::

# OpenMPTCProuter x86/64
::: note
### [OpenMPTCProuter](https://www.openmptcprouter.com/)
検証中
![OpenMPTCProuter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/08c1b445-cdb0-ab01-246c-f28b67712411.png)


[ダウンロード](https://www.openmptcprouter.com/download)
- [Hyper-V ext4 image (EFI)](https://download.openmptcprouter.com/release/v0.59.1/x86_64/targets/x86/64/openmptcprouter-v0.59.1-5.4-r0+16594-ce92de8c8c-x86-64-generic-ext4-combined-efi.vhdx)


ログイン
- [192.168.100.1](http://192.168.100.1/cgi-bin/luci/)

覚え書き：
初期設定自体は、OpenWrtとさほど変わらない
基本OpenWrtだが、WireGuard、VPN機能などが最初から組み込まれている
それらを使い込む人には、OpenMPTCProuterは向いていると思われ

高速回線の冗長化をしたく、x86/64のmini-pcを検討中
banana-pi3、raspberry-pi5のファームウェアは今のところ無い

:::
# 既知の問題
::: note warn
### 仮想スイッチネットワークパフォーマンス

以下、参考

[ネットワーク パフォーマンスの最適化](https://learn.microsoft.com/ja-jp/biztalk/technical-guides/checklist-optimizing-performance-on-hyper-v#optimize-network-performance)

[WindowsのHyper-Vで仮想マシンのネットワークが遅くなる問題を回避する](https://atmarkit.itmedia.co.jp/ait/articles/1201/20/news145.html)

:::

# あとがき
OpenWrt初心者の方は、まずHyper-Vで検証されてみるのも良いかと思う
インストールするクライアントPCの性能はたとえ低くても動く
なにより、全て無料

ConfigSoftwareをVMに対応

# 参考資料（感謝:relaxed:）
[Windows 11 Home に Hyper-V をインストールする](https://qiita.com/masatonasou/items/7c5ca7be6f6b519f3d4b)

[Hyper-VでOpenWRTのVMを作る](https://ukichi.hateblo.jp/entry/2023/07/07/110848)

[[Hyper-V + Ubuntu 22.04] IPアドレスを固定する方法](https://qiita.com/yukimasaki/items/124369ace7c3c9d80526)

[Windows11 Hyper-V OpenWrt 構成ガイド](https://sspai.com/post/78201)