2011/03/13(Sun)Fedora/CentOSでの802.1qVLANの設定方法

2011/03/13 0:53 Software::Linux
LinuxでタグVLANが設定できることは知っていたが、いざ設定してると一部ハマったのでメモ。

VLANモードを有効に

まずは/etc/sysconfig/networkにVLANを使用するように、以下の設定を加える。
VLAN=yes
VLAN_NAME_TYPE=DEV_PLUS_VID_NO_PAD
なお、yesという部分を大文字とかにしていると、networkサービス起動時に立ち上げに失敗して通信できないので、注意。(BSDのノリで大文字で書いたら、ココでハマった)

VLAN_NAME_TYPEの設定値には以下のようなものがあり、インターフェース名の命名規則・設定ファイル(/etc/sysconfig/network-scripts/ifcfg-***)が変わってくるので、希望するものを書いておく。
VLAN_PLUS_VID
vlan0123
VLAN_PLUS_VID_NO_PAD
vlan123
DEV_PLUS_VID
eth0.0123
DEV_PLUS_VID_NO_PAD
eth0.123

VLAN設定を追加

今回は、DEV_PLUS_VID_NO_PADという設定にしたので、例えばVLAN 123であれば/etc/sysconfig/network-scripts/ifcfg-eth0.123という設定ファイルを作成する。
DEVICE=eth0.123
PHYSDEV=eth0
BOOTPROTO=static
HWADDR=xx:xx:xx:xx:xx:xx
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
PEERDNS=yes
IPADDR=xxx.xxx.xxx.xxx
NETMASK=xxx.xxx.xxx.xxx
GATEWAY=xxx.xxx.xxx.xxx
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6ADDR=xxxx:xxxx:xxxx:xxxx::xxxx/64
IPV6_DEFAULTGW=xxxx:xxxx:xxxx:xxxx::xxxx
ポイントとしては、DEVICEの値をVLAN_NAME_TYPEで指定した記述方法で書き換えること。
ただし、VLAN_PLUS_VIDやVLAN_PLUS_VID_NO_PADの場合は、名前から物理インタフェースを特定できないのでPHYSDEVという値に物理インタフェース名を指定することが必須。

VLANを使わない設定から切り替える場合、基本は/etc/sysconfig/network-scripts/ifcfg-eth0からコピーして上記のポイントを変更するだけでよい。ただし、VLANを使わない設定の時のifcfg-eth0などのONBOOTはnoにしておくこと。

設定を適用

CentOSの場合は
# service network restart
インターフェース eth0.123 を終了中:  Removed VLAN -:eth0.123:-
                                                           [  OK  ]
インターフェース eth0.456 を終了中:  Removed VLAN -:eth0.456:-
                                                           [  OK  ]
ループバックインターフェースを終了中                       [  OK  ]
ループバックインターフェイスを呼び込み中                   [  OK  ]
802.1Q VLAN パラメーターを設定中:  Set name-type for VLAN subsystem. Should be visible in /proc/net/vlan/config
                                                           [  OK  ]
インターフェース eth0.123 を活性化中:  Added VLAN with VID == 123 to IF -:eth0:-
                                                           [  OK  ]
インターフェース eth0.456 を活性化中:  Added VLAN with VID == 456 to IF -:eth0:-
                                                           [  OK  ]
となればOK。VLANという文字列が見えなければ、/etc/sysconfig/networkの設定がVLANモードとして正しく設定されていないことが原因なので、大文字小文字やスペルミスなど、じっくりチェックを。

Fedoraの場合は特にVLAN云々とは表示されないが大丈夫。
# service network restart
インターフェース eth0 を終了中:                            [  OK  ]
ループバックインターフェースを終了中                       [  OK  ]
ループバックインターフェイスを呼び込み中                   [  OK  ]
インターフェース eth0.123 を活性化中:                      [  OK  ]
インターフェース eth0.456 を活性化中:                      [  OK  ]

/proc/net/vlan/config

ちなみに/proc/net/vlan/configは、こんな感じ。
VLAN Dev name    | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth0.123      | 123  | eth0
eth0.456      | 456  | eth0