26

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

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

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

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

4 ответа4

25

Похоже, это ошибка в последних сборках 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

4

В духе ответа 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 

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

1

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

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

1

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .