DD-WRT: Як дозволити переадресацію портів застосовуватись до запитів, що надходять із внутрішньої мережі?


26

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

Зараз я модернізований до DD-WRT, і, на жаль, переадресація портів працює лише для запитів до зовнішнього IP з- за меж локальної мережі. Зсередини локальної мережі я можу отримати доступ до сервера лише через його внутрішній IP.

Як я можу зробити так, щоб зовнішній IP (і тим самим доменне ім'я, підключене до динамічного зовнішнього IP), був належним чином доступний і з внутрішньої мережі?

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

Відповіді:


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


Це НЕ було очевидно! працював як шарм :)
Jay

Я встановив це як команду запуску і перезавантажив маршрутизатор, але ніяких змін - все одно не працює.
Тімві

Працювали для мене. Велике спасибі. Тепер я можу отримати доступ до своїх IP-адрес, призначених ddns, з моєї внутрішньої мережі на моїх маршрутизаторах DD-WRT.
nusi

3
Це працювало для мене, але лише в тому випадку, якщо я збережу його як сценарій брандмауера, а не сценарій запуску.
Джаретт Міллард

@Timwi - Як згадував Джаретт, мені теж доводилося ставити це в розділі "Брандмауер", а не в розділі "Запуск".
dan_linder

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 

Як зауважив Джарет, це має використовуватися як сценарій брандмауера, а не як сценарій запуску.


Це рішення працювало для мене краще, ніж рішення UrEI, оскільки останній зробив мій SIP телефон не в змозі підключитися.
jamix

У чому різниця між цим правилом @ @ UrlEl (окрім динамічного отримання інтерфейсу wan та ip-адреси)?
Пьотр Доброгост

1

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

Фільтр WAN NAT Перенаправлення забороняє хостам у локальній мережі використовувати WAN-адресу маршрутизатора для контактів із серверами в локальній мережі (які були налаштовані за допомогою перенаправлення портів).


Це вже було відключено (за замовчуванням). Будь-які інші ідеї?
UrEl

Це дивно - у моїй локальній мережі саме ця настройка є важливою. Яку збірку ви використовуєте? Можливо, вам слід двічі перевірити переадресацію порту - можливо, там щось не так, що ви пропустили (можливо, IP-адреси змінилися між вашим зовнішнім і внутрішнім доступом, таким чином порушивши переадресацію порту?)
Tobias Plutat,

Я використовую 16994. Тим часом я виявив це: hax.at/text/41
UrEl

О, як я люблю баггі-випуски DD-WRT! (Встановлення зв’язку з клієнтами, яке протягом деякого часу займало віки ... поки я не з'ясував, що імена хостів у статичній оренді повинні містити лише алфавітні символи. Арр!)
Tobias Plutat,

1

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

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

просто замініть xx на локальний ip, а доменне ім'я - на ваше доменне ім'я. Не забувайте про крапку, або вона додасть до вас ваше доменне ім’я.


Це я і зробив, і це працює! Але чи можна це зробити для певних портів? Це буде працювати лише в тому випадку, якщо ви пересилаєте порти на один комп'ютер. Якщо ви пересилаєте порти на декілька комп'ютерів, він не працюватиме ...
rinogo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.