Есть 2 локальные сети 192.168.1.0 (сеть 1) 192.168.100.0 (сеть 2) , между ними установлен шлюз (устройство 3) на RH7.3: eth0=192.168.1.2 eth1=192.168.100.2
Заметил такую вещь: при обращении компьютера (устройство 4) из сети 192.168.1.0 к компьютеру (5) из сети 192.168.100.0 icmp-запрос(ping) доходит успешно до любого компьютера из сети 2. В пределах правил iptables, естественно.
Если же компьютер (5) из сети 2 не имеет в свойстах сети адреса шлюза (3), то icmp-ответ, не найдя маршрута не возвращается компьютеру(4) сети 1.
Здесь все понятно.
Но, если для обращений к компьютеру (5) прописать правило NAT:
iptables -A POSTROUTING -i eth1 -p tcp -s 192.168.1.1 -d 192.168.100.1 -j SNAT 192.168.100.2,
то icmp-ответ успешно возвращается компьютеру 4.
Где 192.168.100.2=eth1 шлюза.
Icmp-запрос после преобразования NAT меняет адрес на адрес 192.168.100.2
Icmp-ответ возвращается шлюзу и дальше каким-то непостижимым мне способом доставляется на адрес 192.168.1.1 компьютеру 4.
Как пакет (шлюз) понимает, что icmp-ответ предназначен для компьютера 4 а не для шлюза (3)?
Такой вопрос.
|