Proxmox双节点集群跨节点Linux Bridge连接OPNsense虚拟机与虚拟服务器问题
Proxmox双节点集群跨节点Linux Bridge连接OPNsense虚拟机与虚拟服务器问题
兄弟,我之前折腾双节点Proxmox集群的时候也卡过这个点!其实核心就是要让两个节点上的虚拟机都能接入同一个跨节点的二层网络——毕竟单节点的vmbr是本地专属的,跨节点自然没法互通。下面给你两种可行的方案,都是基于你已经熟悉的Linux Bridge(vmbr)来配置的:
方案一:借助物理交换机VLAN打通(适合有支持VLAN的交换机场景)
如果你的物理交换机支持VLAN trunk功能,这是最稳定的方案:
- 第一步:给两个Proxmox节点准备一条物理链路(可以用现有网线的VLAN,也可以单独拉一根线),把节点上的对应物理网卡(比如
enp4s0)接到交换机的trunk端口,并且允许你指定的VLAN(比如VLAN 10)通过。 - 第二步:在两个节点上配置完全相同的vmbr(比如叫vmbr1,作为OPNsense的LAN桥):
编辑节点的/etc/network/interfaces文件,添加如下配置:
注意:Node HLK上的配置要和DXL完全一致,只是管理IP可以设成auto vmbr1 iface vmbr1 inet static address 192.168.200.1/24 # 这个是Proxmox节点对该桥的管理IP,不用和OPNsense LAN同段 bridge-ports enp4s0.10 # 绑定到带VLAN标签的物理网卡接口 bridge-stp off bridge-fd 0 bridge-vlan-aware yes bridge-vids 10192.168.200.2/24避免冲突。 - 第三步:把OPNsense的LAN虚拟网卡绑定到Node DXL的vmbr1上,把HLK上的虚拟服务器网卡绑定到HLK的vmbr1上。这样两个虚拟机就处于同一个二层VLAN域,直接就能互通了。
方案二:用VXLAN隧道打通(无需额外物理链路/交换机支持)
如果没有支持VLAN的交换机,或者不想折腾物理网络,可以用VXLAN在两个节点之间建立二层隧道:
- 第一步:在两个节点上创建VXLAN接口(比如vxlan10):
Node DXL的/etc/network/interfaces配置:
Node HLK的配置把local和remote IP反过来:auto vxlan10 iface vxlan10 inet manual vxlan-id 10 vxlan-local-tunnelip 10.0.0.10 # 替换成Node DXL的集群通信IP(比如你集群里的节点IP) vxlan-remote-tunnelip 10.0.0.20 # 替换成Node HLK的集群通信IPauto vxlan10 iface vxlan10 inet manual vxlan-id 10 vxlan-local-tunnelip 10.0.0.20 vxlan-remote-tunnelip 10.0.0.10 - 第二步:在两个节点上创建绑定VXLAN的vmbr1:
auto vmbr1 iface vmbr1 inet static address 192.168.200.1/24 # DXL用这个,HLK用192.168.200.2/24 bridge-ports vxlan10 bridge-stp off bridge-fd 0 - 第三步:同样把OPNsense的LAN网卡绑到DXL的vmbr1,虚拟服务器网卡绑到HLK的vmbr1,通过VXLAN隧道,两个节点的vmbr1就形成了一个跨节点的二层网络。
最后验证连通性
给虚拟服务器设置和OPNsense LAN同段的IP(比如OPNsense LAN是192.168.10.1/24,虚拟服务器设192.168.10.10/24,网关指向192.168.10.1),然后在虚拟服务器上ping OPNsense的LAN IP:
- 如果能通,说明网络已经打通;
- 如果不通,检查节点之间的VXLAN/VLAN链路是否正常,vmbr配置有没有写错,同时别忘了检查Proxmox节点的防火墙和OPNsense的防火墙有没有拦截ICMP或者相关流量。
备注:内容来源于stack exchange,提问作者AdderoYuu
相关产品推荐
相关产品推荐

