开启辅助访问 切换到窄版

打印 上一主题 下一主题

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

[复制链接]
作者:Ds—shiqi 
版块:
嵌入式操作系统 linux 发布时间:2020-12-19 22:57:01
17500
楼主
跳转到指定楼层
| 只看该作者 回帖奖励 |倒序浏览 |阅读模式

在某些场景中,我们希望在 Linux 服务器(CentOS/RHEL)的同一块以太网卡(NIC)上分配来自不同 VLAN 的多个 IP。这个可以通过使用 VLAN 标记接口来实现。
来源:linux.cn  作者:Pradeep Kumar  译者:quinbyjoe
在某些场景中,我们希望在 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 可以使用下面的命令:
# lsmod | grep -i 8021q# modprobe --first-time 8021q# lsmod | grep -i 8021q8021q 29022 0garp 14384 1 8021qmrp 18542 1 8021q#可以使用 modinfo 命令显示内核模块 8021q 的详细信息:
# modinfo 8021qfilename: /lib/modules/3.10.0-327.el7.x86_64/kernel/net/8021q/8021q.koversion: 1.8license: GPLalias: rtnl-link-vlanrhelversion: 7.2srcversion: 2E63BD725D9DC11C7DA6190depends: mrp,garpintree: Yvermagic: 3.10.0-327.el7.x86_64 SMP mod_unload modversionssigner: CentOS Linux kernel signing keysig_key: 79:AD:88:6A:11:3C:A0:22:35:26:33:6C:0F:82:5B:8A:94:29:6A:B3sig_hashalgo: sha256#现在使用 ip 命令 给 enp0s3 网卡标记(或映射)上 200 和 300 的 VLAN 。
(LCTT 译注:这是先给 enp0s3 网卡映射上 200 的 VLAN 标签。)
# ip link add link enp0s3 name enp0s3.200 type vlan id 200使用下面的 ip 命令打开接口:
# ip link set dev enp0s3.200 up同理给 enp0s3 网卡映射上 300 的 VLAN 标签:
# ip link add link enp0s3 name enp0s3.300 type vlan id 300# ip link set dev enp0s3.300 up现在使用 ip 命令查看标记后的接口状态:
tagged-interface-ip-command
现在我们可以使用下面的 ip 命令从它们各自的 VLAN 为已经标记的接口分配 IP 地址:
# ip addr add 172.168.10.51/24 dev enp0s3.200# 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,并且增加下面的内容:
作者提醒:替换为你环境中的接口名称。
# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3TYPE=EthernetDEVICE=enp0s3BOOTPROTO=noneONBOOT=yes保存和退出文件。
为 id 是 200 的 VLAN 创建接口文件 /etc/sysconfig/network-scripts/ifcfg-enp0s3.200,且增加下面的内容:
# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3.200DEVICE=enp0s3.200BOOTPROTO=noneONBOOT=yesIPADDR=172.168.10.51PREFIX=24NETWORK=172.168.10.0VLAN=yes保存并退出此文件。
同理为 id 是 300 的 VLAN 创建接口文件 /etc/sysconfig/network-scripts/ifcfg-enp0s3.300,且增加下面的内容:
# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3.300DEVICE=enp0s3.300BOOTPROTO=noneONBOOT=yesIPADDR=172.168.20.51PREFIX=24NETWORK=172.168.20.0VLAN=yes保存并退出文件,这时候使用下面的命令重启网络服务,
# systemctl restart network现在使用下面的 ip 命令检验标记的接口是否已配置和启动,并且正在运行中:
tagged-interface-status-ip-command-linux-server
以上就是本文的全部内容,我希望你已经学会了在 CentOS 7 / 8 和 RHEL 7 / 8 服务器上如何去配置和启用 VLAN 标签接口的方法。请分享你的反馈和意见。
作者: Pradeep Kumar 选题: lujun9972 译者: quinbyjoe 校对: wxy
本文由 LCTT 原创编译, Linux中国 荣誉推出

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表