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-name
和 vlan.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 实用程序可用于设置和清除
VLAN 的状态同步到父接口或主接口(在其上创建 VLAN 的接口或设备)的状态。如果父接口设置为 “down” 管理状态,则所有关联的 VLAN 将被设置,并且所有路由都会从路由表中清除。标志
ioctl
标志,以改变 802.1Q 代码函数的方式。NetworkManager 支持以下 VLAN 标记:
- 0x01 - 重新排序输出数据包标头
- 0x02 - 使用 GVRP 协议
- 0x04 - 接口及其 master 的松散绑定
0x04
可启用 松散绑定 模式,其中仅操作状态从父对象传递到关联的 VLAN,但不更改 VLAN 设备状态。
要设置 VLAN 标记,请按如下方式发出命令:
~]$ nmcli connection modify vlan-VLAN10 vlan.flags 1
有关 nmcli 简介,请参阅 第 3.3 节 “使用 nmcli 配置 IP 网络”。