FreeBSD で、802.1Q TagVLANを使う方法

準備

FreeBSD で、kernelコンパイルで有効にするか、moduleを組み込み、利用する2つのパターンがあります。
GENERIC kernelを使っている場合は、わざわざ手でkernelを作り直さないと行けないため、今回は、moduleを組み込む方法でのTipsとなります。

尚、vlanが使えるデバイスは限られており、man - if-vlanman - vlanを見る限り、ハードウェアで処理可能なNICは、bce, bge, cxgb, em, ixgb, msk, nge, re, stge, ti, txp, vge となっているようです。ソフトウェアエミュレーションにより、多くのデバイスが対応出来るようですが、一部のNICには、制約が有るようですので、manで確認して下さい。

VLAN Kernel moduleを読み込む

カーネル再構築ではなく、VLAN Kernel Moduleをロードします。

# kldload if_vlan.ko

正常に読み込まれているか、kldstat で見ることが出来ます。

# kldstat
 Id Refs Address Size Name
 1  1 0xc17c7000 4000 if_vlan.ko

正常にload出来ることを確認出来たら、次回から自動起動時に、moduleを読み込むよう、/boot/loader.conf に以下の設定を書いておきましょう。rc.confで自動設定するときに、予めmoduleが読み込まれている必要があります。

# echo 'if_vlan_load="YES"' >> /boot/loader.conf 

(手動) vlan if を作る

vlanX は、任意の数字で作成することが出来るため、VIDとデバイス vlanX を同じにしておいても良い。

# ifconfig vlan1 plumb
# ifconfig vlan2 plumb
# ifconfig vlan3 plumb

機器によっては、MacAddressが同じだと、不都合が出る可能性があるため、任意のMacAddressに変更することが可能。

# ifconfig vlan1 link 00:1c:c4:00:11:01
# ifconfig vlan2 link 00:1c:c4:00:11:02
# ifconfig vlan3 link 00:1c:c4:00:11:03

無事に、ifconfig で変わったのを確認出来れば、そのNICが、vlan及びMacAddress変更(あくまでも名乗っているだけで、HWアドレスは書き換えられていない)が可能となる。

(手動) vlan設定

下記のようにして、どの物理デバイスにたいして、vlanを使うか設定をおこなう。
途中から、bge0.2 といった形でも、使えるようになっている(らしい)

# ifconfig vlan1 vlan 1 vlandev bge0
# ifconfig vlan2 vlan 2 vlandev bge0
# ifconfig vlan3 vlan 3 vlandev bge0

vlanの設定が無事に完了したら、下記のようになっているはずです。

# ifconfig vlan2
vlan2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 00:1c:c4:00:11:02
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
vlan: 2 parent interface: bge0

(手動) IPアドレスを付ける

普段通り、ifconfig で、IPアドレスを付ければ問題有りません。

# ifconfig vlan1 inet 192.168.1.10 netmask 255.255.255.0
# ifconfig vlan2 inet 192.168.2.10 netmask 255.255.255.0
# ifconfig vlan3 inet 192.168.3.10 netmask 255.255.255.0

同様に、IPv6も問題なく付けることが出来ます。

# ifconfig vlan1 inet add 2001:200:564:4649::1
# ifconfig vlan2 inet add 2001:200:564:2525::1
# ifconfig vlan3 inet add 2001:200:564:0721::1

ルーティング等は、route add で追加出来ますが、今回は触れません。
疎通確認が出来たら、/etc/rc.conf に記述し、起動時に自動設定されるように設定をおこないます。

(手動) NIC.vid でvlanを作る

Linux等では、eth0.10 とすると、eth0のvlan10とすることが出来出来ます。これは、どのNICにvlanが使われているか非常に明快でわかりやすくなっており、今のFreeBSDでも同じ使い方が出来るようになっています。

# ifconfig bge0.10 plumb

同様に、MacAddressの変更が必要であれば、次のようにして変更します。

# ifconfig bge0.10 link 00:1c:c4:00:11:10

無事に作れたか確認してみましょう。

# ifconfig bge0.10
bge0.10: flags=8842<BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 00:1c:c4:00:11:03
        media: Ethernet autoselect (1000baseTX <full-duplex>)
        status: active
        vlan: 10 parent interface: bge0

こちらの方がスマートで非常に簡単です。

/etc/rc.conf の編集

参考リンク

TOPページへ戻る   新しいページの作成新しい下位ページの作成そのページを引用して新規作成ページ名の変更ページへのリンク元を表示   サイトのページ一覧サイト内単語検索編集したページの履歴削除したページの履歴   別ウィンドウでマニュアルページへ