我有两个运行 Ubuntu 22.04 Server 的工作站,使用 netplan 进行网络设备管理。
enp0s25
第一个工作站有 5 个 NIC。我认为只有两个 NIC和 ens1 与之相关。以下是该工作站的 netplan 配置:
network:
renderer: networkd
version: 2
ethernets:
enp0s25:
dhcp4: false
dhcp6: false
link-local: []
ignore-carrier: true
enp10s0f0:
dhcp4: false
dhcp6: false
link-local: []
ignore-carrier: true
enp10s0f1:
dhcp4: false
dhcp6: false
link-local: []
ignore-carrier: true
ens1:
dhcp4: false
dhcp6: false
link-local: []
ignore-carrier: true
vlans:
vlan10:
accept-ra: no
id: 10
link: enp0s25
bridges:
br0:
dhcp4: true
link-local: []
interfaces:
- enp0s25
br1:
dhcp4: false
dhcp6: false
link-local: []
addresses: [10.233.20.90/23]
interfaces:
- vlan10
- ens1
parameters:
forward-delay: 0
stp: true
br2:
dhcp4: false
dhcp6: false
link-local: []
interfaces: [enp10s0f0]
br3:
dhcp4: false
dhcp6: false
link-local: []
interfaces: [enp10s0f1]
我创建了vlan10
连接到物理接口enp0s25
的 VLAN,该接口的 ID 为 10。我已将 和ens1
都连接vlan10
到br1
。我已将一大堆设备插入到通过 连接的物理网络ens1
。我使用 libvirt 将一堆虚拟机连接到br1
。物理设备和虚拟机可以正常通信。
我的理论是,进入 ens1 的未标记第 2 层流量最终将在 enp0s25 上被标记为 vlan 10.然而我可能全都错了。
我尝试使用tcpdump
在主机上运行来确认这一点
$ sudo tcpdump -i enp0s25 -n 'vlan 10'
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on enp0s25, link-type EN10MB (Ethernet), snapshot length 262144 bytes
23:45:01.873478 90:9a:4a:31:6d:58 > ff:ff:ff:ff:ff:ff, RRCP-0x25 query
23:45:02.416923 ARP, Request who-has 10.233.20.199 tell 10.233.20.205, length 46
23:45:02.871227 90:9a:4a:31:6d:58 > ff:ff:ff:ff:ff:ff, RRCP-0x25 query
23:45:03.417030 ARP, Request who-has 10.233.20.199 tell 10.233.20.205, length 46
23:45:03.745380 ARP, Request who-has 10.233.21.24 tell 10.233.20.90, length 28
23:45:03.872080 90:9a:4a:31:6d:58 > ff:ff:ff:ff:ff:ff, RRCP-0x25 query
看起来这可行吗?
我的第二个工作站(类似的硬件)有一个这样的网络计划
network:
renderer: networkd
version: 2
ethernets:
enp0s25:
dhcp4: false
dhcp6: false
link-local: []
ignore-carrier: true
vlans:
vlan10:
accept-ra: no
id: 10
link: enp0s25
vlan100:
accept-ra: no
id: 100
link: enp0s25
bridges:
br0:
dhcp4: true
dhcp6: false
link-local: []
interfaces:
- enp0s25
br10:
dhcp4: true
dhcp6: false
link-local: []
interfaces:
- vlan10
br100:
dhcp4: false
dhcp6: false
link-local: []
interfaces:
- vlan100
我的假设是,我可以在第二个工作站上看到 VLAN 10 流量。运行 sudo tcpdump -n -i enp0s25 'vlan 10'
并没有显示我所期望的内容
$ sudo tcpdump -n -i enp0s25 'vlan 10'
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on enp0s25, link-type EN10MB (Ethernet), snapshot length 262144 bytes
23:50:54.153304 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 92:e7:5b:f0:b0:7a, length 292
DHCP 流量只是本地机器尝试获取 IP,因为我要求 netplan 在桥上运行 DHCP。我根本没看到这台机器上出现 VLAN 标记帧。
我的设置有问题吗?我还需要做些什么才能让它正常工作吗?
更新:我将笔记本电脑的以太网端口直接插入第一个工作站。我看到tcpdump
在 vlan 10 上使用的流量与在主机上运行的流量相同。那么我的网络交换机是否可能以某种方式不传递 802.1Q 流量?我所有的交换机都是“哑交换机”,我认为它们不关心 802.1Q 字段。