2023年12月20日

技术教程 如何在AlmaLinux 9 / RockyLinux 9上配置VLAN

作者 TheWhiteDog9487

事情是这样的。

这几周的计算机网络课上,老师要我们用两台Linux虚拟机搓一个VLAN出来,然后tcpdump+Wireshark看一下IEEE 802.1Q的报文。

老师使用的方案是CentOS6+ifconfig+vconfig。
我一看,好家伙,CentOS6都冒出来了。
这哪是上课啊,这根本就是考古。
我不能接受。
并且哈,在Ubuntu中,ifconfig和vconfig全都被弃用了,取而代之的是ip-xxxx,也就是iproute2。

OK,开始说正事。
演示环境是两台虚拟机,我安装的是AlmaLinux 9 和 RockyLinux 9
宿主操作系统是Windows 11 23H2 家庭中文版
虚拟化软件是VMware Workstation Pro 17.5
虚拟机网络状态是桥接,NAT理论可行但未测试

首先在AlmaLinux上进行操作。
我们总共需要:

  1. 创建一个设置了VLAN ID并且绑定在桥接网卡下的虚拟网卡
  2. 给新的虚拟网卡加IP
  3. 把新网卡的状态从down设置到up

听起来很简单,实际上确实很简单。
但是,这个过程中有个天坑,等下会讲。

不多说,直接上命令:

ip link add link <物理网卡名> name <新虚拟网卡的名称> type vlan id <设置的VLAN ID>
ip address add <IP地址,CIDR格式> dev <新虚拟网卡的名称>
ip link set <新虚拟网卡的名称> up

所以:

AlmaLinux:

ip link add link ens160 name VLAN type vlan id 100
ip address add 192.168.100.1/24 dev VLAN
ip link set VLAN up

RockyLinux:

ip link add link ens160 name VLAN type vlan id 100
ip address add 192.168.100.2/24 dev VLAN
ip link set VLAN up

然后在AlmaLinux上Ping一下192.168.100.2。
如果不出意外的话,应该是有回应的:

[root@VirtualAlma ~]# ping 192.168.100.2
PING 192.168.100.2 (192.168.100.2) 56(84) 比特的数据。
64 比特,来自 192.168.100.2: icmp_seq=1 ttl=64 时间=0.809 毫秒
64 比特,来自 192.168.100.2: icmp_seq=2 ttl=64 时间=0.680 毫秒
64 比特,来自 192.168.100.2: icmp_seq=3 ttl=64 时间=0.556 毫秒
64 比特,来自 192.168.100.2: icmp_seq=4 ttl=64 时间=0.500 毫秒
64 比特,来自 192.168.100.2: icmp_seq=5 ttl=64 时间=0.587 毫秒
64 比特,来自 192.168.100.2: icmp_seq=6 ttl=64 时间=0.626 毫秒
^C
--- 192.168.100.2 ping 统计 ---
已发送 6 个包, 已接收 6 个包, 0% packet loss, time 5119ms
rtt min/avg/max/mdev = 0.500/0.626/0.809/0.098 ms

OK,能Ping通,那么Wireshark启动!

欸,问题来了,我该让Wireshark监听哪个接口呢?
有人说,刚才加的是名字叫做VLAN的虚拟接口,只有这个接口才打了VLAN ID,所以肯定监听它。

那我们来试试看。
我会在监听的同时Ping对方,然后给你们看捕获的报文。

看红框里的部分。
我的1Q报文呢?上哪去了?

这就是一个坑。
不要监听虚拟接口,监听物理接口才能看到报文。

那当然是轻松秒杀。