7.3. コマンドラインツール nmcli を使った 802.1Q VLAN タグの設定

システム上で利用可能なインターフェースを表示するには、以下のコマンドを実行します。
~]$ nmcli con show
NAME         UUID                                  TYPE            DEVICE
System eth1  9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04  802-3-ethernet  eth1
System eth0  5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet  eth0
出力の NAME フィールドは常に接続 ID を表すことに留意してください。これはインターフェース名と同じように見えますが、異なるものです。nmcli connection コマンドでは ID を使用して接続を特定することができます。firewalld のような他のアプリケーションでは、デバイス名を使用します。
イーサネットインターフェース eth0 上で VLAN インターフェース VLAN10 および ID 10 の 802.1Q VLAN インターフェースを作成するには、以下のコマンドを実行します。
~]$ nmcli con add type vlan ifname VLAN10 dev eth0 id 10
Connection 'vlan-VLAN10' (37750b4a-8ef5-40e6-be9b-4fb21a4b6d17) successfully added.
VLAN インターフェースに con-name が提供されなかったため、名前がインターフェース名の前にタイプを追加したものとなっていることに留意してください。別の方法では、以下のように con-name オプションで名前を指定します。
~]$ nmcli con add type vlan con-name VLAN12 dev eth0 id 12
Connection 'VLAN12' (b796c16a-9f5f-441c-835c-f594d40e6533) successfully added.

VLAN インターフェースにアドレスを割り当てる

この nmcli コマンドを使って、他のインターフェースと同様に静的および動的インターフェースアドレスを割り当てることができます。
たとえば、静的 IPv4 アドレスおよびゲートウェイの VLANインターフェースを作成するコマンドは、以下のようになります。
~]$ nmcli con add type vlan con-name VLAN20 dev eth0 id 20 ip4 10.10.10.10/24 \
gw4 10.10.10.254
動的アドレスを割り当てる VLAN インターフェースを作成するには、以下のコマンドを実行します。
~]$ nmcli con add type vlan con-name VLAN30 dev eth0 id 30
nmcli コマンドを使ったインスタンス設定例については、「nmcli を使用したネットワーク接続」 を参照してください。
作成した VLAN インターフェースを表示するには、以下のコマンドを実行します。
~]$ nmcli con show
NAME         UUID                                  TYPE            DEVICE
VLAN12       4129a37d-4feb-4be5-ac17-14a193821755  vlan            eth0.12
System eth1  9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04  802-3-ethernet  eth1
System eth0  5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet  eth0
vlan-VLAN10  1be91581-11c2-461a-b40d-893d42fed4f4  vlan            VLAN10
新規に設定した接続の詳細情報を表示するには、以下のコマンドを実行します。
~]$ nmcli -p con show VLAN12
===============================================================================
                      Connection profile details (VLAN12)
===============================================================================
connection.id:                          VLAN12
connection.uuid:                        4129a37d-4feb-4be5-ac17-14a193821755
connection.interface-name:              --
connection.type:                        vlan
connection.autoconnect:                 yes
-------------------------------------------------------------------------------
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  --
802-3-ethernet.auto-negotiate:          yes
802-3-ethernet.mac-address:             --
802-3-ethernet.cloned-mac-address:      --
802-3-ethernet.mac-address-blacklist:   
802-3-ethernet.mtu:                     auto           
vlan.interface-name:                    --
vlan.parent:                            eth0
vlan.id:                                12
vlan.flags:                             0 (NONE)
vlan.ingress-priority-map:              
vlan.egress-priority-map:               
-------------------------------------------------------------------------------
===============================================================================
      Activate connection details (4129a37d-4feb-4be5-ac17-14a193821755)
===============================================================================
GENERAL.NAME:                           VLAN12
GENERAL.UUID:                           4129a37d-4feb-4be5-ac17-14a193821755
GENERAL.DEVICES:                        eth0.12
GENERAL.STATE:                          activating[出力は省略されています]
VLAN コマンドの他のオプションは、nmcli(1) man ページの VLAN セクションに記載されています。man ページでは、VLAN が作成されるデバイスは、parent device と呼ばれています。上記の例では、デバイスはインターフェース名である eth0 で指定されており、これは接続の UUID または MAC アドレスで指定することもできます。
イーサネットインターフェース eth1 上で、イングレス優先度マッピングのインターフェース名 VLAN1 および ID 13 の 802.1Q VLAN インターフェースプロファイルを作成するには、以下のコマンドを実行します。
~]$ nmcli con add type vlan con-name VLAN1 dev eth2 id 13 ingress "2:3,3:5"
上記で作成された VLAN に関連するすべてのパラメーターを表示するには、以下のコマンドを実行します。
~]$ nmcli connection show vlan-VLAN10
MTU を変更するには、以下のコマンドを実行します。
~]$ nmcli connection modify vlan-VLAN10 802.mtu 1496
MTU 設定は、ネットワーク層パケットの最大サイズを決定します。リンク層フレームが送信可能なペイロードの最大サイズは、ネットワーク層 MTU を制限します。通常のイーサネットフレームの場合、1500 バイトの MTU になります。VLAN 設定の際には、802.1Q タグを受け入れるためにリンク層ヘッダーのサイズが 4 バイト拡大されるので、MTU を変更する必要はありません。
本ガイド執筆時点では、connection.interface-namevlan.interface-name は、同一である必要があります (設定されている場合)。このため、nmcli のインタラクティブモードを使って同時に変更する必要が あります。VLAN 接続名を変更するには、以下のコマンドを実行します。
~]$ nmcli con edit vlan-VLAN10
nmcli> set vlan.interface-name superVLAN
nmcli> set connection.interface-name superVLAN
nmcli> save
nmcli> quit
nmcli ユーティリティーを使うと、802.1Q コードの作動方法を変更する ioctl フラグの設定および削除ができます。以下の VLAN フラグが NetworkManager でサポートされています。
  • 0x01 - 出力パケットヘッダーを並び替えます。
  • 0x02 - GVRP プロトコルを使用します。
  • 0x04 - インターフェースとそのマスターのバインディングを外します。
VLAN の状態は、親もしくはマスターインターフェース (VLAN が作成されているインターフェースもしくはデバイス) に同期されます。親インターフェースが ダウン の管理状態に設定されていると、関連するすべての VLAN もダウンに設定され、ルートもすべてルーティングテーブルからフラッシュされます。フラグ 0x04 は、loose binding モードを有効にします。このモードでは、作動状態のみが親から関連 VLAN に受け継がれ、VLAN デバイスの状態は変更されません。
VLAN フラグを設定するには、以下のコマンドを実行します。
~]$ nmcli connection modify vlan-VLAN10 vlan.flags 1
nmcli の導入については、「NetworkManager のコマンドラインツール nmcli の使用」 を参照してください。