Проброс портов на маршрутизаторе

Материал из campus.mephi.ru

Перейти к: навигация, поиск

Содержание

Порты...?!

В некоторых ситуациях проброс портов на роутере просто необходим, для получения желаемого результата. Например, Вы "сидите за роутером (маршрутизатором)" и хотите что бы люди(соединения) при обращении к Вашему роутеру попадали именно на Вашу машину(например, это нужно для DC++-клиента, или у Вас поднят свой web-сервер или игровой Cs, или ещё что).

В общем то, здесь нет ничего сложного. Детали, конечно, отличаются от роутера к роутеру, но общая идея остаётся прежней. Во всех относительно новых роутерах есть такая функциональность. Если же Вы не можете найти ничего подобного, обратитесь к Руководству пользователя Вашего роутера. Я покажу как это сделать на примере проброса портов для настройки DC++-клиента на роутере Asus RT-N66U.

Настраиваем внутрисетевой IP

Для начала, убедитесь в что роутер внутри сети статически выдаёт вам IP-адрес (постоянно один и тот же). На нём за это отвечает DHCP (Dynamic Host Configuration Protocol) Server. Если он включен (посмотрите в настройках, что-то в районе раздела LAN), то нужно назначить IP-адрес для вашей машины статически в обход dhcp.

На вкладке LAN-DHCP Server включаем ручное назначение IP (Enable Manual Assignment), выбираем в поле ниже свой MAC-адрес, желаемый IP (в разумных пределах), жмём Добавить и Применить. Всё, после сохранения, у вашей машины внутри сети постоянно будет указанный IP адрес.

Устанавливаем себе статический IP внутри сети на роутере Asus RT-N66U

Проброс портов

Теперь смело можно переходить непосредственно к самому главному. Вкладка WAN-Virtual Server / Port Forwarding, Включаем опцию Проброса портов(Enable Port Forwarding) И заполняем необходимые поля

  • Service Name - ни к чему не обязывающее имя "правила" перенаправления портов
  • Port Range - диапазон портов, С которых роутер будет перенаправлять входящие соединения
  • Local IP - локальный (внутри вашей сети) IP, НА который роутер будет перенаправлять входящие соединения с портов <Port Range>
  • Local Port - номер порта на машине с IP <Local IP> на который роутер будет перенаправлять соединения
  • Protocol - соединения какого типа следует отлавливать роутеру

Для настройки DC-клиента, пусть например, требуется открыть(пробросить) 2 порта : 3000 для (TCP/UPD) и 3001 для (TLS) (работает по протоколу TCP) Таким образом добавляем 2 строчки, и жмём Применить.

# name   Port-Range Local-Ip     Local.Port   Protocol type
dc-tcp	 3000	    192.168.1.2	 3000	      BOTH	
dc-tsl	 3001	    192.168.1.2	 3001	      BOTH
Пробрасываем порты на роутере Asus RT-N66U

Здесь - всё. Теперь роутер все входящие на порты 3000:3001 TCP/UDP соединения будет перенаправлять прямиком на 3000:3001 порты вашей машины.

Настройка DC++-клиента

Осталось настроить DC++-клиент. Открываем настройки соединения (Файл-Настройки-Соединение | Tools-Preferences-Connection в моём случае с eiskaltdcpp). И выбираем :

  • Радио-кнопка Ручной проброс портов
  • Вписываем наши порты в соотсветствующие поля.

P.s. Если роутер поддерживает технологию UPnP, то можно выбрать этот пункт в настройках, и не вписывать порты - программа должна сама определить, а возможно ещё и на роутере сама пробросит все необходимые порты. Но я люблю ясность во всём :)

Settings-Connection in Eiskalttdcpp-qt
Файл-Настройки-Соединение в FlylinkDc++

Does it work..?

Всё. Осталось проверить что всё работает. Но..ведь может быть, что и нет :) Ведь есть такие вещи, как Антивирус, Браундмауэр, и куча куча всего ещё! Они вполне могут блокировать обращение по необходимым портам. Я думаю, Вам не составит труда их настроить(:

Например, мне, на Fedora 16, пришлось повозиться с iptables

su
# посмотреть все существующие правила:
iptables -nvL

# если, и скорее всего, нужные порты не настроены - исправим это
# открываем входящие соединения на нужные порты
iptables -A INPUT -p tcp -m tcp --sport 3000 -j ACCEPT 
iptables -A INPUT -p udp -m udp --sport 3000 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --sport 3001 -j ACCEPT

# открываем исходящие соединения с этих портов
iptables -A OUTPUT -p tcp -m tcp --dport 3000 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --sport 3000 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --sport 3001 -j ACCEPT

# ну и проверьте что нет никаких правил, закрывающих *всё*
# у меня такое было
# -A INPUT -j REJECT --reject-with icmp-host-prohibited
# что бы его удалить, логично, нужно было выполнить
iptables -D INPUT -j REJECT --reject-with icmp-host-prohibited
# обязательно проверьте, что все ваши изменения отобразились в выхлопе
# так же учтите, что добавленные таким способом правила НЕ сохранятся после перезагрузки
iptables-save

Вот теперь - всё. Спасибо за внимание.



Здесь можно найти инструкции для настройки тех же самых вещей для многих роутеров (если у вас провайдер не биилайн - это вообще не важно). Смотрите пункт Настраиваем доступ к локальным ресурсам.

updated 09.05.2013, Frodox
Самая свежая версия статьи может быть найдена здесь