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

 更新时间:2020年12月18日 08:50  点击:1874

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

假设我们有一个 Linux 服务器,我们在这里有两张以太网卡(enp0s3enp0s8),第一张网卡(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 ~]#

现在使用ip 命令给enp0s3网卡标记(或映射)上200300的 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,或downup命令)之后这些标记接口将不可用。

因此,要使标记的接口在重启后保持不变,需要使用接口的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 标记的以太网卡内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

[!--infotagslink--]

相关文章

  • CentOS8安装SQLServer2019的过程

    这篇文章主要介绍了CentOS8安装SQLServer2019的步骤,本文通过命令实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
  • Linux CentOS MySQL数据库安装配置教程

    这篇文章主要为大家详细介绍了Linux CentOS MySQL数据库的安装配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-05-19
  • centos 6.5下 mysql-community-server. 5.7.18-1.el6安装

    这篇文章主要介绍了centos 6.5下 mysql-community-server. 5.7.18-1.el6安装,需要的朋友可以参考下...2017-05-09
  • Centos下 修改mysql密码的方法

    这篇文章主要介绍了Centos下 修改mysql密码的方法,需要的朋友可以参考下...2017-03-14
  • CentOS7系统下用YUM安装Nginx详解

    相信大家都知道Nginx ("engine x") 是一个高性能的 HTTP和反向代理服务器,也是一个 IMAPPOP3SMTP 代理服务器。这篇文章将详细给大家介绍在CentOS7系统下用YUM安装Nginx的方法,有需要的朋友们可以参考借鉴,下面来一起看看吧。...2017-01-22
  • CentOS下编译安装nginx及配置缩略图插件的方法教程

    这篇文章主要给大家介绍了在CentOS系统下编译安装nginx及配置缩略图插件的方法教程,文中给出了详细的安装步骤,对大家具有一定的参考价值,有需要的朋友们下面来一起看看吧。...2017-07-06
  • 在CentOS7下安装Python3教程解析

    这篇文章主要介绍了在CentOS7下安装Python3教程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-09
  • 在阿里云的CentOS环境中安装配置MySQL的教程

    这篇文章主要介绍了在阿里云的CentOS环境中安装配置MySQL的教程,注意一下文章开头所提到的系统自带MariaDB的问题,需要的朋友可以参考下...2015-12-18
  • Centos7 yum安装mongodb实现步骤详解

    这篇文章主要介绍了Centos7 yum安装mongodb实现步骤详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-12-08
  • 使用YUM在Linux(CentOS 7)下安装mysql 5.7.18的教程详解

    这篇文章主要介绍了使用YUM在Linux(CentOS 7)下安装mysql 5.7.18的教程详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2017-05-19
  • 腾讯云CentOS 6.6快速安装 Nginx服务器图文教程

    本文通过图文并茂的形式给大家介绍了腾讯云CentOS 6.6快速安装 Nginx服务器的方法,介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看看吧...2016-09-28
  • CentOS 64 编译PHP出现 error: Cannot find ldap libraries in /usr/lib

    CentOS 64 编译PHP出现 error: Cannot find ldap libraries in /usr/lib 有需要的朋友可参考参考。 在CentOS 64位下编译安装PHP5.4.8。cp -frp /usr/lib64/libpn...2016-11-25
  • CentOS系统中安装MySQL和开启MySQL远程访问的方法

    这篇文章主要介绍了CentOS系统中安装MySQL和开启MySQL远程访问的方法,包括MySQL的随机启动等操作的介绍,需要的朋友可以参考下...2016-03-02
  • CentOS6.6 安装 Tengine 笔记

    这篇文章主要介绍了CentOS6.6 安装 Tengine 笔记,本文讲解了安装必要的编译环境好、安装需要的组件、安装Tengine等步骤,需要的朋友可以参考下...2016-01-27
  • CentOS安装PHP5.6环境的操作步骤

    CentOS安装PHP5.6环境与其它版本有什么不同呢,我相信各位朋友不安装肯定不知道安装了会发现还是有一些不一样了,具体的来看看吧。 在最新的版本5.6.3不仅修改了多个...2016-11-25
  • CentOS 7.2下MySQL的安装与相关配置

    最近因为工作需要,要在CentOS上安装MySQL,在安装的时候遇到了一点问题,花了点时间解决了,感觉不管是官网还是网上的一些教程都不够完整,不能一次性帮新手解决问题,于是我就结合官网和网上的资源整理了下,现在分享给大家,希望对有需要的朋友们能有所帮助。...2016-11-22
  • Centos下Mysql安装图文教程

    这篇文章主要为大家详细介绍了 Centos下Mysql安装图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-20
  • 在阿里云Centos下如何安装Nginx

    这篇文章主要介绍了阿里云Centos下如何安装Nginx,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。...2016-11-01
  • Linux CentOS系统下安装node.js与express的方法

    这篇文章主要给大家介绍了在Linux CentOS系统下安装node.js与express的方法,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。...2017-04-03
  • Centos下编译安装Nginx教程详解

    这篇文章主要介绍了Centos下编译安装Nginx的教程详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2017-01-22