Proxmox主机与其上虚拟机共用同一存储网络连接却探测到不同网络设备的问题求助
我在搭建新的Proxmox主机及上面的虚拟机时遇到了一个奇怪的问题:我想把虚拟机连接到我们专用的存储网络(运行在独立交换机上),但出现了异常。
网络环境配置
- 所有连接到该交换机的设备都在
192.168.0.0/24网段 - Proxmox主机通过10GB光纤连接到交换机的两个端口
- 其他多台物理机和其他Proxmox主机上的虚拟机也连接到该交换机:物理机通过光纤直连交换机端口,虚拟机则通过其他Proxmox主机上的虚拟网桥连接(这些Proxmox主机本身也是通过光纤直连交换机的物理机)
- Proxmox主机上的两个10GB网卡在Proxmox中配置为MTU 9000的绑定(bond),并作为vmbr1的底层接口(vmbr1的MTU也设置为9000)
- vmbr1作为虚拟机的interface1(interface0是Proxmox的管理网络,运行在另一个交换机上,带宽1GB)
- Proxmox主机在vmbr1上的IP为
192.168.0.122 - Proxmox主机上所有网卡、绑定和网桥的“VLAN aware”都设置为no
- 虚拟机识别vmbr1为名为ens19的接口
- 虚拟机通过
/etc/network/interfaces给ens19配置了IP192.168.0.123,并设置MTU为9000 - 在虚拟机上执行
ip a,显示IP .123已分配,MTU 9000已生效 - 在Proxmox主机上执行
ip a,显示IP .122已分配,MTU 9000已生效 - 该网段共有14台其他设备/虚拟机:
.3/10/11/14/20/31/35/41/42/101/102/231/232/254(其中.10是带NFS共享的存储服务器,.254是交换机)
异常症状
现在问题来了:Proxmox主机和虚拟机各自只能访问这14台设备中的不同子集:
- 在虚拟机中执行
showmount -e 192.168.0.10可以正常列出存储服务器的共享,但在Proxmox主机上执行该命令会超时 - 在虚拟机上执行
nmap -sn 192.168.0.0/24,探测到以下在线主机:.10/11/20/31/41/102/122/123 - 在Proxmox主机上执行同样的nmap命令,探测到的在线主机是:
.3/14/35/42/101/122/123/231/232/254
两个设备探测到的在线主机集合完全不同!只有Proxmox主机和虚拟机自身在两个结果中都存在。
而且,即使是nmap显示在线的主机,也只有部分能响应ping请求——不管是在Proxmox主机还是虚拟机上都是如此。所有设备/虚拟机都没有配置防火墙(iptables)。
该网段内的其他所有物理机和虚拟机(除了本次有问题的Proxmox主机和虚拟机)都能互相ping通,没有任何问题。
一开始我以为是交换机物理端口的VLAN配置有问题,但为什么Proxmox主机和虚拟机(显然连接到同一个物理端口)会探测到不同的主机呢?
补充说明:在Proxmox管理网段(10.0.10.0/24)中,不管是Proxmox主机还是虚拟机,nmap都能探测到该网段的所有主机,ping也完全正常。
我现在有点摸不着头脑,有没有人能给点排查思路?
2024-03-21 更新
检查了交换机(Aruba 3810M)的配置,信息如下:
- 交换机有16个SPF+端口
- 配置了2个VLAN:“DEFAULT”(VLAN 1)和“STORAGE”(VLAN 2)(在“Switch Configuration -> VLAN -> VLAN Names”下)
- 在“Switch Configuration -> VLAN -> VLAN Support”中,主VLAN设置为“DEFAULT”
- 在“Switch Configuration -> VLAN -> VLAN Port Assignment”下,所有16个端口都被设置为“STORAGE” VLAN的untagged端口(“DEFAULT” VLAN下所有端口都显示“No”)
- 在“Switch Configuration -> Internet (IP) Service”下,“DEFAULT” VLAN对应网段
10.0.10.0/24,“STORAGE” VLAN对应192.168.0.0/24 - 在“Switch Configuration -> Port/Trunk Settings”下,所有16个端口都显示“enabled”,“mode -> auto”,“Flow Ctrl -> Disable”
看起来这些配置都很正常?
不过有两个交换机配置点可能和问题有关(我对网络知识了解有限,只是猜测):
在“Switch Configuration -> System Information”中,“Jumbo Max Frame Size”显示为9216,“Jumbo IP MTU”显示为9198
Proxmox和所有主机上,连接到该交换机的接口MTU都设置为9000,这个值和交换机的9198不一致会不会有问题?在“Switch Configuration -> Port/Trunk Settings”中,端口1-8被分配到“Groups”,类型为“LACP”;而端口9-16的“Group”和“Type”为空
据我理解,LACP是用来聚合多个端口以实现带宽叠加的?
这个配置其实是合理的,因为每组包含两个端口,分别连接到同一台服务器:
- 端口1+2属于“Trk1”组,连接到IP尾号为.10的物理服务器
- 端口3+4属于“Trk2”组,连接到IP尾号为.20的物理服务器
- 端口5+6属于“Trk3”组,连接到IP尾号为.11的物理服务器
- 端口7+8属于“Trk4”组,连接到本次有问题的Proxmox主机(IP尾号.12)
其他未分组的端口连接的服务器如下:
- 端口9+10连接到IP尾号为.232的物理服务器
- 端口11连接到IP尾号为.101的物理服务器
- 端口12连接到IP尾号为.102的物理服务器
- 端口13+14连接到IP尾号为.231的物理服务器(这是另一台PVE主机,上面托管着IP为.3/14/31/35/41/42的虚拟机)
- 端口15+16未连接线缆
但这些信息不仅没帮我解决问题,反而让问题更奇怪了:
从之前的nmap扫描结果可以看到,有问题的PVE主机(.12)和它的虚拟机(.122)竟然能探测到同一台其他PVE主机(.231)上的不同虚拟机——而这台.231主机是通过交换机的同一组端口(13+14)连接的。
比如:虚拟机.41只能被.122探测到,而虚拟机.42只能被.12探测到。
我之前以为是VLAN的问题,但检查交换机后发现不是。现在完全搞不懂为什么PVE主机和它的虚拟机对网络的“视野”会不一样。除了VLAN和物理端口,还有什么地方会把流量分隔开?这个网段里没有防火墙啊。
备注:内容来源于stack exchange,提问作者heeeresjohnny




