Назад | Перейти на главную страницу

Запустить маскарад iptables до достижения службы на шлюзе?

У меня есть служба STUN, работающая на том же компьютере, который является шлюзом для локальной сети, я бы хотел, чтобы результаты службы STUN были одинаковыми как для внутренних, так и для внешних машин. В настоящее время, поскольку маскировка выполняется в правиле постмаршрутизации, когда пакеты покидают шлюз, сервер STUN будет просто видеть IP / порт LAN вместо natted ip / port.

eth1 (lan): 10.0.0.1/32
eth0 (wan): 1.2.3.4/31
iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE 
iptables -A INPUT -p udp -d 1.2.3.4/31 --dport 3701 -j ACCEPT

Когда компьютер LAN с IP 10.0.0.2 связывается со службой STUN в 1.2.3.4, пакеты проходят, но служба STUN видит, что пакет отправляется из 10.0.0.2.

Как я могу добиться, чтобы трансляция NAT происходила до того, как пакет поступит в службу STUN, и чтобы ответ службы STUN был не от 10.0.0.1, а от версии 1.2.3.4, используемой при обращении к службе?

Посмотрите на образ. Пакеты переводятся MASQUERADE, когда они должны быть маршрутизированы. Но ваш хост назначения это тот же хост, что и маршрутизатор. Таким образом, пакет не будет проходить через цепочку nat-POSTROUTING и не будет переведен. Вместо этого они будут проходить через таблицу фильтров