标签 VLAN 下的文章

在 Linux 中,你可以根据自己的需要创建高级网络设置,如 网络绑定 Network Bonding 网卡聚合 NIC teaming 、VLAN 标记和桥接。这些高级功能可以提高网络连接的效率和可靠性。

你可以在以太网、绑定、聚合或桥接设备等其他接口上创建 VLAN 接口。

在本文中,我们将学习如何在 RHEL 系统中通过网络绑定配置 VLAN 标记,它允许来自不同网络的流量共享共同的物理链接。

通过绑定对 VLAN 进行标记的先决条件

  • 网络聚合需要在网络交换机端口上启用 LACP(802.3ad),以聚合链路。
  • 网络聚合需要将网络端口配置为中继端口,这样可以在同一端口上添加多个 VLAN。此外,还要从它们那里获取 VLAN ID,以便在操作系统层面进行配置。
  • Linux 系统应该有两个接口。
  • 如果是物理服务器,我们建议在板载接口和 PCI 接口之间配置绑定,以避免主机端的网卡出现单点故障。

绑定内核模块

使用 lsmod 命令检查 Linux 系统是否已加载绑定模块。

lsmod | grep -i bonding
bonding 12451 0

默认情况下已加载。否则,请使用 modprobe 命令加载它。

modprobe bonding

1) LACP 绑定配置

我们将配置基于 LACP(Mode 4 – 802.3ad)的链路聚合绑定,通过组合名为 em1p7p1 的两个接口,为绑定接口提供更大的带宽。

1a) 创建 Bond 接口

在目录 /etc/sysconfig/network-scripts/ 下创建绑定接口文件 ifcfg-bond0

vi /etc/sysconfig/network-scripts/ifcfg-bond0

TYPE=Bond
DEVICE=bond0
NAME=bond0
BONDING_MASTER=yes
BOOTPROTO=none
ONBOOT=yes
BONDING_OPTS="mode=4 miimon=100 lacp_rate=1"
NM_CONTROLLED=no

1b) 配置第一个从接口

配置你想要进行绑定的第一个从属接口 em1。请根据你的环境使用正确的接口名称。

vi /etc/sysconfig/network-scripts/ifcfg-em1

TYPE=Ethernet
BOOTPROTO=none
DEVICE=em1
ONBOOT=yes
MASTER=bond0
SLAVE=yes

1c) 配置第二个从接口

配置你想要进行绑定的第二个从属接口 p7p1。 请根据你的环境使用正确的接口名称。

vi /etc/sysconfig/network-scripts/ifcfg-p7p1

TYPE=Ethernet
BOOTPROTO=none
DEVICE=p7p1
ONBOOT=yes
MASTER=bond0
SLAVE=yes

重启网络服务

重启网络服务以启用绑定接口或使用 ifup 命令启动它们。

systemctl restart network

2) 通过绑定接口进行 VLAN 标记

LACP 绑定配置已完成,所有接口现已启动并运行。让我们按照以下步骤配置绑定接口上的 VLAN 标记。

正如先决条件中所讨论的,以下是映射到相应以太网卡端口(em1p7p1)和网络交换机端口的 VLAN。

  • VLAN ID (221), VLAN N/W = 192.168.10.0/24
  • VLAN ID (331), VLAN N/W = 192.168.20.0/24

2a) 将 VLAN 221 配置到 Bond0

为 VLAN id 221 创建标记接口文件 /etc/sysconfig/network-scripts/ifcfg-bond0.221 并添加以下内容。

vi /etc/sysconfig/network-scripts/ifcfg-bond0.221

DEVICE=bond0.221
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.10.100
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
VLAN=yes
NM_CONTROLLED=no

2b) 将 VLAN 331 配置到 Bond0

为 VLAN id 331 创建标记接口文件 /etc/sysconfig/network-scripts/ifcfg-bond0.331 并添加以下内容。

vi /etc/sysconfig/network-scripts/ifcfg-bond0.331

DEVICE=bond0.331
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.20.100
NETMASK=255.255.255.0
GATEWAY=192.168.20.1
VLAN=yes
NM_CONTROLLED=no

重启网络服务

重启网络服务以启用绑定接口或使用 ifup 命令启动它们。

systemctl restart network

验证 VLAN 标记配置

最后使用 ip 命令 验证 VLAN 标记接口是否已配置并启动和运行。

是的,我可以看到 bondo.221@bond0bon0.331@bond0 有两个不同的 IP,并且能够通过 ssh 访问系统,没有任何问题。因此,VLAN 标记按预期工作。

结论

恭喜,你已经了解了如何在 RHEL 系统上通过 LACP 绑定配置 VLAN 标记,该系统监听两个 VLAN。VLAN 标记不限于两个 VLAN,支持多个 VLAN,你可以根据该 VLAN 的网络配置添加 VLAN 标记。

(题图:DA/2854516d-4d19-4008-a421-05f9a2a78368)


via: https://www.2daygeek.com/configure-vlan-tagging-over-network-bonding-rhel/

作者:Jayabal Thiyagarajan 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在某些场景中,我们希望在 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 命令查看标记后的接口状态:

tagged-interface-ip-command

现在我们可以使用下面的 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-address-tagged-nic

重启之后,上面所有通过 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 命令检验标记的接口是否已配置和启动,并且正在运行中:

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

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


via: https://www.linuxtechi.com/vlan-tagged-nic-ethernet-card-centos-rhel-servers/

作者:Pradeep Kumar 选题:lujun9972 译者:quinbyjoe 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出