DD-WRT: Как разрешить переадресацию портов для запросов, исходящих из локальной сети?

В исходной прошивке моего роутера у меня была определена переадресация портов с порта 80 на сервер в локальной сети, который я использовал вместе с внешней службой динамического DNS.

Сейчас я обновился до DD-WRT и, увы, переадресация портов работает только для запросов на внешний IP из- за пределов локальной сети. Изнутри локальной сети я могу получить доступ к серверу только по его внутреннему IP.

Как я могу сделать так, чтобы внешний IP-адрес (и, следовательно, имя домена, подключенное к динамическому внешнему IP-адресу) был правильно доступен и изнутри локальной сети?

Я предпочитаю узнать, как этого добиться с помощью стандартных определений DD-WRT, но использование, например, iptables не исключено.

4 ответа

Решение

Похоже, это ошибка в последних сборках DD-WRT.

Используйте iptables:

iptables -t nat -I POSTROUTING -o br0 -s 192.168.1.0/24 -d 192.168.1.0/24 -j MASQUERADE

(измените свою подсеть в соответствии с вашей конкретной локальной сетью)

С http://hax.at/text/41

В духе ответа UrEl: самоконфигурирование iptables скрипт, который можно просто скопировать без дальнейшей адаптации, можно найти на форуме DD-WRT:

insmod ipt_mark 
insmod xt_mark 
iptables -t mangle -A PREROUTING -i ! `get_wanface` -d `nvram get wan_ipaddr` -j MARK --set-mark 0xd001 
iptables -t mangle -A PREROUTING -j CONNMARK --save-mark 
iptables -t nat -A POSTROUTING -m mark --mark 0xd001 -j MASQUERADE 

Как отметил Джаретт, это должно использоваться как сценарий брандмауэра, а не как сценарий запуска.

Похоже, ваша настоящая проблема в том, что вам нужно два просмотра записи DNS A. Внешне ваш динамический днс указывает на публичный IP-адрес вашей сети, который перенаправляет порт 80 на локальный хост. Все, что вам нужно сделать, это добавить запись в dnsmasq с записью A, указывающей такое же полное доменное имя на ip локального хоста для ваших локальных хостов. Вы можете сделать это, добавив следующее на странице "Сервисы" / "Дополнительные параметры dnsmasq":

 address=/www.mydomain.com./xx.xx.xx.xx

просто замените xx на локальный ip, а имя домена на ваше доменное имя. Не забудьте добавить конечную точку, иначе она добавит к вам имя вашего локального домена.

Попробуйте отключить "Фильтровать перенаправление WAN NAT" на вкладке "Безопасность"> "Брандмауэр". Из описания справки:

Фильтр перенаправления WAN NAT Запрещает хостам в локальной сети использовать WAN-адрес маршрутизатора для связи с серверами в локальной сети (которые были настроены с помощью перенаправления портов).

Другие вопросы по тегам