ipコマンドでVLANを設定する

ipコマンドでVLANを設定する方法について説明します。
ホストを再起動するとこれらの設定は無効になるため、永続的に設定したい場合は、nmcliコマンドなどを利用して下さい。

ネットワークデバイスを確認する

まずは、ip linkコマンドで現状を確認します。ip addressでも構いません。

# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:38:3c:fb brd ff:ff:ff:ff:ff:ff

ネットワークデバイスeth0UPの状態になっていることが確認出来ました。

VLANデバイスを作成する

ここでは、eth0に対してVLAN ID 100を設定したVLANデバイスeth0.100を作成します。

# ip link add link eth0 name eth0.100 type vlan id 100

VLANデバイスが作成されたか確認します。

# ip link
(一部省略)
3: eth0.100@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:38:3c:fb brd ff:ff:ff:ff:ff:ff

作成直後はデバイスがDOWNの状態になっているため、利用する前にip link setコマンドでリンクアップさせます。

# ip link set dev eth0.100 up

VLANデバイスを確認する

ip linkコマンドに-dオプションを付けてデバイスの詳細を表示します。

# ip -d link show dev eth0.100
3: eth0.100@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:38:3c:fb brd ff:ff:ff:ff:ff:ff promiscuity 0
    vlan protocol 802.1Q id 100  addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535

VLANデバイスeth0.100がUP状態になりました。また、vlan protocol 802.1Q id 100とあるように、デバイスにはVLAN ID 100が設定されています。

/proc/net/vlan/configでもVLANの設定が確認できます。

# cat /proc/net/vlan/config
VLAN Dev name	 | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth0.100       | 100  | eth0

VLANデバイスにIPアドレスを設定する

VLANデバイスにIPアドレスを設定して疎通確認することができます。ここではeth0.100192.0.2.10/24を設定します。

# ip addr add dev eth0.100 192.0.2.10/24

デバイスにIPアドレスが設定されていることを確認します。

# ip addr show eth0.100
3: eth0.100@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:0c:29:38:3c:fb brd ff:ff:ff:ff:ff:ff
    inet 192.0.2.10/24 scope global eth0.100
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe38:3cfb/64 scope link
       valid_lft forever preferred_lft forever

あとはpingコマンドなどで疎通を確認してください。

デバイスに複数のVLANタグを設定する

ネットワークデバイスに対して複数のVLANデバイスを作成できます。

# ip link add link eth0 name eth0.200 type vlan id 200
# ip link add link eth0 name eth0.300 type vlan id 300
# ip link set dev eth0.200 up
# ip link set dev eth0.300 up

VLAN ID 100に加えて200300を設定しました。VLANデバイスeth0.200eth0.300が作成されます。

# cat /proc/net/vlan/config
VLAN Dev name	 | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth0.100       | 100  | eth0
eth0.200       | 200  | eth0
eth0.300       | 300  | eth0