У меня следующая настройка NAT:
+--------------+ +-----------------------+ +-------------------+
| | | | | |
| | | | | |
| PC 1 | | PC 2 (NAT) | | PC 3 |
| 10.0.0.3 +-------+ +-----+ 10.0.0.4 |
| | | | | (NAT 172.24.4.2) |
| | | | | |
+--------------+ +-----------------------+ +-------------------+
В то время как PC2 будет выполнять NAT так, что 10.0.0.4 будет преобразован в 172.24.4.2 во время предварительной маршрутизации:
-A PREROUTING -d 172.24.4.2/32 -j DNAT --to-destination 10.0.0.4
Когда я пытаюсь выполнить эхо-запрос с ПК1 на ПК3 с IP-адресом назначения 172.24.4.2. Каким-то образом пакет не выполняет для меня DNAT.
Вот что я запечатлел на ПК3:
10:15:41.017632 IP 10.0.0.3 > 172.24.4.2: ICMP echo request, id 8705, seq 0, length 64
Он отлично работает, если я изменю IP-адрес ПК3 на другую подсеть.
Кто-нибудь знает почему?
10.0.0.4 будет переведен на 172.24.4.2 во время предварительной маршрутизации
Указанное вами правило действует с точностью до наоборот. Он должен переводить адрес назначения 172.24.4.2
в пакете 10.0.0.4
.
Это снимок, который вы должны увидеть на интерфейсе ПК1 на ПК2, потому что tcpdump
показывает пакеты в проводе до любой обработки стеком TCP.
Вы должны проверить захват на интерфейсе, обращенном к PC3. Вам также необходимо проверить маршрутизацию на ПК2, чтобы 172.24.4.2
адрес маршрутизируется правильно.