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 以识别连接。在其他应用程序中可使用 DEVICE 名称,比如 firewalld
请运行以下命令,使用 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 地址和网关的命令,如下:
~]$ 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 命令配置接口的示例,请查看 第 2.3.2 节 “使用 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[output truncated]
VLAN 命令的其他选项,请查看 nmcli(1) man pag 的 VLAN 部分。在 man page 中,创建该 VLAN 的设备是作为上级设备使用。在上述示例中是使用其接口名称 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 时不需要更改 MTU,因为链接层标头会增大 4 字节以适应 802.1Q 标记。
写入时,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 程序设置和清除 ioctl 标签,这样会更改 802.1Q 代码的作用方式。NetworkManager 支持以下 VLAN 标签:
  • 0x01 - 将输出数据包标头重新排序
  • 0x02 - 使用 GVRP 协议
  • 0x04 - 将接口与其上级接口松散绑定
VLAN 的状态与上级接口接口或主接口(即创建 VLAN 的接口或设备)状态同步。如果将上级接口设定为 down 管理状态,则会将所有关联的 VLAN 设定为 down 状态,并在路由表中刷新所有路由。标签 0x04 启用 松散连接 模式,在该模式中,可将运行状态从上级接口传递给关联的 VLAN,但不会更改 VLAN 状态。
请运行以下命令设置 VLAN 标签:
~]$ nmcli connection modify vlan-VLAN10 vlan.flags 1