NURO光にてOpenWrt搭載ルーターを使う設定
April 01, 2024
経緯
自宅インターネット回線をNURO光にした
最近はどこのISPもそうだがONUにいらないルーター機能がついてくる
冗長な構成は回線速度を遅くしがちだが 折角自前のルーターを持っているので使いたい
速度はある程度犠牲になるかもしれないが 現状の構成を記しておく
お願い
これを読んでいてまだNURO光に加入していないが これから新規に回線を契約される奇特な方がいらっしゃいましたら 以下のコードをお使いください
STX9405
私に1万円 利用していただいた方に1万円キャッシュバックされます
よろしくおねがいいたします
構成
- ONU:
ZXHN F2886S
- ルーター:
GL-AX1800
最近のNURO光はMAP-Eを導入しはじめているらしいが 私の環境ではまだIPv4/IPv6のdual stack構成だった
ONUに関しては自分で選択できないので この方法がそのまま全てのユーザーに使えるかは不明
すくなくとも管理画面の設定は読みかえる必要がありそう
前準備
- ONUのみでインターネットには接続できるため一度IPアドレスを払いだしてもらう
- ONUの管理画面にブラウザでログインしてアドレスを確認する
F2886S
の場合 インターネット
> ステータス
> WAN
から
IPアドレス
LLA
GUA
を確認しておく
設定
IPv4
2重NATがいやなので F2886S
のDMZ機能を使う
ONUの設定
インターネット
> セキュリティ
> DMZ
にて DMZホストのIPアドレス
にルーターのMACアドレスを入力する
オプション
LAN
>LAN
>IPv4
からDHCPを切るLAN
>無線LAN
からWiFiを切るインターネット
>セキュリティ
>ファイアウォール
からファイアウォールを切る
ルーターの設定
WAN側の設定として静的なアドレスを設定する
今回はONUのIPアドレスが192.168.1.1/24
のため192.168.1.100/24
として設定した
IPv6
IPv6の設定についてはF2886S
にDMZ機能が提供されていない(そもそもDMZ機能についてよく理解していないため詳細は不明)
そのため代案を探していたのだが 2つのポイントがある
- 標準的なIPv6環境の構成ではNATはない
- すくなくとも
F2886S
にはない
- すくなくとも
- 2重のLAN(ルーターだけが参加するLANと家庭内のLAN)ができるのは避けられなさそう
2重にルーターがあること自体は避けられないと思われるが 次善の策として NDP proxy というものを用いることにした
これを用いることで デフォルトgwに転送するだけの仕事(ルーティング)は残るが DHCP RA パケットフィルタリング などは F2886S
にさせずにすむ
NDP proxy について
ざっくりいうとそもそもIPv6という技術はIPスタックのネットワーク層部分のみの置きかえとみなせるっぽい
そこでIPv4では微妙な設計だったMAC/IPアドレス変換がネットワーク層の仕事になったようで ICMPがARPの代わりになるようだ
NDP proxy というのはICMPv6の近隣探索メッセージをリレーしてくれる機能である 参考
これによりネットワーク層におけるトポロジを単純化することが可能になる(i.e. プレフィックスを共有できる)はず
OpenWrtのスイッチの構成だと以下のような図式になる
プロトコルに従ってISPからグローバルプレフィックスを自動で取得できないのがきもいが妥協している
ONUの設定
LAN
> LAN
> IPv6
に移動する
-
LANアドレス管理
にてF2886S
のLLAを設定するかなりわけがわからないのだが
F2886S
では自分のLLAを設定してあげないとローカルで疎通できないしょうがないので確認しておいた
LLA
の値に1を足して設定したおそらくここではLANブリッジの設定をおこなっていて 確認しておいた
LLA
の値はWAN側のものなのだろうが説明があまりないのでわからない -
静的プレフィックス
にて global prefix を固定するNURO光のプレフィックス長は56らしいので 確認しておいた
GUA
の前半56bitを切りだして設定するそのまま56bitで使いたいものだが サブネットをきらないと使えなかった
断腸の思いで1bit追加して
<56bit prefix>80::/57
に設定80に意味はあまりないがWANのアドレスと衝突しないように一応している WANに割り当てられた
GUA
の値に応じて 00 か 80 を使用する例えば
GUA
がdead:beaf:cafe:babe:xxxx:xxxx:xxxx:xxxx
ならdead:beaf:cafe:ba00::/57
に設定 -
DHCPv6
からDHCPを切る複雑になるのでOFF
-
RAサービス
からRAを切る同様にOFF
ルーターの設定
GL-AX1800
固有の設定
GL-AX1800
はOpenWrtの機能をwrapしているのでいくつかの手順で余分な副作用を消す
-
sshでログインして
/etc/init.d/gl_ipv6
を消すこのスクリプトがネットワークの設定やカーネルパラメータを変更するのでOpenWrtで機能をいじったときによくわからないことになる
-
sshでログインして以下を実行する これによりカーネルのIPv6スタックを有効にする
kernel_ipv6_config="/etc/sysctl.d/99-disable-ipv6.conf" echo "net.ipv6.conf.all.disable_ipv6=0" > $kernel_ipv6_config echo "net.ipv6.conf.lo.disable_ipv6=0" >> $kernel_ipv6_config echo "net.ipv6.conf.default.disable_ipv6=0" >> $kernel_ipv6_config echo "net.ipv6.conf.default.forwarding=2" >> $kernel_ipv6_config echo "net.ipv6.conf.all.forwarding=2" >> $kernel_ipv6_config for i in `ls /proc/sys/net/ipv6/conf/` do echo "net.ipv6.conf.$i.accept_ra=2" >> $kernel_ipv6_config done
一般の設定
-
/etc/config/network
を以下のように編集するconfig globals 'globals' option ula_prefix '<ULA prefix>::/48' config interface 'lan' option device 'br-lan' option proto 'static' option ipaddr '192.168.8.1' option netmask '255.255.255.0' option ip6assign '64' option ip6ifaceid '::1' option ip6hint '1' config interface 'wan' option device 'eth0' option proto 'static' option ipaddr '192.168.1.100' option netmask '255.255.255.0' option gateway '192.168.1.1' list dns '8.8.8.8' list dns '4.4.4.4' config interface 'wan6' option device '@wan' option proto 'static' option ip6addr '<56bit prefix>80:<interface>/57' option ip6prefix '<56bit prefix>c0::/60' option ip6gw '<LLA of ONU>' list dns '2001:4860:4860::8888' list dns '2001:4860:4860::8844'
設定のポイントは以下である
wan6
においてip6addr
のインターフェイス部は適切に設定する(ip addr
で確認できるLLAのインターフェイス部をコピーするのが楽)ip6prefix
を設定することにより<56bit prefix>c0::/60
が下位のノードに割りあてられる(ip6addr
のプレフィックス末尾を00にした場合は40とかにするとよいかも?)ip6gw
はローカルアドレスでないといけない(LAN側に設定したLLAを記入する)- DNSはIPv4/IPv6ともにGoogle Public DNSを用いる
具体的なオプション等はここを参照のこと
-
/etc/config/dhcp
を以下のように編集するconfig dhcp 'lan' option interface 'lan' option start '100' option limit '150' option leasetime '12h' option dhcpv4 'server' option ra 'server' option ra_flags 'managed-config other-config' option dhcpv6 'server' list dns '2001:4860:4860::8888' list dns '2001:4860:4860::8844' option ndp 'relay' config dhcp 'wan' option interface 'wan' option ignore '1' option leasetime '12h' option limit '150' option start '100' list ra_flags 'none' option ndp 'relay'
設定のポイントは以下である
- 先述したようにNDP proxyをWANとLANに設定する
- LAN側でRAとDHCPv6 serverを用いる
-
reboot
等で再起動する
上記の設定を行うと以下のようなアドレスが設定される
Network Interface | IP Address | |
---|---|---|
ONU | WAN | dead:beaf:cafe:babe:xxxx:xxxx:xxxx:xxxx/56 |
LAN | dead:beaf:cafe:ba00:xxxx:xxxx:xxxx:xxxx/57 | |
ROUTER | WAN | dead:beaf:cafe:ba00:<interface id>/57 |
LAN | dead:beaf:cafe:ba41::1/64 | |
<ULA prefix>:1::1/64 | ||
USERS | DEVICES | dead:beaf:cafe:ba41:<interface id>/64 |
<ULA prefix>:1:<interface id>/64 | ||
dead:beaf:cafe:ba41:<leased id>/64 | ||
<ULA prefix>:1:<leased id>/64 |
ただしここでONUのWANに割りあてられている GUA
が dead:beaf:cafe:babe:xxxx:xxxx:xxxx:xxxx
であるとしている
気になる点
ひとまずPCのIPアドレスがグローバルプレフィックスを持つようにはできた
しかし いくつか気になる点があるのでメモしておく
- DHCPv6をDNSサーバー自動設定のために使っているが DNSサーバー広告のためだけに使えないか
- ネットワークインターフェイスの設定でDNSサーバーを設定していて DHCPv6でも設定しているがどちらが効いているのか確認できていない
- WireGuardを用いたVPNが気になるのでいれたい
- 2箇所にグローバルプレフィックスを入力しているのがDRYではないためいや