LINUX.ORG.RU
ФорумAdmin

Не работает SNAT


0

1

Здравствуйте. Есть шлюз 192.168.0.1, в правилах которого написано:

iptables -I FORWARD 1 -p tcp --dport 80 -s 192.168.3.161 -j ACCEPT

iptables -t nat -A PREROUTING -p tcp --dport 80 -s 192.168.3.161 -j DNAT --to-destination 192.168.0.2:80

на 192.168.0.2 прозрачный Squid слушает 80-й порт, в iptables написано:

iptables -t nat -A POSTROUTING -p tcp --dport 80 -d 192.168.3.161 -j SNAT --to-source 192.168.0.1

Внимание вопрос - почему tcpdump говорит:

IP 192.168.0.2.http > 192.168.3.161.61180

В iptables счётчик правила с SNAT по нулям. Почему не работает правило, и соответственно нет инета на 192.168.3.161?

В PREROUTING уже сработало DNAT --to-destination 192.168.0.2
Соответственно, в POSTROUTING не сработает условие -d 192.168.3.161 и SNAT не произведётся. В 192.168.0.2 пакет попадает с обратным адресом 192.168.3.161. Squid отвечает по этому адресу

IP 192.168.0.2.http > 192.168.3.161.61180

NightSpamer ()
Ответ на: комментарий от NightSpamer

DNAT и SNAT выполняются на разных серверах. Именно потому что Squid отвечает адресу 192.168.3.161 я и пытаюсь делать SNAT, чтобы клиент получал ответ от сервера к которому отправлен запрос. В моём случае соединение дропается.

aptypk ()
Ответ на: комментарий от aptypk

Так без необходимости не делается. Пакеты должны возвращаться тем-же путём, каким пришли.

А фильтр не срабатывает т.к. написано, что

--dport 80 -d 192.168.3.161

но

IP 192.168.0.2.http > 192.168.3.161.61180

Видимо, нужно --sport

NightSpamer ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.