Show Table of Contents
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-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 设定为 down 状态,并在路由表中刷新所有路由。标签
ioctl
标签,这样会更改 802.1Q 代码的作用方式。NetworkManager 支持以下 VLAN 标签:
- 0x01 - 将输出数据包标头重新排序
- 0x02 - 使用 GVRP 协议
- 0x04 - 将接口与其上级接口松散绑定
0x04
启用 松散连接 模式,在该模式中,可将运行状态从上级接口传递给关联的 VLAN,但不会更改 VLAN 状态。
请运行以下命令设置 VLAN 标签:
~]$ nmcli connection modify vlan-VLAN10 vlan.flags 1
有关 nmcli 的介绍请参考 第 2.3 节 “使用 NetworkManager 命令行工具 nmcli”。