在某些场景中,我们希望在 Linux 服务器(CentOS/RHEL)的同一块以太网卡(NIC)上分配来自不同 VLAN 的多个 IP。这个可以通过使用 VLAN 标记接口来实现。但是要做到这一点,我们必须确保交换机的端口上连接了多个 VLAN,也就是说我们可以在交换机上添加多个 VLAN 来配置聚合端口Trunk port(LCTT 译注:一般有聚合端口Trunk port、接入端口Access port、混合端口Hybird port三种)。
假设我们有一个 Linux 服务器,我们在这里有两张以太网卡(enp0s3 和 enp0s8),第一张网卡(enp0s3)会用于数据传输,而第二张网卡(enp0s8) 会用于控制/流量管理。我会使用多个 VLAN 用于数据传输(或在数据流量网卡上从不同的 VLAN 中分配多个 IP)。
我假设连接到我服务器的数据网卡的端口,是通过映射多个 VLAN 来配置为聚合端口。
下面是映射到数据传输网卡(NIC)的 VLAN:
VLAN ID (200), VLAN N/W = 172.168.10.0/24
VLAN ID (300), VLAN N/W = 172.168.20.0/24
要在 CentOS 7 / RHEL 7 / CentOS 8 / RHEL 8 系统中使用 VLAN 标记接口,必须加载 8021q 。
加载内核模块 8021q 可以使用下面的命令:
[root@linuxtechi ~]#lsmod|grep-i 8021q
[root@linuxtechi ~]#modprobe–first-time8021q
[root@linuxtechi ~]#lsmod|grep-i 8021q
8021q290220
garp 1438418021q
mrp 1854218021q
[root@linuxtechi ~]#
可以使用 modinfo 命令显示内核模块 8021q 的详细信息:
[root@linuxtechi ~]# modinfo 8021q
filename:/lib/modules/3.10.0-327.el7.x86_64/kernel/net/8021q/8021q.ko
version:1.8
license: GPL
alias: rtnl-link-vlan
rhelversion:7.2
srcversion:2E63BD725D9DC11C7DA6190
depends: mrp,garp
intree: Y
vermagic:3.10.0-327.el7.x86_64 SMP mod_unload modversions
signer:CentOSLinux kernel signing key
sig_key:79:AD:88:6A:11:3C:A0:22:35:26:33:6C:0F:82:5B:8A:94:29:6A:B3
sig_hashalgo: sha256
[root@linuxtechi ~]#
现在使用 给 enp0s3 网卡标记(或映射)上 200 和 300 的 VLAN 。
(LCTT 译注:这是先给 enp0s3 网卡映射上 200 的 VLAN 标签。)
[root@linuxtechi ~]#iplink add link enp0s3 name enp0s3.200 type vlan id200
使用下面的 ip 命令打开接口:
[root@linuxtechi ~]#iplinkset dev enp0s3.200 up
同理给 enp0s3 网卡映射上 300 的 VLAN 标签:
[root@linuxtechi ~]#iplink add link enp0s3 name enp0s3.300 type vlan id300
[root@linuxtechi ~]#iplinkset dev enp0s3.300 up
现在使用 ip 命令查看标记后的接口状态: