如何在 CentOS/RHEL 系统中使用带 VLAN 标记的以太网卡
在某些场景中,我们希望在 linux 服务器(centos/rhel)的同一块以太网卡(nic)上分配来自不同 vlan 的多个 ip。这个可以通过使用 vlan 标记接口来实现。但是要做到这一点,我们必须确保交换机的端口上连接了多个 vlan,也就是说我们可以在交换机上添加多个 vlan 来配置聚合端口(lctt 译注:一般有聚合端口、接入端口、混合端口三种)。
假设我们有一个 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-time 8021q [root@linuxtechi ~]# lsmod | grep -i 8021q 8021q 29022 0 garp 14384 1 8021q mrp 18542 1 8021q [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: centos linux 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 ~]# ip link add link enp0s3 name enp0s3.200 type vlan id 200
使用下面的ip
命令打开接口:
[root@linuxtechi ~]# ip link set dev enp0s3.200 up
同理给enp0s3
网卡映射上300
的 vlan 标签:
[root@linuxtechi ~]# ip link add link enp0s3 name enp0s3.300 type vlan id 300 [root@linuxtechi ~]# ip link set dev enp0s3.300 up
现在使用ip
命令查看标记后的接口状态:
现在我们可以使用下面的ip
命令从它们各自的 vlan 为已经标记的接口分配 ip 地址:
[root@linuxtechi ~]# ip addr add 172.168.10.51/24 dev enp0s3.200 [root@linuxtechi ~]# ip addr add 172.168.20.51/24 dev enp0s3.300
使用下面的ip
命令查看是否为已标记的接口分配到 ip:
重启之后,上面所有通过ip
命令的更改都不会保持(lctt 译注:修改后可保存至配置文件或数据库中,如果未进行保存处理,则只有当前环境生效,重启后配置失效)。系统重启和网络服务重启(lctt 译注:service network restart
,或down
和up
命令)之后这些标记接口将不可用。
因此,要使标记的接口在重启后保持不变,需要使用接口的ifcfg
文件。
编辑接口(enp0s3
)文件/etc/sysconfig/network-scripts/ifcfg-enp0s3
,并且增加下面的内容:
作者提醒:替换为你环境中的接口名称。
[root@linuxtechi ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 type=ethernet device=enp0s3 bootproto=none onboot=yes
保存和退出文件。
为 id 是200
的 vlan 创建接口文件/etc/sysconfig/network-scripts/ifcfg-enp0s3.200
,且增加下面的内容:
[root@linuxtechi ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3.200 device=enp0s3.200 bootproto=none onboot=yes ipaddr=172.168.10.51 prefix=24 network=172.168.10.0 vlan=yes
保存并退出此文件。
同理为 id 是300
的 vlan 创建接口文件/etc/sysconfig/network-scripts/ifcfg-enp0s3.300
,且增加下面的内容:
[root@linuxtechi ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3.300 device=enp0s3.300 bootproto=none onboot=yes ipaddr=172.168.20.51 prefix=24 network=172.168.20.0 vlan=yes
保存并退出文件,这时候使用下面的命令重启网络服务
[root@linuxtechi ~]# systemctl restart network
现在使用下面的ip
命令检验标记的接口是否已配置和启动,并且正在运行中:
到此这篇关于如何在 centos/rhel 系统中使用带 vlan 标记的以太网卡的文章就介绍到这了,更多相关centos系统中使用带 vlan 标记的以太网卡内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
上一篇: 一文搞懂C# 数据类型