ルータ機器の入れ替え時など、一時的に同一ネットワーク内で複数のルータを運用することがあります。今回は OpenWRT の DHCP サーバ オプション を使ってIP配布時にゲートウェイを割り振ったり、複数のDNSを設定してみます。
複数ルータで簡易的な冗長構成
以前セットアップしたFriendlyElec NanoPi R2Sを自宅の導入し(下図中のRouter2)、既に稼働しているメインルータGL-AR750S(同Router1)と共に、簡易的なルータの冗長化構成を実現しています。
2台のルータどちらが死んでもネットワークが途絶えないよう、DHCPサーバは配布するIP範囲を違えて設定し、NASやTV Boxといった固定機器への静的リースは、同じエントリをどちらのDHCPサーバも保持することにしています。
DHCPがIP配布時にゲートウェイを指定
この静的リースは基本的にメインルータをデフォルトゲートウェイにしていますが、比較的トラフィックの高いTV Boxはハードウェアスペックの高いRouter 2へ振り向けたいと思い、DHCPオプション使ってを個別に付与することを思いつきました。
個別ではなくDHCPプール全体にDHCPオプションを適用するのであれば、OpenWRT公式ガイドに解説されているように、次の要領で簡単に付与できるようです。
1 2 3 |
# uci add_list dhcp.lan.dhcp_option="3,192.168.1.2" # uci commit dhcp # /etc/init.d/dnsmasq restart |
これを静的リース( config host 項)へ適用させるには、DHCPオプションを記した tag を定義し、それを host へ紐付ける必要があるそうです。
1 2 3 4 5 6 7 8 9 10 |
config host option name 'UBOXPROSP' option dns '1' option mac '##:##:##:##:##:##' option ip '192.168.51.202' option leasetime 'infinite' option tag 'gateway2nd' config tag 'gateway2nd' list dhcp_option '3,192.168.51.2' |
関連するサービスを再起動して反映させます。
1 2 |
# /etc/init.d/dnsmasq restart # /etc/init.d/odhcpd restart |
尚、この項目はLuCIでは表示されないので、注意が必要です。
2つのルータをDNSに指定
次にDHCPオプションを使って、2つのルータどちらもDNSサーバに登録してみます。
これはDHCPプール全体へ適用させたいので、以下のようにコマンドを発行すれば良いはずです。
1 2 3 |
# uci add_list dhcp.lan.dhcp_option="6,192.168.51.1,192.168.51.2" # uci commit dhcp # /etc/init.d/dnsmasq restart |
これにより設定ファイル /etc/config/dhcp は以下のように更新されていました。
1 2 3 4 5 6 7 |
config dhcp 'lan' option interface 'lan' option force '1' option start '150' option limit '50' option leasetime '4h' list dhcp_option '6,192.168.51.1,192.168.51.2' |
LuCI上では、 Interface → LAN ページの DHCP Server → Advanced Settings タブにある DHCP-Options 項に相当します。
メインルータGL-AR750S(OpenWRT 19.07)はこれで機能するようになったことから、これをサブルータのR2Sへも適用させたところ、dnsmasqサービスがコケてしまいました。
1 2 |
Mon Jul 11 10:52:32 2022 daemon.crit dnsmasq[15801]: bad IPv4 address at line 29 of /var/etc/dnsmasq.conf.cfg01411c Mon Jul 11 10:52:32 2022 daemon.crit dnsmasq[15801]: FAILED to start up |
設定ファイル /etc/config/dhcp を元に、dnsmasqサービスが実際に使う設定ファイルを確認しますが、当該オプションは正しく設定されているように見えます。
1 |
dhcp-option=lan,6,192,168.51.2,192.168.51.1 |
実際の設定例を調べているときに目に留まったのがこちらのスレッドの回答の内容でした。
1 2 |
Another way to achieve similar results is to use dnsmasq and add an option to /etc/dnsmasq.conf: dhcp-option=6, 192.168.0.10, 192.168.0.25 |
オプション内容がカンマ区切りではなく、カンマ+スペース区切りになっていました。これを設定ファイル/etc/config/dhcpで試してみます。
1 2 |
config dhcp 'lan' list dhcp_option '6, 192.168.51.1, 192.168.51.2' |
dnsmasqを再起動させると、今度はエラー無くサービスは正常に始まりました。
こうして簡易的なルータ冗長化が出来上がりました。下図左がRouter1、同右がRouter2のWiFiへ接続してみた例です。