![openvpn 和 LAN 之间的 pfsense tcp 连接断开](https://linux22.com/image/80386/openvpn%20%E5%92%8C%20LAN%20%E4%B9%8B%E9%97%B4%E7%9A%84%20pfsense%20tcp%20%E8%BF%9E%E6%8E%A5%E6%96%AD%E5%BC%80.png)
我正在尝试将 openvpn 客户端连接到内部 LAN,以便他们可以访问 http 服务器。 pfSense 以及我的 http 服务器都在我的家庭 proxmox 节点的虚拟机上运行。两者都通过一个简单的 Linux 桥连接,pfsense 充当 dhcp 服务器。
在 pfSense VM 上,我还配置了 openvpn,以便世界各地的客户端都可以连接到它。 (端口转发等...)
网络 pfSense LAN:10.44.2.0/24 (pfSense 10.44.2.254 gw) 网络 OpenVPN:10.44.3.0/24(服务器 10.44.3.1 不允许客户端到客户端)
所有路由都正常工作,我能够从 lan 到 vpn 或从 vpn 到 lan 进行 PING,两者都工作正常。只有 TCP 不起作用。
如果我尝试从 10.44.3.2 (VPN) [到 10.44.2.11 (LAN)] 访问 https 服务器,服务器的连接状态为“SYN_RECV”,客户端显示“SYN_SENT”。
据我所知,似乎第二步(SYN,ACK)失败了。我已经完全禁用了整个 pfSense 防火墙,但它不起作用。
之后,我记录网络流量:
服务器:
14:18:57.571985 IP 10.44.3.2.42956 > 10.44.2.11.http: Flags [S], seq 3192289577, win 29200, options [mss 1308,sackOK,TS val 3098827 ecr 0,nop,wscale 7], length 0
14:18:57.572006 IP 10.44.2.11.http > 10.44.3.2.42956: Flags [S.], seq 2421464031, ack 3192289578, win 28960, options [mss 1460,sackOK,TS val 68259688 ecr 3098827,nop,wscale 7], length 0
14:18:57.825934 IP 10.44.3.2.42958 > 10.44.2.11.http: Flags [S], seq 2213274578, win 29200, options [mss 1308,sackOK,TS val 3098889 ecr 0,nop,wscale 7], length 0
14:18:57.825952 IP 10.44.2.11.http > 10.44.3.2.42958: Flags [S.], seq 595037825, ack 2213274579, win 28960, options [mss 1460,sackOK,TS val 68259752 ecr 3098889,nop,wscale 7], length 0
. . . . .
客户:
15:18:57.567020 IP 10.44.3.2.42956 > 10.44.2.11.http: Flags [S], seq 3192289577, win 29200, options [mss 1460,sackOK,TS val 3098827 ecr 0,nop,wscale 7], length 0
15:18:57.570249 IP 10.44.2.11.http > 10.44.3.2.42956: Flags [S.], seq 2421464031, ack 3192289578, win 28960, options [mss 1308,sackOK,TS val 68259688 ecr 3098827,nop,wscale 7], length 0
15:18:57.817649 IP 10.44.3.2.42958 > 10.44.2.11.http: Flags [S], seq 2213274578, win 29200, options [mss 1460,sackOK,TS val 3098889 ecr 0,nop,wscale 7], length 0
15:18:57.835985 IP 10.44.2.11.http > 10.44.3.2.42958: Flags [S.], seq 595037825, ack 2213274579, win 28960, options [mss 1308,sackOK,TS val 68259752 ecr 3098889,nop,wscale 7], length 0
15:18:58.567001 IP 10.44.3.2.42956 > 10.44.2.11.http: Flags [S], seq 3192289577, win 29200, options [mss 1460,sackOK,TS val 3099077 ecr 0,nop,wscale 7], length 0
15:18:58.568639 IP 10.44.2.11.http > 10.44.3.2.42956: Flags [S.], seq 2421464031, ack 3192289578, win 28960, options [mss 1308,sackOK,TS val 68259938 ecr 3098827,nop,wscale 7], length 0
15:18:58.570778 IP 10.44.2.11.http > 10.44.3.2.42956: Flags [S.], seq 2421464031, ack 3192289578, win 28960, options [mss 1308,sackOK,TS val 68259938 ecr 3098827,nop,wscale 7], length 0
15:18:58.815006 IP 10.44.3.2.42958 > 10.44.2.11.http: Flags [S], seq 2213274578, win 29200, options [mss 1460,sackOK,TS val 3099139 ecr 0,nop,wscale 7], length 0
. . . .
看来,tcp 的第一步工作正常。之后,发送了 SYN、ACK,但我找不到 ACK 包。
正如我所说,路由没问题,因为 ping 正常。
有任何想法吗?!
答案1
我解决了将 pfsense 的网络接口从 VIRTIO 更改为 E1000 的问题。
Proxmox 的 VIRTIO 驱动程序似乎导致某些软件包丢失。
答案2
此问题与 pfSense 无关。
真正的原因是 Virtio 驱动程序上的硬件卸载似乎不受 BSD 支持或损坏。您无需切换回 E1000。
去 系统->高级->网络 设置标记:禁用硬件校验和卸载
保存设置后,通信立即开始 - 甚至不需要重新启动。