Я использую прошивку DD-WRT на моем роутере, версия DD-WRT v24-sp2 (12.12.11) стандартный.
Я пытаюсь перенести вперед http
трафик через порт 80 на локальный IP-адрес моего ПК, 192.168.2.97, и хотя я могу просматривать свой размещенный сайт в своей локальной сети, при попытке с удаленного IP-адреса я получаю "Время соединения истекло".
Может ли кто-нибудь взглянуть на связанный дамп iptables Вот и помогите мне найти правильный синтаксис iptables для правильной работы переадресации портов? Я новичок в iptables и не знаю, как создать необходимый синтаксис.
РЕДАКТИРОВАТЬ выход netstat -ano | find "80"
с веб-сервера (Windows 7 с IIS):
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4
TCP 192.168.2.97:1869 207.46.124.39:80 ESTABLISHED 3860
TCP 192.168.2.97:43794 74.125.229.36:80 TIME_WAIT 0
TCP [::]:80 [::]:0 LISTENING 4
UDP 127.0.0.1:48000 *:* 3132
UDP 127.0.0.1:48001 *:* 2420
РЕДАКТИРОВАТЬ выход iptables -t nat -L
из командной строки DD-WRT:
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT icmp -- anywhere my.wan.ip to:192.168.2.1
DNAT tcp -- anywhere my.wan.ip tcp dpt:www to:192.168.2.97:80
DNAT tcp -- anywhere my.wan.ip tcp dpt:www to:192.168.2.97
TRIGGER 0 -- anywhere my.wan.ip TRIGGER type:dnat match:0 relate:0
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT 0 -- 192.168.2.0/24 anywhere to:my.wan.ip
RETURN 0 -- anywhere anywhere PKTTYPE = broadcast
РЕДАКТИРОВАТЬ выход iptables -t nat -vnL
из интерфейса DD-WRT:
Chain PREROUTING (policy ACCEPT 165K packets, 18M bytes)
pkts bytes target prot opt in out source destination
38 47952 DNAT icmp -- * * 0.0.0.0/0 my.wan.ip to:192.168.2.1
0 0 DNAT tcp -- * * 0.0.0.0/0 my.wan.ip tcp dpt:80 to:192.168.2.97:80
0 0 DNAT tcp -- * * 0.0.0.0/0 my.wan.ip tcp dpt:80 to:192.168.2.97
47056 6024K TRIGGER 0 -- * * 0.0.0.0/0 my.wan.ip TRIGGER type:dnat match:0 relate:0
Chain OUTPUT (policy ACCEPT 4753 packets, 418K bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 4753 packets, 418K bytes)
pkts bytes target prot opt in out source destination
87913 10M SNAT 0 -- * vlan2 192.168.2.0/24 0.0.0.0/0 to:my.wan.ip
0 0 RETURN 0 -- * br0 0.0.0.0/0 0.0.0.0/0 PKTTYPE = broadcast
РЕДАКТИРОВАТЬ выход route
из командной строки DD-WRT:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
74.178.55.1 * 255.255.255.255 UH 0 0 0 vlan2
192.168.2.0 * 255.255.255.0 U 0 0 0 br0
74.178.55.0 * 255.255.255.0 U 0 0 0 vlan2
169.254.0.0 * 255.255.0.0 U 0 0 0 br0
239.0.0.0 * 255.0.0.0 U 0 0 0 br0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default adsl-74-178-55- 0.0.0.0 UG 0 0 0 vlan2
ВЫВОД: У меня это было с DD-WRT.
Я замуровал и раскирпичил свой Буффало WZR-HP-G300NH2 уже десятки раз. Пробовал множество предложений ниже. Разместил на форуме DD-WRT и встретил в основном мертвым воздухом. Посмотрел другие альтернативные прошивки типа OpenWRT, Gargoyle, HyperWRT, Tomato. Из них OpenWRT с Gargoyle выглядел многообещающим, но Gargoyle конкретно не поддерживает мой маршрутизатор (поддерживается WZR-HP-G300NH, но не WZR-HP-G300NH.2).
Самое большое, что я сделал до сих пор, - это установка OpenWRT и Luci (надстройка для веб-управления) после того, как я просмотрел сотни сообщений на форуме, пытаясь найти решения или обходные пути для многочисленных сборок и конфигураций и других ошибок, которые только должны быть встречены краткие, бесполезные сообщения в ответ на вопросы, похожие на мои, например, «просто перекомпилируйте с {некоторой библиотекой, опцией или конфигурацией, которые кажутся совершенно обычными для разработчика, но не новичком}» или «просто попробуйте {сделать очевидное, что вы» я, наверное, уже пробовал, что я могу сделать во сне, но не особо хочу вдаваться в подробности} ".
По-видимому, я сделал что-то не так, потому что после этого и при попытке применить некоторые изменения конфигурации через Luci маршрутизатор снова заблокировался после перезагрузки. Если мне захочется, я попробую еще раз перепрошить его и посмотрю, что мне нужно сделать, чтобы снова избежать ситуации, и, надеюсь, в итоге получу работающий маршрутизатор или, по крайней мере, переключатель, который я могу использовать.
А пока я купил еще один роутер и надеюсь, что заводская прошивка выполнит, казалось бы, простую задачу переадресации портов. Спасибо kce и всем тем, кто в этом участвовал.
Добавьте четыре команды ниже (2 insmod и 2 iptables) в командное окно запуска маршрутизатора (путь в меню маршрутизатора: Администрирование -> Диагностика). Вставьте их в командное окно оболочки маршрутизатора, а затем нажмите кнопку СОХРАНИТЬ ЗАПУСК, чтобы передать их в командное окно запуска маршрутизатора:
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 nat -A POSTROUTING -m mark --mark 0xd001 -j MASQUERADE
Лучший способ - скопировать и вставить эти четыре приведенные выше команды ТОЧНО, как они есть, прямо в ваш маршрутизатор, ОДНА КОМАНДА НА СТРОКУ. Это гарантирует, что вы не ошибетесь, так как держу пари, вам уже надоело это делать!
После сохранения их в списке команд запуска маршрутизатора перезагрузите маршрутизатор и проверьте переадресацию портов со стороны WAN.
Это должно помочь.
Пожалуйста, ответьте здесь, если это сработало для вас так же, как и для меня!
С уважением, Лино
Ваши правила в нынешнем виде кажутся прекрасными; так что другая возможность - ваш интернет-провайдер или кто-то посередине блокирует dport 80 ... простой способ проверить это:
Добавьте правило DNAT, которое перенаправляет запрос на другой порт на ваш внутренний сервер, то есть:
iptables -t nat -I PREROUTING -p tcp --dport 32100 -d <wanIP> -j DNAT --to 192.168.2.97:80
затем откройте браузер и посетите : 32100 rel = "nofollow noreferrer"> http: // <wanIP>: 32100
если он по-прежнему не работает, то, скорее всего, это связано с проблемами pMTUd.
... версия DD-WRT v24-sp2 (12/12/11) std.
Вы не предоставили номер редакции, который является важной информацией. Единственные рекомендуемые текущие версии - 13064 или 14869. Большинство версий прошивки dd-wrt считаются нестабильными и поврежденными.
Вот соответствующая информация из ветка форума.
Обновите (или понизьте) до одной из рекомендуемых сборок форума, перечисленных в этом разделе, особенно если вы используете SP1 или v24 final (21.05.08) 13064 или 14896. Придерживайтесь того, что рекомендовано в этой ветке или объявлении redhawk0, если вы хотите стабильности. На момент написания последней официальной сборкой является v.24 SP1. SP1 имеет МНОГО проблем. Он самопроизвольно блокирует маршрутизатор Asus WL500W.
Все эти сборки, рекомендованные форумом, являются бета-версией и еще не завершены. Хотя вы используете их на свой страх и риск, рекомендуемые форумом сборки были довольно тщательно протестированы и работают хорошо, определенно лучше, чем SP1. Просмотрите форумы и узнайте, что говорят другие.
Новейшие сборки, такие как сборки 16xxx или 17xxx, которые новее, чем рекомендованные сборки, были выпущены только для ТЕСТИРОВАНИЯ. Они не новы и не «улучшены» и не выпускались, потому что явно лучше. ЧАСТО у них возникают серьезные проблемы. Если бы они этого не сделали, их бы рекомендовали на форуме. Так что поймите, что если вы устанавливаете сборку, отличную от рекомендованной здесь, вы тестируете сборку и можете обнаружить, что она НЕ РАБОТАЕТ. У каждой сборки есть «ветка сборки» на форуме, которая создается при выпуске сборки. Сообщайте о проблемах в этом потоке, но не просите помощи с вашим маршрутизатором в потоке сборки. ЕСЛИ ВАМ НУЖНА ОБЩЕЕ СТАБИЛЬНАЯ КОНСТРУКЦИЯ, ИСПОЛЬЗУЙТЕ ОДНУ ИЗ СТРОИТЕЛЕЙ, РЕКОМЕНДОВАННЫХ В ЭТОМ ЗАМЕЧАНИИ, ИЛИ РЕКОМЕНДУЕМУЮ РЕЗЬБУ REDHAWK0! Единственное исключение из этого правила - если вы используете ОЧЕНЬ новый маршрутизатор, и для этого маршрутизатора требуется начальная прошивка сборки, которая новее 15962, и в этом случае большинство из них должны использовать 17990 или 18000 (которые в основном одинаковы).
TL; DR: The newest builds, such as the 16xxx or 17xxx builds, that are newer than the recommended builds have been released for TESTING only... OFTEN they have massive problems.
Редактировать: Вы сказали, что протестировали переадресацию, подключившись с удаленного IP-адреса. Чтобы быть уверенным, вы не пытаетесь подключиться к IP-адресу вашего WAN-интерфейса из вашей LAN, верно? NAT Loopback не работает для этой ревизии и всего, что выше 15760.
Я настоятельно рекомендую вам понизить версию прошивки до одной из рекомендуемых версий в той ветке, на которую я ссылался, если у вас нет очень веская причина не делать этого.
Изменить 2: Хм. Я вижу, что ваш переход на более раннюю версию не сработал. Жаль это слышать. К сожалению, это скорее всего проблема с прошивкой DD-WRT, вопросы о которой считаются не по теме. Мой аргумент в пользу этого вывода состоит в том, что ваши iptables выглядят нормально, а переадресация портов правильно работает с вашим маршрутизатором Linksys).
Мой совет: 1) отправьте сообщение на форум DD-WRT (сначала прочтите все их часто задаваемые вопросы), 2) отправьте отчет об ошибке или 3) купите настоящий маршрутизатор. У меня не было ничего, кроме проблем с DD-WRT, и я бы никому не рекомендовал его. Вдобавок я обнаружил, что «маршрутизаторы» COTS также ненадежны.
Вам необходимо разрешить соединение в 2 местах: NAT и брандмауэр.
Ваш список iptables предназначен только для значения по умолчанию filter
таблица (такая же, как iptables -t filter -L
), который предназначен для традиционной прямой маршрутизации и недостаточен в вашем случае - вы используете трансляцию сетевых адресов (NAT).
В этом случае соответствующая настройка находится в nat
table (подключитесь к вашему роутеру через ssh и выдайте iptables -t nat -L
); он должен содержать что-то вроде этого:
Chain PREROUTING (policy ...)
target prot opt source destination
DNAT tcp -- anywhere your_internet_ip_address tcp dpt:80 to:192.168.2.97:80
Конечно, извне нужно подключиться к http: // ваш_интернет-IP_адрес, а не http://192.168.2.97, простите меня за очевидное.
Не знаю, как это реализовать через графический интерфейс DD-WRT v24. На v23 я делал это через Applications&Gaming -> Port Forwarding
и DNAT работал хорошо.
ОБНОВЛЕНИЕ 1: Итак, у вас есть правильное правило DNAT.
Еще кое-что я заметил. У вас есть правило TRIGGER для порта 80. В руководстве сказано
Установив правила запуска порта, вы можете разрешить входящему трафику поступать на конкретный узел локальной сети [...] Если компьютер отправляет исходящий трафик с этих портов, входящий трафик в диапазоне перенаправления будет перенаправляться на этот компьютер.
Это нечто совершенно иное, чем обычная переадресация портов (DNAT), и, скорее всего, может с ней конфликтовать. Запуск обычно используется для приложений, которые подключаются обратно (обычно многопользовательские игры), я не понимаю, зачем кому-то это нужно для порта 80.
Ваши правила в порядке. У вас есть порт 80, настроенный по умолчанию для удаленного доступа. Измените это, и все будет в порядке.
Порт 80 переходит на страницу конфигурации dd-wrt. Все, что вам нужно сделать, это изменить страницу конфигурации dd-wrt на другой порт. Затем перенаправьте порт 80 на желаемый IP.