Hairpin Iptables

Материал из Записки на полях
Перейти к навигации Перейти к поиску

Суть метода - заворачивание подключений из внутренней сети на ресурс внутренней сети при обращении на внешний адрес.

Ошибка создания миниатюры: Файл не найден

В данном случае при обращении с машины 192.168.1.10 по адресу 1.1.1.1:80 фактически запрос пойдёт на 192.168.1.2

Итак! В цепочке PREROUTING таблицы nat, делаем DNAT, который заменит в пакете адрес назначения с внешнего IP на адрес Web-сервера.

iptables -t nat -A PREROUTING -d 1.1.1.1 -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80

eth0 - интерфейс смотрящий во внутреннюю сеть. В цепочке POSTROUTING таблицы nat, делаем SNAT, который заменит в пакете адрес отправителя. Это требуется для того, чтобы web-сервер думал, что запрос пришёл от роутера. Т.к. иначе он отправит пакет настоящему отправителю, а тот сбросит его, потому что посылал пакет роутеру и ответ ждёт от него.

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -p tcp -d 192.168.1.2 --dport 80 -j SNAT --to-source 192.168.1.1