我在不同的数据中心有两个远程 ESXi 服务器。我在这两个服务器上都安装了 2 个 VM pfsense,并使用带有 OpenVPN 的 site2site VPN 通过互联网连接 2 个子网 192.168.1.0/24 和 192.168.2.0/24。
我在这两个 ESXi 上有很多虚拟机,它们通过上述子网相互连接。除了一个之外,其他虚拟机都可以 ping 通。
情况如下:
Site A: 192.168.10.0/24
Site B: 192.168.20.0/24
Pfsense A: 192.168.10.1/24
Pfsense B: 192.168.20.1/24
VM A1: eth1 192.168.10.2/24 and eth0 1.1.1.1/32
VM A2: 192.168.10.3/24 (single IF with default GTW 192.168.10.1
VM B1: eth0 192.168.20.2/24 and eth1 2.2.2.2/32
VM A1 路由-n:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 11.11.11.11 0.0.0.0 UG 101 0 0 eth0
11.11.11.11 0.0.0.0 255.255.255.255 UH 100 0 0 eth0
1.1.1.1 0.0.0.0 255.255.255.255 UH 100 0 0 eth0
192.168.20.0 192.168.10.1 255.255.255.0 UG 100 0 0 eth1
192.168.10.0 0.0.0.0 255.255.255.0 U 100 0 0 eth1
VM B1路由-n:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 22.22.22.22 0.0.0.0 UG 101 0 0 eth1
22.22.22.22 0.0.0.0 255.255.255.255 UH 100 0 0 eth1
2.2.2.2 0.0.0.0 255.255.255.255 UH 100 0 0 eth1
192.168.10.0 192.168.20.1 255.255.255.0 UG 100 0 0 eth0
192.168.20.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
(11.11.11.11 和 22.22.22.22 是提供商提供的默认网关,我需要此配置才能从该 IP 进行远程连接)。
奇怪的是:
- 我可以从 B1 ping A1 和 A2。
- 我可以从 A2 ping 通 B1。
- 我无法从 A1 ping 通 B1。
在 pfSense 上的 tcpdump 上,从 A1 ping 到 B1,我注意到 A1 使用 1.1.1.1 作为 IP,而不是 192.168.10.2,而 B1 和 A2 使用 192.168.20.2 和 192.168.10.3:
pfSense A 上的 tcpdump,从 A1 ping pfSense A:
19:41:33.739531 IP 192.168.10.2 > 192.168.10.1: ICMP echo request, id 26186, seq 1, length 64
19:41:33.739565 IP 192.168.10.1 > 192.168.10.2: ICMP echo reply, id 26186, seq 1, length 64
pfSense A 上的 tcpdump,从 A1 ping pfSense B:
19:41:41.065664 IP 1.1.1.1 > 192.168.20.1: ICMP echo request, id 26193, seq 1, length 64
pfsense A 上的 tcpdump,从 A1 ping B1:
19:41:41.065664 IP 1.1.1.1 > 192.168.20.2: ICMP echo request, id 26193, seq 1, length 64
pfSense A 上的 tcpdump,从 A2 ping B1:
19:42:24.368952 IP 192.168.10.3 > 192.168.20.2: ICMP echo request, id 31618, seq 1, length 64
19:42:24.383237 IP 192.168.20.2 > 192.168.10.3: ICMP echo reply, id 31618, seq 1, length 64
pfsense B 上的 tcpdump,从 B1 ping A1:
19:46:05.538819 IP 192.168.20.2 > 192.168.10.2: ICMP echo request, id 12244, seq 4, length 64
19:46:05.552069 IP 192.168.10.2 > 192.168.20.2: ICMP echo reply, id 12244, seq 4, length 64
A1 和 B1 是两台带有网络管理器的 Centos 7.3。路由是用 nmcli 添加的。
为什么 B1 可以到达 A1,但 A1 却不能?它们的路线相同!
--编辑--我发现了问题:我的 A1 iptables 上有一条 SNAT 规则。我将 192.168.10.2 排除在转换之外,现在就可以正常工作了。