如何在 CentOS/RHEL 系统中使用带 VLAN 标记的以太网卡

运维 系统运维
在某些场景中,我们希望在 Linux 服务器(CentOS/RHEL)的同一块以太网卡(NIC)上分配来自不同 VLAN 的多个 IP。这个可以通过使用 VLAN 标记接口来实现。但是要做到这一点,我们必须确保交换机的端口上连接了多个 VLAN,也就是说我们可以在交换机上添加多个 VLAN 来配置聚合端口。

 [[358417]]

在某些场景中,我们希望在 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 可以使用下面的命令:

  1. [root@linuxtechi ~]# lsmod | grep -i 8021q
  2. [root@linuxtechi ~]# modprobe --first-time 8021q
  3. [root@linuxtechi ~]# lsmod | grep -i 8021q
  4. 8021q 29022 0
  5. garp 14384 1 8021q
  6. mrp 18542 1 8021q
  7. [root@linuxtechi ~]#

可以使用 modinfo 命令显示内核模块 8021q 的详细信息:

  1. [root@linuxtechi ~]# modinfo 8021q
  2. filename: /lib/modules/3.10.0-327.el7.x86_64/kernel/net/8021q/8021q.ko
  3. version: 1.8
  4. license: GPL
  5. alias: rtnl-link-vlan
  6. rhelversion: 7.2
  7. srcversion: 2E63BD725D9DC11C7DA6190
  8. depends: mrp,garp
  9. intree: Y
  10. vermagic: 3.10.0-327.el7.x86_64 SMP mod_unload modversions
  11. signer: CentOS Linux kernel signing key
  12. sig_key: 79:AD:88:6A:11:3C:A0:22:35:26:33:6C:0F:82:5B:8A:94:29:6A:B3
  13. sig_hashalgo: sha256
  14. [root@linuxtechi ~]#

现在使用 ip 命令给 enp0s3 网卡标记(或映射)上 200 和 300 的 VLAN 。

(LCTT 译注:这是先给 enp0s3 网卡映射上 200 的 VLAN 标签。)

  1. [root@linuxtechi ~]# ip link add link enp0s3 name enp0s3.200 type vlan id 200

使用下面的 ip 命令打开接口:

  1. [root@linuxtechi ~]# ip link set dev enp0s3.200 up

同理给 enp0s3 网卡映射上 300 的 VLAN 标签:

  1. [root@linuxtechi ~]# ip link add link enp0s3 name enp0s3.300 type vlan id 300
  2. [root@linuxtechi ~]# ip link set dev enp0s3.300 up

现在使用 ip 命令查看标记后的接口状态:

 

tagged-interface-ip-command

现在我们可以使用下面的 ip 命令从它们各自的 VLAN 为已经标记的接口分配 IP 地址:

  1. [root@linuxtechi ~]# ip addr add 172.168.10.51/24 dev enp0s3.200
  2. [root@linuxtechi ~]# ip addr add 172.168.20.51/24 dev enp0s3.300

使用下面的 ip 命令查看是否为已标记的接口分配到 IP:

 

ip-address-tagged-nic

重启之后,上面所有通过 ip 命令的更改都不会保持(LCTT 译注:修改后可保存至配置文件或数据库中,如果未进行保存处理,则只有当前环境生效,重启后配置失效)。系统重启和网络服务重启(LCTT 译注:service network restart,或 down 和 up 命令)之后这些标记接口将不可用。

因此,要使标记的接口在重启后保持不变,需要使用接口的 ifcfg 文件。

编辑接口(enp0s3)文件 /etc/sysconfig/network-scripts/ifcfg-enp0s3,并且增加下面的内容:

作者提醒:替换为你环境中的接口名称。

  1. [root@linuxtechi ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
  2. TYPE=Ethernet
  3. DEVICE=enp0s3
  4. BOOTPROTO=none
  5. ONBOOT=yes

保存和退出文件。

为 id 是 200 的 VLAN 创建接口文件 /etc/sysconfig/network-scripts/ifcfg-enp0s3.200,且增加下面的内容:

  1. [root@linuxtechi ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3.200
  2. DEVICE=enp0s3.200
  3. BOOTPROTO=none
  4. ONBOOT=yes
  5. IPADDR=172.168.10.51
  6. PREFIX=24
  7. NETWORK=172.168.10.0
  8. VLAN=yes

保存并退出此文件。

同理为 id 是 300 的 VLAN 创建接口文件 /etc/sysconfig/network-scripts/ifcfg-enp0s3.300,且增加下面的内容:

  1. [root@linuxtechi ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3.300
  2. DEVICE=enp0s3.300
  3. BOOTPROTO=none
  4. ONBOOT=yes
  5. IPADDR=172.168.20.51
  6. PREFIX=24
  7. NETWORK=172.168.20.0
  8. VLAN=yes

保存并退出文件,这时候使用下面的命令重启网络服务,

  1. [root@linuxtechi ~]# systemctl restart network

现在使用下面的 ip 命令检验标记的接口是否已配置和启动,并且正在运行中:

 

tagged-interface-status-ip-command-linux-server 

以上就是本文的全部内容,我希望你已经学会了在 CentOS 7 / 8 和 RHEL 7 / 8 服务器上如何去配置和启用 VLAN 标签接口的方法。请分享你的反馈和意见。

 

责任编辑:庞桂玉 来源: Linux中国
相关推荐

2020-06-08 16:06:35

ethtool命令以太网卡Linux

2009-12-17 13:30:57

Linux以太网卡

2024-01-30 20:06:18

RHELVLAN

2021-08-10 14:23:00

以太网SPE工业应用

2010-03-29 17:08:28

CentOS系统

2010-04-21 17:56:22

Unix网卡配置

2019-06-05 10:20:09

安全更新命令Linux

2019-10-12 10:24:06

CentOSRHELCockpit

2018-01-09 09:00:01

Linux命令文件压缩

2018-10-25 15:49:56

Mellanox太网卡存储

2018-11-06 15:22:39

网卡Mellanox以太网

2014-07-24 10:17:25

CentOSSquid

2022-04-30 09:41:14

LinuxNTP服务器

2019-04-02 14:55:12

Linux虚拟网卡

2020-11-30 11:55:07

Docker命令Linux

2019-09-16 19:00:48

Linux变量

2014-07-02 09:47:06

SwiftCocoaPods

2024-09-06 11:34:15

RustAI语言

2020-04-09 10:18:51

Bash循环Linux

2010-03-30 17:28:10

CentOS操作系统
点赞
收藏

51CTO技术栈公众号