У меня два удаленных сервера ESXi в разных дата-центрах. На обоих я установил 2 виртуальных машины pfsense с site2site VPN с OpenVPN, чтобы подключить 2 подсети 192.168.1.0/24 и 192.168.2.0/24 через Интернет.
У меня много виртуальных машин на этих двух ESXi, подключенных друг к другу через указанные выше подсети. Пинговать друг друга могут все, кроме одного.
Вот такая ситуация:
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).
Странная вещь:
В tcpdump на pfsense при пинге с A1 на B1 я заметил, что A1 использует 1.1.1.1 в качестве IP вместо 192.168.10.2, а B1 и A2 используют 192.168.20.2 и 192.168.10.3:
tcpdump на pfsense A, ping pfsense A от A1:
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
tcpdump на pfsense A, ping pfsense B от A1:
19:41:41.065664 IP 1.1.1.1 > 192.168.20.1: ICMP echo request, id 26193, seq 1, length 64
tcpdump на pfsense A, пинг B1 от A1:
19:41:41.065664 IP 1.1.1.1 > 192.168.20.2: ICMP echo request, id 26193, seq 1, length 64
tcpdump на pfsense A, ping B1 от A2:
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
tcpdump на pfsense B, ping A1 от B1:
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 - нет? У них такой же маршрут!
- РЕДАКТИРОВАТЬ - Я обнаружил проблему: на моих iptables A1 было правило SNAT. Я исключил 192.168.10.2 из перевода, и теперь он работает.