我有一个这样的小型网络:
我有一个用于将我的服务器连接到 WAN 的 Pfsense,它们使用来自 LAN -> WAN 的 NAT。
我有一个 OpenVPN 服务器,它使用 TAP 允许远程工作人员与服务器放在同一个 LAN 网络上。
- 它们通过 WAN IP 连接到 OVPN 接口。
- LAN 接口还作为服务器获取 Internet 连接的网关,IP 为 10.25.255.254
- OVPN 接口和 LAN 接口在 BR0 中桥接
- 服务器 A 的 IP 为 10.25.255.1 并且能够连接互联网
- 客户端 A 通过 VPN 连接,并在其 TAP 接口 10.25.24.1 上分配了一个 IP 地址(我在 10.25.0.0/16 中为 VPN 客户端保留了 /24)
- 防火墙目前允许任意连接 OVPN 到 LAN,反之亦然
目前,当我连接时,客户端的所有路由似乎都很好:
Destination Gateway Genmask Flags Metric Ref Use Iface
300.300.300.300 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.25.0.0 10.25.255.254 255.255.0.0 UG 0 0 0 tap0
10.25.0.0 0.0.0.0 255.255.0.0 U 0 0 0 tap0
0.0.0.0 300.300.300.300 0.0.0.0 UG 0 0 0 eth0
我可以ping LAN接口:
root@server:# ping 10.25.255.254
PING 10.25.255.254 (10.25.255.254) 56(84) bytes of data.
64 bytes from 10.25.255.254: icmp_req=1 ttl=64 time=7.65 ms
64 bytes from 10.25.255.254: icmp_req=2 ttl=64 time=7.49 ms
64 bytes from 10.25.255.254: icmp_req=3 ttl=64 time=7.69 ms
64 bytes from 10.25.255.254: icmp_req=4 ttl=64 time=7.31 ms
64 bytes from 10.25.255.254: icmp_req=5 ttl=64 time=7.52 ms
64 bytes from 10.25.255.254: icmp_req=6 ttl=64 time=7.42 ms
但我无法通过 LAN 接口 ping:
root@server:# ping 10.25.255.1
PING 10.25.255.1 (10.25.255.1) 56(84) bytes of data.
From 10.25.255.254: icmp_seq=1 Redirect Host(New nexthop: 10.25.255.1)
From 10.25.255.254: icmp_seq=2 Redirect Host(New nexthop: 10.25.255.1)
我在我的 em1 接口(IP 为 10.25.255.254 的 LAN 接口)上运行了一个 tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on em1, link-type EN10MB (Ethernet), capture size 96 bytes
08:21:13.449222 IP 10.25.24.1 > 10.25.255.1: ICMP echo request, id 23623, seq 10, length 64
08:21:13.458211 ARP, Request who-has 10.25.255.1 tell 10.25.24.1, length 28
08:21:14.450541 IP 10.25.24.1 > 10.25.255.1: ICMP echo request, id 23623, seq 11, length 64
08:21:14.458431 ARP, Request who-has 10.25.255.1 tell 10.25.24.1, length 28
08:21:15.451794 IP 10.25.24.1 > 10.25.255.1: ICMP echo request, id 23623, seq 12, length 64
08:21:15.458530 ARP, Request who-has 10.25.255.1 tell 10.25.24.1, length 28
08:21:16.453203 IP 10.25.24.1 > 10.25.255.1: ICMP echo request, id 23623, seq 13, length 64
所以流量到达 LAN 接口,它也被传递到主机和主机回复。但是流量不会放在 LAN 接口上。
问题不在于 openvpn 或 pfsense 设备,而在于 VMWare vSwitch。如果您在 VMWare 中运行 pfsense,您应该将与您的 pfsense 网络关联的 vSwitch“混杂模式”从拒绝更改为接受。如果您不这样做,那么 OpenVPN 桥接客户端将看到的唯一主机是 pfsense 服务器本身。
防火墙上还有一条隐式规则,在 UI 上是看不到的。您需要仔细检查 PF 日志并手动禁用该规则。
谢谢卢卡斯,你几乎为我提供了解决方案。我已经在我的 vSwitch 上设置了混杂模式,但您启发我查看其他两个 VMWare ESXi 6.5 vSwitch安全设置。 允许伪造传输起到了作用,并且 ping 开始在远程客户端和 lan 节点之间传输完整的电路。
OMFG,谢谢,我一直在努力解决这个问题几个小时,试图弄清楚为什么我的桥接 VPN 可以 ping 网关,但不能 ping LAN 内的主机。事实证明,我也在混杂模式和禁用伪造传输的 ESXi 主机上运行 Pfsense!启用两者都解决了问题!