У меня есть домашний маршрутизатор WRT54GL, и я хочу, чтобы запросы, поступающие на общедоступный IP-адрес маршрутизатора через порт 97, перенаправлялись на внешний IP-адрес и порт, например 209.85.148.99 (google.com) и порт 80.
Внешний интерфейс роутера называется vlan1
.
Я попытался iptables -t nat -A PREROUTING -d <router_ip> -i vlan1 -p tcp -m tcp --dport 97 -j DNAT --to-destination 209.85.148.99:80
, но это не работает.
Как я могу это сделать? Кроме того, как я могу узнать, активно ли это правило? iptables -L
похоже, не перечисляет это.
Мне удалось решить свою проблему с помощью rinetd
на моем компьютере (который находится в DMZ) со следующим правилом в его конфигурации:
# bindaddress bindport connectaddress connectport
0.0.0.0 97 209.85.148.99 80
но я бы хотел сделать перенаправление в роутере.
Это проблема по дизайну, предположительно, оба IP-адреса должны использовать один и тот же IP-адрес шлюза, который должен быть запущен брандмауэром. iptables
, Раньше я пытался делать то же самое, что и вы, с тем же результатом неудачи. Вам нужно обратное правило для того же самого nat, чтобы снова переписать пакет, чтобы источник правильно понял его, при отправке в другую сеть этого не происходит.
Единственный способ перенаправления на другой внешний сайт - это использовать вышибалу или прокси-движок, такой как squid, varnish или nginx, или написать свой собственный очень короткий код вышибалы на выбранном вами языке.