OpenWrt/LEDEでタグVLANを設定してみました。OpenWrtで扱うハードウェア構成は一般的なサーバーと異なり混乱しましたが、なかなか便利に設計されていると思います。本設定はLinksys製のルーターで行いましたが、バッファロー製のルーターでも同様のコンフィグが使える筈です。
やりたいこと
OpenWrtが導入されたLinksys製オープンソース無線LANルーター、WRT3200ACMのEthernetポートをタグVLAN(トランク)ポートとして使いたい。
前提知識
OpenWrtのターミノロジ
- 物理ポート(port)
ルーター本体にある有線LANの接続端子のこと。 - プログラマブルスイッチ(switch)
ルーターに内蔵されているL2スイッチ。ルーター本体にある物理ポートやチップセットに接続されている。初期状態だとL2スイッチとして動作しない。 - 仮想スイッチ(switch_vlan)
プログラマブルスイッチ上に作成する仮想スイッチ。仮想スイッチを作成して、はじめてswitchがL2レベルで動作する。OpenWrtの定義ファイルには”vid”と”vlan id”が存在するが、両者は全く異なるので注意。 - CPUポート(eth*)
一般的なサーバーでいう物理NICポート。ほとんどの機種で1つか2つのみ存在し、内部でプログラマブルスイッチに接続されている。 - LANポート、WAN(Ethernet)ポートなど
特定の物理ポートの便宜上の名前で、機能上の違いはない。解説ページなどに”eth1がWAN側ポートに対応する”と書いてあることがあるが、これは遠からず間違い。正確にはプログラマブルスイッチ上に、eth1とWANポートが接続されている仮想スイッチが作成されているときのみ、このような動作になる。
ハードウェア構成
WRT3200ACMには5つの物理ポート(Ethernet1~4とInternet)と2つのCPUポート(eth0&eth1)があり、初期状態でEthernet(LAN)側の4つの物理ポートがeth0に、Ethernet(WAN)ポートがeth1に接続されている(ようにみえる)。チップセットには3つの無線LANインターフェースが接続されているが、今回は使用しない。
設定手順
仮想スイッチの初期構成
OpenWrtの初期状態におけるL2レベルの挙動を理解するために、実際に初期設定を削除し一からセットアップしてみました。
- まずは、プログラマブルスイッチのみが定義されていて、仮想スイッチが存在しない状態。
この状態だと、ルーター本体にアクセスするには無線LANかシリアルポートを利用するしかない。対応する設定ファイルの記述は、config switch option name 'switch0' option reset '1' option enable_vlan '1'
次にeth0と本体の4つのLANポートを接続する、仮想スイッチ1をプログラマブルスイッチswitch0に作成。
config switch_vlan 'eth0' option device 'switch0' option vlan '1' option ports '0 1 2 3 5'
同様に、eth1と本体のEthernet(WAN)ポートを接続する仮想スイッチ2を作成。
config switch_vlan 'eth1' option device 'switch0' option vlan '2' option ports '4 6'
タグポートを構成
感の良い方はすでにお気づきかもしれませんが、上記の状態で物理ポートにタグ付きパケットを流しても当該パケットはCPUポートまで届きません(eth1.XXXでVLANにアクセスすることはできない)。eth1をタグVLANポート(トラッキングポート)として使いたい場合、仮想スイッチを使用したいVLANの数だけ追加する必要があります。
例えば、VLAN200を追加したい場合、設定ファイルに以下のように記述します。
config switch_vlan 'eth1_200' option device 'switch0' option vlan '11' option vid '200' option ports '4t 6t'
紛らわしいですが、vidオプションとvlanオプションの意味は異なります。vlanオプションはOpenWrt上の仮想スイッチに割り当てる任意の番号で、vidはVLANIDそのものです。両方指定する必要あるので注意。
ポート番号のあとにつくtは指定したポートがタグポートであることを示し、vidのタグが付いたパケットのみを受け取り、パケットが出ていく場合際はvidのタグをつけることを意味します。図で表すと、こんな感じになります。
以上の設定を行うと、VLAN200にeth1.200からアクセス可能になります。設定ファイルもしくはGUI(LuCI)からインターフェースを作成します。
参考URL
https://wiki.openwrt.org/doc/uci/network/switch
https://wiki.openwrt.org/toh/linksys/wrt_ac_series
cコメントを残す