我正在构建一个虚拟主机虚拟网络,该网络通过 pfSense NAT 到互联网。由于某种原因,虚拟主机无法与外界建立连接,但较低层的操作(如ping
和)traceroute
可以正常运行。
堆栈
- 物理机是 Asrock Intel J4105-ITX 主板,带有 2 个 NIC(其中 1 个是 USB 加密狗)。
- Proxmox 6.2-15 作为虚拟机管理程序。
- pfSense:
VM 连接了 3 个 Linux 桥:
vmbr0
- 绑定到连接到本地 /24 子网的 NIC1,网关为动态公共 IPvmbr1
- 仅适用于虚拟主机的虚拟 192.168.111.0/24 子网vmbr2
- 绑定到 NIC2,该 NIC2 连接到具有静态公共 IP 的 /24 WAN
vmbr0
分配给和的接口vmbr2
都设置了网关,因此被视为 WAN 类型接口出站 NAT 模式为自动
vLAN 接口仅有一条防火墙规则:允许来自源 vLAN 网络的所有数据包
- 其他虚拟主机
- 使用 vmbr1 作为其网络设备,并使用该接口的 pfSense ip(192.168.111.1)作为其网关。
- 我测试了 Debian 10 LXC 容器和 Manjaro XFCE 最小 VM。它们表现出相同的网络问题
(双 WAN 设置令人困惑的原因是,同一子网中的其他设备vmbr0
最终应该能够本地连接,而无需通过互联网路由。但这个问题与此无关)
问题
连接到vmbr1
Linux Bridge 的虚拟机和 LXC 容器的传出连接具有功能性的低级网络,但无法建立连接。这意味着:
ping 8.8.8.8
✅ 有效ping pfsense.org
✅ 有效traceroute pfsense.org
✅ 有效curl pfsense.org
❌ 连接超时
观察结果
- 很确定问题出在我的 pfSense 配置中。如果我绕过 pfSense,将虚拟主机直接放在其他桥接器上,网络就可以完美运行。
- 我尝试完全禁用 pfSense 防火墙(数据包过滤),但问题仍然存在。
- 我尝试更改默认网关
- pfSense 本身具有完整的连接性,能够
curl
等等 - 虽然 DNS 在
vmbr1
LAN 内工作,但延迟过高。不确定是否相关 - vhost->internet 连接的状态表
CLOSED:SYN_SENT
在状态列中说明。
我不明白那里发生了什么。现在我觉得我已经阅读了大部分 pfSense 手册,在互联网上搜索了所有内容,并尝试了所有我能想到的方法。而且我之前也设置过类似的系统,通常它应该只与自动出站 NAT 配合使用......?
我希望有人能有个主意,因为这快让我抓狂了
答案1
解决方案是Disable hardware checksum offload
在 pfSense 高级/网络设置中启用该选项。