linux网卡配置后发出带vlan标签的报文

先看常见的网卡配置文件(没vlan)

# cat /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE=Ethernet

BOOTPROTO=none

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

NAME=eth0

UUID=04cb4fa6-f820-45c0-b847-df94e9628bc5

DEVICE=eth0

ONBOOT=yes

GATEWAY=192.168.1.254

IPADDR=192.168.1.100

NETMASK=255.255.255.0

这样的主机网卡将连接到一个交换机的Access网口上 ,主机网卡上的配置不需要考虑底层的网络,即主机网卡配置不考虑vlan,交换机上将给这个网卡发出报文打上标签。

KVM场景下带有vlan的网卡

下面组网图中一个部署KVM hypervisor的主机网卡连接到交换机上带有3个vlan的trunk网口上,第一个vlan是trunk native vlan 100,第2个和第3个 vlan200和300,通过这两个网口会携带802.1Q tag,因此需要在主机上配置并识别vlan。

首先要保证802.1Q内核模块加载成功。如果配置vlan子接口,实际上该模块是自动加载的。

# lsmod | grep 8021q

# modprobe 8021q

# lsmod | grep 8021q

8021q          33208      0

garp              14384      1  8021q

mrp              18542      1  8021q

像大多数网络配置一样,需要在/etc/sysconfig/network-scripts下相应的网卡配置文件中设置vlan。不同于其他网卡配置,网卡名字是父网卡名称+vlanID,比如eth0.200,这一设置将vlan和对应父网卡相关联,另外网卡配置文件中VLAN=yes指令将配置出一个vlan子接口。

基于上文的eth0网卡,针对vlan200和vlan300,配置相应子接口。

# cat /etc/sysconfig/network-scripts/ifcfg-eth0.200

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=none

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

NAME=eth0.200

UUID=04cb4fa6-f820-45c0-b847-df94e9628bc5

DEVICE=eth0.200

ONBOOT=yes

IPADDR=192.168.2.100

NETMASK=255.255.255.0

VLAN=yes

# cat /etc/sysconfig/network-scripts/ifcfg-eth0.300

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=none

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

NAME=eth0.300

UUID=04cb4fa6-f820-45c0-b847-df94e9628bc5

DEVICE=eth0.300

ONBOOT=yes

IPADDR=192.168.3.100

NETMASK=255.255.255.0

VLAN=yes

vlan配置后,需要重启网络服务以激活子接口

# systemctl restart network

# ip --br link show

lo          UNKNOWN    00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>

eth0        UP        52:54:00:82:d6:6e <BROADCAST,MULTICAST,UP,LOWER_UP>

eth0.200@eth0 UP        52:54:00:82:d6:6e <BROADCAST,MULTICAST,UP,LOWER_UP>

eth0.300@eth0 UP        52:54:00:82:d6:6e <BROADCAST,MULTICAST,UP,LOWER_UP>

# ip --br addr sh

lo          UNKNOWN    127.0.0.1/8 ::1/128

eth0        UP        192.168.1.100/24 fe80::5054:ff:fe82:d66e/64

eth0.200@eth0 UP        192.168.2.100/24 fe80::5054:ff:fe82:d66e/64

eth0.300@eth0 UP        192.168.3.100/24 fe80::5054:ff:fe82:d66e/64

以上两个子接口eth0.200 and eth0.300,任何从这些子接口上发出的包packets将会打上相应的vlan。

抓个包可以看到报文中802.1Q field,就是子接口中相应的vlan 200配置:

总结

1. 网卡都不配置vlan,怎么上通过交换机通信,至少连接到配置Access vlan的交换机的网口上。报文到交换机上打上Access vlan的标签。

2. 打了vlan标签的网卡,连接到交换机上配置trunk vlan的网口,报文在交换机trunk vlan范围内则通过。

3. 打了vlan标签的网卡,要注意连接到交换机上的网口不能配置trunk native vlan和网卡上vlan的一模一样,这样报文从主机到交换机没问题,在trunk vlan范围内可以进入交换机,但报文从交换机出去要返回到主机上时会被剥离vlan id而导致单通。

4. 如果一张网卡即做多个vlan又有子接口不做vlan的,不打vlan标签的子接口所连接的交换机要配置trunk native vlan,还要配置trunk vlan。

参考

How to configure a VLAN in Linux

https://www.redhat.com/sysadmin/vlans-configuration

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、Linux Bridge网桥管理 网络虚拟化是虚拟化技术中最复杂的部分,也是非常重要的资源。第一节中我们创建了...
    WickJohn阅读 1,300评论 0 1
  • vlan(2层链路层) vlan将一个交换机分成多个交换机各个vlan之间无法互通image.png 下载命令 y...
    余带盐阅读 720评论 0 0
  • 拓扑图 从图中可以看出宿主机网卡做相当于交换机的端口eth1,并虚拟出两个子端口eth1.100和eth1.200...
    yhyok阅读 1,788评论 0 49
  • 目的 linux用于在同一个网口下跑多个 vlan,同时配置多个网段的地址,实现类似交换机trunk口功能 准备 ...
    mykgzy阅读 3,312评论 0 0
  • --week09--运维基础网络知识 NA --- 网络助手级别(6天) NP --- 网络专业级别(4个部分...
    亮仔_c1b5阅读 688评论 0 6

友情链接更多精彩内容