FreeBSD で 802.1q Tagging VLAN 覚書き

FreeBSD で TagVlan を使いたくなったので,頑張って覚えてみた.割とさっくり出来た.

Vlan インタフェースを作成する

dot1q TagVlan を使う為に,FreeBSD で vlan インタフェースを作成する.話をしたい vlan の数だけ作成する事になります.
また,インタフェースに付く番号は自由に決められるので,vlan 番号とあわせると判りやすいと思います.

# ifconfig vlan10 plumb
# ifconfig vlan20 plumb
# ifconfig vlan30 plumb
# ifconfig vlan40 plumb

これで,4つのインタフェースが作成されました.これだけでは,インタフェースはあるもののどの vlan と話をするか等が全く設定されていない為使えません.次のようにして vlan インタフェースと物理インタフェース,vlan 番号を設定します.

# ifconfig vlan10 vlan 10 vlandev xl0

この場合,vlan10 という vlan インタフェースは xl0 という物理インタフェースを使います.また,vlan 番号 10 を理解するように設定されています.
L2 レベルではこれで完了です.今度はこのインタフェースにアドレスを設定し,L3 で通信が出来るようにします.

# ifconfig vlan10 inet 192.168.x.254/24

と,通常のインタフェースと同様にアドレスを設定して下さい.
上記手順を使いたい vlan の数だけ設定すると良い感じです.

再起動後も使いたいよ!!

当然,FreeBSD を再起動後も使いたいでしょう.その場合は /etc/rc.conf に記述する事で使えるようになります.
キモは cloned_interfaces です.vlan インタフェースを上では手動で作成 (plumb) していました.この行にインタフェース名を列挙する事で同様の事をやってくれます.

cloned_interfaces="vlan10 vlan20 vlan30 vlan40"

これで再起動後に,vlan インタフェースが作成された状態で起動します.ここまでくると後は通常のインタフェースと同様の扱いで設定可能です.

ifconfig_vlan10="inet 192.168.x.254/24 vlan 10 vlandev xl0"

ここまで記述する事で vlan インタフェースに IP アドレスが設定された状態で起動します.

最後に

cloned_interfaces がキモと書いたのですが,/boot/loader.conf に以下の様に記述するか,kernel に組み込んでおけば必要が無いかもしれません.

if_vlan_load="YES"

Hiroyuki Seino http://www.seichan.org/ http://www.seichan.org/blog/
Today:1 Yesterday:1 All:15676