在某些情况下,我们需要在linux服务器(centos/rhel)上使用同一网卡分配来自不同vlan的多个ip地址。这种需求可以通过启用vlan标记接口来满足,但首先需要确保交换机上已经配置了多个vlan。
假设我们拥有一台Linux服务器,配备了两个以太网卡:ens33和ens38。其中,ens33用于数据流量,而ens38用于控制和管理流量。我们计划在数据流量的网卡上分配多个来自不同VLAN的IP地址。
假设从交换机连接到服务器数据流量网卡的端口已经被配置为Trunk,并且映射了多个VLAN到该端口。以下是映射到数据流量网卡的VLAN:
- VLAN ID 200,子网为172.168.10.0/24
- VLAN ID 300,子网为172.168.20.0/24
在CentOS 7/RHEL 7/CentOS 8/RHEL 8系统上使用VLAN标记接口,必须加载内核模块8021q。
使用以下命令加载内核模块“8021q”:
# 首先列出模块,确认没有8021q模块。 [root@localhost ~]# lsmod | grep -i 8021q加载模块
[root@localhost ~]# modprobe --first-time 8021q
再次列出模块,确认已加载8021q模块。
[root@localhost ~]# lsmod | grep -i 8021q 8021q 33080 0 garp 14384 1 8021q mrp 18542 1 8021q
使用modinfo命令列出8021q模块的信息:
[root@localhost ~]# modinfo 8021q

接下来,使用ip命令在ens33网卡上创建VLAN 200和VLAN 300:
# 创建VLAN 200和VLAN 300 [root@localhost ~]# ip link add link ens33 name ens33.200 type vlan id 200 [root@localhost ~]# ip link add link ens33 name ens33.300 type vlan id 300

创建后,您会发现ens33.200和ens33.300的链路状态为DOWN。启用它们:
# 启用VLAN 200和VLAN 300 [root@localhost ~]# ip link set ens33.200 up [root@localhost ~]# ip link set ens33.300 up

然后为这两个VLAN分配IP地址:
[root@localhost ~]# ip address add 172.168.10.51/24 dev ens33.200 [root@localhost ~]# ip address add 172.168.20.51/24 dev ens33.300

请注意,使用ip address命令添加的VLAN和地址在系统重启后不会保留。我们需要将这些配置保存到配置文件中。
首先,修改ifcfg-ens33配置文件:
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet BOOTPROTO=none DEVICE=ens33 ONBOOT=yes
接下来,创建ifcfg-ens33.200配置文件:
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33.200 DEVICE=ens33.200 BOOTPROTO=none ONBOOT=yes IPADDR=172.168.10.51 PREFIX=24 NETWORK=172.168.10.0 VLAN=yes
然后,创建ifcfg-ens33.300配置文件:
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33.300 DEVICE=ens33.300 BOOTPROTO=none ONBOOT=yes IPADDR=172.168.20.51 PREFIX=24 NETWORK=172.168.20.0 VLAN=yes
编辑完配置文件后,重启网络服务:
[root@localhost ~]# systemctl restart network

重启后,VLAN 200和VLAN 300的信息将不会丢失。










