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
(измените свою подсеть в соответствии с вашей конкретной локальной сетью)
В духе ответа 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-адрес маршрутизатора для связи с серверами в локальной сети (которые были настроены с помощью перенаправления портов).