OpenWrtを有線ブリッジ化
さてBHR-4GRVにインストールしたOpenWrtですがデフォルトではWAN側とLAN側には別のsubnetが割り当てられ、WAN-LAN間はNATが動作します。WAN側は上位ルーターからDHCPでIPやgateway,DNS等の情報を取得、LAN側は192.168.1.1固定でLAN側に対してDHCPやNAT等のサービスを提供します。
自宅にはメインルーターは別にあり、その下にBHR-4GRVをぶら下げて単なるイーサースイッチ兼サーバー(sambaとか、いずれはOpenVpnとか)として使いたいのでLAN側のブリッジ機能だけが欲しい。ただBHR-4GRVはWAN 1 Port,LAN 4 Portの合計5 PortのGbEの口があるので5つ全部同一LANに繋がるスイッチにすることにしました。
[親ルーター:192.168.11.1]---[BHR4-GRV:192.168.11.254]---他の有線接続マシン
こんな感じ。
が、同じマシンで全く同じことをやっている例が見つからなかったので、下記のページを参考に試行錯誤。
https://wiki.openwrt.org/doc/recipes/dumbap
https://wiki.openwrt.org/doc/recipes/bridgedap
https://wiki.openwrt.org/doc/uci/network
https://wiki.openwrt.org/doc/uci/network/switch
http://ttsubo.hatenablog.com/entry/2014/04/06/174230
最初はWebUIだけでやろうとしてLAN側のBrigde定義にWAN側のeth0.2を追加した上でWAN側を停止、LAN側に固定IPを振ったのですがpingにも応答しない状態に。何度かFailsafeモードからの復旧させた上で、CLIからconfigをいじることに。
Failsafeモードについては
https://wiki.openwrt.org/doc/howto/generic.failsafe
を参照。
基本的にはここに書いてある手順でfailsafeモードに入れたあと、telnet 192.168.1.1でログインしてfirstbootコマンドを実行するとOpenWrtインストール直後の初期状態に戻ります。電源入れた直後、あるタイミングで背面のボタンを押すのですがBHR-4GRVにはfailsafeモードに入れるタイミングがわかる様なLEDのブリンク表示がなく勘で何度も試行することに。とりあえず基板からシリアル引き出すとかしなくても復旧は可能です。
復旧後、ブリッジ化のためにやったのは以下の手順。
- /etc/config/networkでWAN,LAN定義を変更
BHR-4GRVにはWANポート1,LANポート4ありますがHW的にはこれらは同じスイッチ上のポートで同等の様です。デフォルトではWANにアサインされているのが1,LANが2〜5の様なので、デフォルトでLAN側にアサインされたvlan '1'のポート設定にポート番号1を追加して5ポートのLANスイッチとして定義しなおします。
dhcp 'lan'の設定にoption ignore '1'を追加してLAN側DHCPをdisableに。念のためにリース範囲等の設定をコメントアウト
- firewallは要らないのでdisable
$ /etc/init.d/firewall disable $ /etc/init.d/firewall stop
- ネットワーク再起動
$ /etc/init.d/network reload
だいたいこんな感じです。
/etc/config/network抜粋
config interface 'lan' option ifname 'eth0.1' option force_link '1' option type 'bridge' option proto 'static' option ipaddr '192.168.11.254' option netmask '255.255.255.0' option gateway '192.168.11.1' option dns '192.168.11.1' # option ip6assign '60' # config interface 'wan' # option ifname 'eth0.2' # option proto 'dhcp' # config interface 'wan6' # option ifname 'eth0.2' # option proto 'dhcpv6' config switch option name 'switch0' option reset '1' option enable_vlan '1' config switch_vlan option device 'switch0' option vlan '1' option ports '0t 1 2 3 4 5' # config switch_vlan # option device 'switch0' # option vlan '2' # option ports '0t 1'
/etc/config/dhcp抜粋
config dhcp 'lan' option interface 'lan' option ignore '1' # option start '100' # option limit '150'
これで5ポートのギガビットスイッチ兼、コンパクトLinuxサーバーの出来上がり。WAN(と書かれた)ポートに繋がった親ルーター側からもSSHアクセス等が自由にできます。
(Firewall disableしましたがenableのままでも使えるはず)
次はsambaかIP over USBあたりを試す予定。