OpenWrtでWDSを構築してみる

# ネットワーク構成

- 以下の構成を構築することを最終目的とする

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/d94f16d2-4be5-07a8-8faf-c65505ddf0db.png)

### 登場人物

- AMN1500
    - 光回線終端装置(ONU)
    - 今回はあまり関係ない
    - 日立製らしい
- eoRT-100(S1)
    - eo光多機能ルーター
    - ルーター兼アクセスポイント(その他諸々)として動作している
    - IEEE 802.11ax(Wi-Fi 6)には対応していない: https://support.eonet.jp/usqa/net/4205583_14139.html
    - NEC製らしい
- OpenWrt
    - ELECOM WRC-2533GST2を改造してOpenWrtをインストールしたもの
    - 詳しくは: [OpenWrtをELECOM WRC-2533GST2に導入する](https://qiita.com/h_tyokinuhata/items/be6d696b7f4defe990c9)
    - こちらをメインで設定し、WDSを実現する
- Intel NUC
    - ベアボーンPC(サーバ)
    - ESXi(vSphere Hypervisor)構築済み
- MacBook Pro
    - macOSのバージョンはVentura
    - 今回、設定は基本的にこのマシン上で行う

### なぜこの構成なのか

- Intel NUC自体には無線LANモジュールが搭載されているため、Wi-Fiで通信することが可能
- しかし、ESXiにWi-Fiの設定項目が無く、eoRT-100(S1)に有線で接続しようにも部屋が離れており、地理的な問題で断念
- なので一旦OpenWrtで中継し、そこに有線で接続するという構成を取ることにした

### WDSとは

- Wireless Distribution Systemの略称
- アクセスポイント間通信やリピータ機能と呼ばれたりもする
- 本来は片側のアクセスポイントに中継機のような機能を持たせることでアクセスポイントのカバー範囲を延伸する仕組み
- 今回はカバー範囲自体は問題無かったが、有線で接続せざるを得ないマシン(Intel NUC)が存在したことにより、この構成を選定した
- 最近はWDSの代わりにIEEE 802.11sというメッシュネットワークの規格を採用することが多いらしく、このほうがパフォーマンスも高いらしい(要調査)
- ちなみにWDSはIEEEやWi-Fi Allianceのような機関によって特に規格化はされていない模様

# 設定

- 設定を行うにあたり、公式ドキュメントの [Wi-Fi extender / repeater / bridge configuration](https://openwrt.org/docs/guide-user/network/wifi/relay_configuration) を大きく参考にさせていただいた

### 事前準備

- MacBook ProとOpenWrtのLAN側のポートを有線で接続している
- Webブラウザで `http://192.168.1.1` にアクセスすると、LuCIが開ける
- LuCIにはパスワードが設定されている

### OpenWrtのLAN側のインタフェースの設定

- Network > Interfaces を開く
- Interfacesの中からLANのEditを選択する

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/5046c3cb-ef0b-0e0c-6760-ae1301a7dfde.png)

- General Settingsのタブを開く
- ProtocolはStatic addressを選択する
- IPv4 addressに `192.168.2.1` を入力する
- IPv4 netmaskは `255.255.255.0` を選択する

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/d02578ee-f2fe-18b0-f2f5-078671f27edf.png)

- DHCP Serverのタブを開く
- General Setupのタブを開く
- DHCP Serverは不要なので、Ingore interfaceにチェックを入れる

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/90581360-bfb5-6428-3b75-dea9a5e17737.png)

- IPv6 Settingsのタブを開く
- RA-ServiceとDHCPv6-Serviceをdisabledに変更する
- Saveする

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/9c8f5756-ba19-f7bf-b635-fc7b49ca68b9.png)

- Save & Applyを行うと、「LuCIのIPアドレスが `192.168.1.1` から `192.168.2.1` に変わるため、現在のIPアドレスではLuCIに接続できない」旨の警告が出る
- 問題ないため、Apply and keep settingsを選択する

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/a90d8580-8b1f-f406-1790-8fb5eca6085c.png)


### MacBook Proのネットワークの設定

- 現状、OpenWrtのLAN側のインタフェースのIPアドレスを `192.168.2.1` に変更し、DHCPもオフにしたことで、MacBook ProからLuCIにアクセスできない状態となっている
- そこでMacBook Proに適切な静的IPアドレスを設定し、再度LuCIに接続できるようにする
- ちなみにmacOSの他のバージョンや他のOSであっても同様の設定は可能
- システム設定 > ネットワークを開き、「AX88179A」を選択する
    - この部分は環境によって異なるが、どの環境であってもPCとOpenWrtを接続しているネットワークを選択すれば良い

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/9ba9541a-f443-94cb-ba50-7bf41af4c92a.png)

- 「詳細...」を選択する

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/dba3822f-f208-7444-0d73-d44ce35e804e.png)

- TCP/IPを選択する

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/f900f848-2072-5a8d-1ed2-f19c8728ace8.png)

- IPv4の構成のセレクトボックスで「手動」を選択する

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/a246aadd-8685-df37-21c5-462b1c8a5369.png)

- IPアドレスに `192.168.2.10` を設定する
    - ちなみに第4オクテットは `10` でなくても構わない
    - OpenWrtが使用している `192.168.2.1` やネットワークアドレス、ブロードキャストアドレスと重複しなければ問題ない
- サブネットマスクに `255.255.255.0` を設定する
- ルーターに `192.168.2.1` を設定する

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/dddceae8-b733-dc42-ebbf-2259d8bbc250.png)

- この状態で `192.168.2.1` にアクセスするとLuCIが開くため、ログインする

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/144ed080-9021-d243-409d-69e92d322c5a.png)

### OpenWrtからeoRT-100(S1)への接続

- Network > Wirelessを開く
- 今回は5GHz帯(IEEE 802.11ac)でWDSを行いたかったため、MediaTek MT7615E 802.11acnのScanを選択
    - ちなみにMediaTek MT7615Eは台湾の半導体メーカーであるMediaTekが開発している無線LANモジュールの名称
    - 公式サイト: https://www.mediatek.jp/products/broadband-wifi/mt7615

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/2d0689fb-9e1a-7960-dab3-deb6d3b6c663.png)

- 接続したいSSIDのJoin Networkを選択する
    - 今回の場合は `eoRT-XXXXXXXX`

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/05fecb56-08fb-df60-361f-86b6666ac728.png)

- WPA passphraseを入力し、Create / Assign firewall-zoneでlanを選択する

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/f451fefe-6d0c-1ecb-d411-cda289fc995e.png)

- ちなみにWPA passphraseは接続先のアクセスポイント(今回の場合はeoRT-100(S1))の管理画面から大抵確認することができる
- eo光の場合、 `192.168.0.1` で稼働している管理画面にWebブラウザからログインすることで確認することができる
- まず、無線LAN詳細設定(5GHz)を選択

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/49697b41-4436-4182-1731-8b7904db6255.png)

- 暗号化 > WPA暗号化キー(PSK)の項目から確認できる

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/ef3bc4e3-3616-234b-d717-1ef3d270f2ec.png)

- 本筋からは少し逸れるが、Maximum transmit powerを10 dBm(10 mW)に下げて日本の電波法に抵触しないようにしておく
    - ちなみにデフォルトは20 dBm(20 mW)
- その後、SaveとSave & Applyを行う

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/07804b07-d7fc-97f1-b601-6fb0db498f84.png)

- Network > Interfacesを開く
- InterfacesからWWANを選択する
- General Settingsのタブを開く
- ProtocolはStatic addressを選択する
- IPv4 addressに `192.168.0.2` を入力する
- IPv4 netmaskは `255.255.255.0` を選択する
- IPv4 gatewayを `192.168.0.1` を入力する

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/512078f9-7bd2-8241-7d52-a4c6555d3221.png)

- Advanced Settingsのタブを開く
- Use custom DNS Serversに `192.168.0.1` を入力し、eoRT-100(S1)のDNSキャッシュサーバを利用するようにする
- その後、SaveとSave & Applyを行う

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/d9845ac6-c53b-18a6-b26b-5994a27b2f8e.png)

### OpenWrtとインターネットの到達性の確認

- Network > Diagnosticsを開く
- `openwrt.org` 宛てにIPv4 Pingを実行する
- 以下のように正常なレスポンスが返ってきているのであれば問題ない

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/17412342-b77a-9e2f-d58e-3a9ab9e87a87.png)

### luci-proto-relayのインストール

- WDSの設定に先立ち、必要なパッケージをインストールする
- System > Softwareを開く
- Filterに `luci-proto-relay` と入力し、ActionsからUpdate lists...を実行する
- Install...を実行する

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/011bc64b-4294-4d14-a3d9-0b5784247298.png)

- 途中で以下のようなモーダルが出てきたらDismissを押して閉じる

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/c026652d-2910-14fa-f202-3c46180cc60c.png)

- モーダルが出てくるので、Overwrite files from other package(s)にチェックを入れてInstallを実行する

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/1789026f-5a0b-b526-18a4-ee630795eb7b.png)

- Dismissを押して閉じる

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/6673b7cf-07e7-e472-8da6-45faf60cc174.png)

- Installedと表示されているのでインストールされているということが分かる

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/12bd36ff-1ce3-6faf-ed7b-792940ea2706.png)

- System > Rebootを開く
- RebootのPerform rebootを実行し、再起動する

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/5a877c6d-9c59-b20e-30c9-40ce5129ec71.png)

### WDSの設定

- 現状の構成では、二重ルーターのような状態になっており、OpenWrtから見てWAN側のネットワークである `192.168.0.0` と LAN側のネットワークである `192.168.2.0` の2種類が存在している
- このうち、LAN側のインタフェースに接続したホストを `192.168.2.0` のネットワークではなく、 `192.168.0.0` のネットワークに所属させるような設定を行うことでOpenWrtをWDSとして機能させる
- つまり、 `192.168.2.0` のネットワークはOpenWrtで使用している `192.168.2.1` 以外では使用しない
- Network > Interfacesを開く
- Add new interface...を押す

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/df50c8b3-bb59-45e2-baa0-cac6b4b83863.png)

- Nameは適当な命名で問題ない
- ProtocolはRelay bridgeを選択する
- Create interfaceを実行する

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/070b09dc-8e42-f4b4-c4d6-e2bf103edeca.png)

- Local IPv4 addressに `192.168.0.2` を入力する
- Relay between networksで `lan` と `wwan` を選択する
- その後、SaveとSave & Applyを行う

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/728336a3-9944-02ec-b650-c5fbec69ea8c.png)

- System > Rebootを開く
- RebootのPerform rebootを実行し、再起動する

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/05d0c7fa-1fc6-ef4c-100b-f9743416ab29.png)

### 不要な設定の削除

- 絶対にしないといけないわけではないが、不要な設定は設定を分かり辛くするため削除しておく
- Network > Interfacesを開く
- InterfacesにあるWANとWAN6をDeleteしてSave & Applyを実行する

![スクリーンショット 2023-02-15 9.49.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/46fece0c-b074-36d8-3710-add9447cbbf6.png)

- Network > Firewallを開く
- General Settingsのタブを開く
- Zonesから `wan => REJECT` の設定をDeleteしてSave & Applyを実行する

![スクリーンショット 2023-02-15 9.53.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78249/14f03181-aef8-3eb5-756e-df05df9150d6.png)

### 動作検証

- MacBook Proには `192.168.0.10` をDHCPで割り当てている
- ここから各ホストに `ping` を行い、到達性を確認する
- eoRT-100(S1)

```bash
$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1): 56 data bytes
64 bytes from 192.168.0.1: icmp_seq=0 ttl=64 time=9.858 ms
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=2.296 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=9.649 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=8.030 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=2.132 ms
^C
--- 192.168.0.1 ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 2.132/6.393/9.858/3.471 ms
```

- OpenWrt

```bash
$ ping 192.168.0.2
PING 192.168.0.2 (192.168.0.2): 56 data bytes
64 bytes from 192.168.0.2: icmp_seq=0 ttl=64 time=11.148 ms
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=9.151 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=7.514 ms
64 bytes from 192.168.0.2: icmp_seq=3 ttl=64 time=4.031 ms
64 bytes from 192.168.0.2: icmp_seq=4 ttl=64 time=12.500 ms
^C
--- 192.168.0.2 ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 4.031/8.869/12.500/2.956 ms
```

- Intel NUC
- あらかじめ静的IPとして `192.168.0.3` を設定してある


```bash
$ ping 192.168.0.3
PING 192.168.0.3 (192.168.0.3): 56 data bytes
64 bytes from 192.168.0.3: icmp_seq=0 ttl=63 time=129.612 ms
64 bytes from 192.168.0.3: icmp_seq=1 ttl=63 time=11.210 ms
64 bytes from 192.168.0.3: icmp_seq=2 ttl=63 time=4.747 ms
64 bytes from 192.168.0.3: icmp_seq=3 ttl=63 time=11.591 ms
64 bytes from 192.168.0.3: icmp_seq=4 ttl=63 time=10.224 ms
^C
--- 192.168.0.3 ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 4.747/33.477/129.612/48.131 ms
```

- 各ホストが同一ネットワーク内で接続できていることが確認できた