プレフィックス委譲については、OpenWRTの記事は国内では少なく、海外のスレなどでもちらほら散見するだけでした。そこで、今回はOpenWRTでのプレフィック委譲が親ルータから子・孫ルータに対しどのように動くのか検証してみました。また、経路情報はIPv4についてはスタティックではなくRIPv2で配布するようにしました。(2024/06/01追記: IPv6についてはRIPngで配布するようにしました。)こちらもOpenWRTでfrrのripd/ripngdを使う情報はほとんど見当たらなかったのですが、なんとか構成できたので基本的な部分だけですが掲載しています。
なお、インターネット接続環境は、フレッツ光クロス コラボ enひかりクロス V6プラス 固定IPです。
構成は以下の通りです。 子ルーター以下を拡大したものはこちらです。 ほぼ同じコンフィグの子ルータを二つ並べたところ、プレフィックス委譲は正常におこなわれ、子ルータR10にfd98:1:1:10::/60が委譲され、子ルータR20にはfd98:1:1:20::/60が委譲されました。また、子ルータから孫ルータへの/64の委譲もできたので、理論的には(16-1)^2=225のサブネットが構成できることになります。(ただし、実際の運用では出口ROでのIPv4マスカレードが問題になりやすいので注意してください。)
今回はhypver-vを使って子ルータ2台、孫ルータが子ルータに対し各4台接続し計11台(親1+子2+孫2x4)のルータで構成してみたところ、端末間(例えば、vm111-1とvm211-1間)での通信もできました。もちろん、外部への接続も確認できました。
まず、frroutingのインストールです。設定は異なりますが、インストールは親ルータ、子ルータ、孫ルータ共通です。
追記: 2024/06/01 ripngを追加
続いて、子ルータR10の設定は以下の通りです。(追記:2024/06/01 ripng追加)
また、子ルータの設定概要ですが、firewallの設定でマスカレードを無効にし、wan側からのPINGと管理用でsshおよびhttp/httpsを許可し、孫ルータ側にも管理用接続をフォワード許可しています。またRIPもWAN側から受け取るので許可しています。ssh接続については親ルータと同じく/etc/dropbearにauthorized_keysを置いておくとよいと思います。
続いて子ルータR10のfrrの設定です。
続いて孫ルータR11の設定は以下の通りです。
所でhyper-vでの構成についてですが、OpenWRTはeth0がLAN側で、eth1がWAN側になります。ですので、たとえば、R10の設定の場合、先にvsw11への接続を構成して次にvsw01への接続を構成する必要がありました。また、各ネットワークはVLANを切るなりしてセグメントを分けておく必要があります。実際に構成する場合でも、eth0がLAN側でeth1がWAN側なので注意してください。
今回は以上です。それでは。
なお、インターネット接続環境は、フレッツ光クロス コラボ enひかりクロス V6プラス 固定IPです。
構成は以下の通りです。 子ルーター以下を拡大したものはこちらです。 ほぼ同じコンフィグの子ルータを二つ並べたところ、プレフィックス委譲は正常におこなわれ、子ルータR10にfd98:1:1:10::/60が委譲され、子ルータR20にはfd98:1:1:20::/60が委譲されました。また、子ルータから孫ルータへの/64の委譲もできたので、理論的には(16-1)^2=225のサブネットが構成できることになります。(ただし、実際の運用では出口ROでのIPv4マスカレードが問題になりやすいので注意してください。)
今回はhypver-vを使って子ルータ2台、孫ルータが子ルータに対し各4台接続し計11台(親1+子2+孫2x4)のルータで構成してみたところ、端末間(例えば、vm111-1とvm211-1間)での通信もできました。もちろん、外部への接続も確認できました。
まず、frroutingのインストールです。設定は異なりますが、インストールは親ルータ、子ルータ、孫ルータ共通です。
追記: 2024/06/01 ripngを追加
opkg update opkg install frr frr-zebra frr-ripd frr-ripngd frr-ldpd frr-watchfrr frr-staticd frr-vtysh続いて、親ルータの設定です。基本的には、前回の設定とほぼ同じなのですが、frroutingを導入しホスト名を変更したので、変更部分だけ掲載します。
# /etc/config/system --snip-- config system option hostname 'R0' --snip--次にfrroutingの設定です。前述のインストールを行うと設定は初期状態になるので、以下のところだけ変更します。(2024/06/01 ripngd追加)
# /etc/frr/daemons --snip-- ripd=yes ripngd=yes --snip--frrの設定は以下の通りです。
# /etc/frr/frr.conf frr version 8.5.1 frr defaults traditional hostname R0 log syslog ! password XXXXXXXXXXXXXXXXXXXXX ! router rip default-information originate network 10.1.1.0/24 network br-lan network 0.0.0.0/24 redistribute static version 2 exit ! router ripng default-information originate network fd98:1:1::/56 network br-lan network ::/0 redistribute static exit ! access-list vty seq 5 permit 127.0.0.0/8 access-list vty seq 10 deny any ! line vty access-class vty exit !frrは再起動時に自動で起動する必要があるので、以下のコマンドを流しておいてください。(子ルータ、孫ルータも同じ。)
/etc/init.d/frr enable親ルータの設定は以上です。
続いて、子ルータR10の設定は以下の通りです。(追記:2024/06/01 ripng追加)
# /etc/config/system --snip-- config system option hostname 'R10' --snip-- # /etc/config/network config interface 'loopback' option device 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0' config globals 'globals' option ula_prefix 'fd98:1:1:10::/60' config device option name 'br-lan' option type 'bridge' list ports 'eth0' config interface 'lan' option device 'br-lan' option proto 'static' option ipaddr '10.1.10.1' option netmask '255.255.255.0' option ip6assign '60' option ip6hint '10' list ip6class 'wan6' config interface 'wan' option device 'eth1' option proto 'static' option ipaddr '10.1.1.10' option netmask '255.255.255.0' config interface 'wan6' option device 'eth1' option proto 'dhcpv6' option reqprefix '60' option reqaddress 'try' # /etc/config/dhcp --snip-- config dhcp 'lan' option interface 'lan' option start '100' option limit '150' option leasetime '12h' option dhcpv4 'server' option dhcpv6 'server' option ra 'server' list ra_flags 'managed-config' list ra_flags 'other-config' list dns 'fd98:1:1::64' list dns 'fd98:1:1::65' --snip-- # /etc/config/firewall --snip-- config zone option name wan list network 'wan' list network 'wan6' option input REJECT option output ACCEPT option forward REJECT option masq 0 option mtu_fix 1 --snip-- --snip-- config rule option name 'Allow-Ping-Forward' option src 'wan' option dest '*' option proto 'icmp' list icmp_type 'echo-request' option family 'ipv4' option target 'ACCEPT' --snip-- --snip-- config rule option name 'Allow-Admin' list proto 'tcp' option src 'wan' option dest_port '22 80 443' option target 'ACCEPT' config rule option name 'Allow-Admin-Forward' list proto 'tcp' option src 'wan' option dest '*' option dest_port '22 80 443' option target 'ACCEPT' config rule option name 'Allow-RIP' list proto 'udp' option src 'wan' option dest_port '520' option target 'ACCEPT' config rule option name 'Allow-RIPNG' list proto 'udp' option src 'wan' option dest_port '521' option target 'ACCEPT' --snip--注意点は、config interface 'wan6'の option reqprefix 'プレフィックス長' です。この指定がないと、期待したプレフィックス長が上位ルータから得られませんでした。
また、子ルータの設定概要ですが、firewallの設定でマスカレードを無効にし、wan側からのPINGと管理用でsshおよびhttp/httpsを許可し、孫ルータ側にも管理用接続をフォワード許可しています。またRIPもWAN側から受け取るので許可しています。ssh接続については親ルータと同じく/etc/dropbearにauthorized_keysを置いておくとよいと思います。
続いて子ルータR10のfrrの設定です。
# /etc/frr/daemons --snip-- ripd=yes ripngd=yes --snip-- # /etc/frr/frr.conf frr version 8.5.1 frr defaults traditional hostname R11 log syslog ! password XXXXXXXXXXXXXXXXXXXXX ! interface eth1 exit ! router rip network 10.1.10.0/24 network eth1 network br-lan version 2 exit ! router ripng redistribute connected network eth1 network br-lan exit ! access-list vty seq 5 permit 127.0.0.0/8 access-list vty seq 10 deny any ! line vty access-class vty exit !なお、子ルータR20は以下の部分だけ、変更するだけでOKでした。該当部分のみ以下の通りになります。
# /etc/config/system --snip-- config system option hostname 'R20' --snip-- # /etc/config/network(該当部分のみ) config globals 'globals' option ula_prefix 'fd98:1:1:20::/60' config interface 'lan' option ipaddr '10.1.20.1' option ip6hint '20' config interface 'wan' option ipaddr '10.1.1.20' # /etc/frr/frr.conf(該当部分のみ) hostname R20 network 10.1.20.0/24子ルータの設定は以上です。
続いて孫ルータR11の設定は以下の通りです。
# /etc/config/system --snip-- option hostname 'R11' --snip-- # /etc/config/network config interface 'loopback' option device 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0' config globals 'globals' option ula_prefix 'fd98:1:1:11::/64' config device option name 'br-lan' option type 'bridge' list ports 'eth0' config interface 'lan' option device 'br-lan' option proto 'static' option ipaddr '10.1.11.1' option netmask '255.255.255.0' option ip6assign '64' list ip6class 'wan6' config interface 'wan' option device 'eth1' option proto 'static' option ipaddr '10.1.10.11' option netmask '255.255.255.0' config interface 'wan6' option device 'eth1' option proto 'dhcpv6' option reqprefix '64' option reqaddress 'try' # /etc/network/dhcp (注:子ルータと同じ) --snip-- config dhcp 'lan' option interface 'lan' option start '100' option limit '150' option leasetime '12h' option dhcpv4 'server' option dhcpv6 'server' option ra 'server' list dns 'fd98:1:1::64' list dns 'fd98:1:1::65' list ra_flags 'other-config' --snip-- # /etc/config/firewall (注:子ルータと同じ) --snip-- config zone option name wan list network 'wan' list network 'wan6' option input REJECT option output ACCEPT option forward REJECT option masq 0 option mtu_fix 1 --snip-- --snip-- config rule option name 'Allow-Ping-Forward' option src 'wan' option dest '*' option proto 'icmp' list icmp_type 'echo-request' option family 'ipv4' option target 'ACCEPT' --snip-- --snip-- config rule option name 'Allow-Admin' list proto 'tcp' option src 'wan' option dest_port '22 80 443' option target 'ACCEPT' config rule option name 'Allow-Admin-Forward' list proto 'tcp' option src 'wan' option dest '*' option dest_port '22 80 443' option target 'ACCEPT' config rule option name 'Allow-RIP' list proto 'udp' option src 'wan' option dest_port '520' option target 'ACCEPT' config rule option name 'Allow-RIPNG' list proto 'udp' option src 'wan' option dest_port '521' option target 'ACCEPT' --snip--孫ルータも子ルータと/etc/config/firewallは同じにしていますので、例えばR0配下の管理用端末から、R11配下の端末にもsshおよびhttp/httpsで接続できるようにしています。 つづいて、孫ルータR11のfrrの設定です。
# /etc/frr/daemons --snip-- ripd=yes ripngd=yes --snip-- # /etc/frr/frr.conf frr version 8.5.1 frr defaults traditional hostname R11 log syslog ! password XXXXXXXXXXXXXXXXXXXXX ! interface eth1 exit ! router rip network 10.1.11.0/24 network eth1 network br-lan version 2 exit ! router ripng redistribute connected network eth1 network br-lan ! access-list vty seq 5 permit 127.0.0.0/8 access-list vty seq 10 deny any ! line vty access-class vty exit !孫ルータR11の設定は以上です。次に例としてR21のR11との差分は以下の通りです。
# /etc/config/system --snip-- option hostname 'R21' --snip-- # /etc/config/network(該当部分のみ) config globals 'globals' option ula_prefix 'fd98:1:1:21::/64' config interface 'lan' option ipaddr '10.1.21.1' config interface 'wan' option ipaddr '10.1.20.21' # /etc/frr/frr.conf(該当部分のみ) hostname R21 network 10.1.21.0/24構成は以上です。
所でhyper-vでの構成についてですが、OpenWRTはeth0がLAN側で、eth1がWAN側になります。ですので、たとえば、R10の設定の場合、先にvsw11への接続を構成して次にvsw01への接続を構成する必要がありました。また、各ネットワークはVLANを切るなりしてセグメントを分けておく必要があります。実際に構成する場合でも、eth0がLAN側でeth1がWAN側なので注意してください。
今回は以上です。それでは。
コメント
コメントを投稿