Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

10.3. 使用命令行工具 nmcli 配置 802.1Q VLAN 标记

要查看系统中的可用接口,请使用以下命令:
~]$ nmcli con show
NAME         UUID                                  TYPE            DEVICE
System enp2s0  9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04  802-3-ethernet  enp2s0
System enp1s0  5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet  enp1s0
请注意,输出中的 NAME 字段始终表示连接 ID。它不是接口名称,即使它可能看起来相同。该 ID 可用于 nmcli 连接命令来标识连接。将 DEVICE 名称用于其他应用,如 firewalld
要在以太网接口 enp1s0 上创建一个 802.1Q VLAN 接口,带有 VLAN 接口 VLAN10 和 ID 10,请发出以下命令:
~]$ nmcli con add type vlan ifname VLAN10 dev enp1s0 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 enp1s0 id 12
Connection 'VLAN12' (b796c16a-9f5f-441c-835c-f594d40e6533) successfully added.

为 VLAN 接口分配地址

您可以使用与任何其他接口相同的 nmcli 命令分配静态和动态接口地址。
例如,创建具有静态 IPv4 地址和网关的 VLAN 接口的命令如下:
~]$ nmcli con add type vlan con-name VLAN20 dev enp1s0 id 20 ip4 10.10.10.10/24 \
gw4 10.10.10.254
要创建带有动态分配寻址的 VLAN 接口,请按如下所示发出命令:
~]$ nmcli con add type vlan con-name VLAN30 dev enp1s0 id 30
有关使用 nmcli 命令配置接口的示例,请参阅 第 3.3.6 节 “使用 nmcli 连接到网络”
要查看创建的 VLAN 接口,请按如下方式发出命令:
~]$ nmcli con show
NAME         UUID                                  TYPE            DEVICE
VLAN12         4129a37d-4feb-4be5-ac17-14a193821755  vlan            enp1s0.12
System enp2s0  9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04  802-3-ethernet  enp2s0
System enp1s0  5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet  enp1s0
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:                            enp1s0
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:                        enp1s0.12
GENERAL.STATE:                          activating
[output truncated]
nmcli(1) man page 的 VLAN 部分列出了 VLAN 命令的其他选项。在 man page 中,创建 VLAN 的设备称为父设备。在上面的示例中,设备通过其接口名称 enp1s0 指定,它也可以通过连接 UUID 或 MAC 地址来指定。
在以太网接口 enp2s0 上创建一个带有入口优先级映射的 802.1Q VLAN 连接配置集,名称 VLAN1 ID 13,发出如下命令:
~]$ nmcli con add type vlan con-name VLAN1 dev enp2s0 id 13 ingress "2:3,3:5"
要查看与上述创建的 VLAN 关联的所有参数,请按如下所示发出命令:
~]$ nmcli connection show vlan-VLAN10
要更改 MTU,请按如下所示发出命令:
~]$ nmcli connection modify vlan-VLAN10 802.mtu 1496
MTU 设置决定了网络层数据包的最大大小。链路层帧可以附带的载荷的最大大小反过来限制了网络层 MTU。对于标准以太网帧,这意味着 MTU 为 1500 字节。设置 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 - 接口及其 master 的松散绑定
VLAN 的状态同步到父接口或主接口(在其上创建 VLAN 的接口或设备)的状态。如果父接口设置为 down 管理状态,则所有关联的 VLAN 将被设置,并且所有路由都会从路由表中清除。标志 0x04 可启用 松散绑定 模式,其中仅操作状态从父对象传递到关联的 VLAN,但不更改 VLAN 设备状态。
要设置 VLAN 标记,请按如下方式发出命令:
~]$ nmcli connection modify vlan-VLAN10 vlan.flags 1
有关 nmcli 简介,请参阅 第 3.3 节 “使用 nmcli 配置 IP 网络”