Содержание
- 1 Проброс портов // по шагам
- 2 Что такое проброс портов
- 3 Зачем нужно открывать порты на роутере?
- 4 Переадресация портов
- 5 Возможные проблемы при пробросе портов и их решение
- 6 Как закрыть порты
- 7 Перед тем, как начать
- 8 Windows
- 9 LINUX
- 10 FreeBSD
- 11 OpenBSD
- 12 Cisco
- 13 Openwrt и DD-WRT
- 14 Другие подходы
- 15 Выводы
- 16 UDP-туннель между двумя NAT
- 17 Автоматический проброс портов
Доброго дня всем!
При обмене файлами с другими компьютерами в интернете, в различных сетевых играх, при использовании мессенджеров (того же Skype) — часто может возникать ошибка, связанная с NAT (прим.: трансляция сетевых адресов).
Также не редкость, когда программа (или игра) вообще не соединяется с другими пользователями в интернете (например, у вас никто ничего не может скачать в uTorrent, игра не соединяется с сервером, Skype отказывается подключаться и т.д.). Все это происходит из-за того, что на роутере никто не пробросил порты(прим.: пробросить = значит открыть).
Суть «проброса» в том, что предоставляется доступ какой-то программе на определенном компьютере для подключения к ней из интернета (по умолчанию, во всех роутерах это отключено, в целях безопасности).
Собственно, в этой статье пошагово постараюсь на доступном языке изложить то, что нужно сделать. Надеюсь, инструкция поможет разобраться с этой «проблемой»…
*
Проброс портов // по шагам
1) Вход в настройки роутера
Логично, что первое необходимое действие — это вход в настройки роутера. Чаще всего, достаточно в любом браузере набрать адрес http://192.168.0.1/ (либо http://192.168.1.1/) и нажать Enter.
В качестве логина и пароля использовать admin (либо заполнить поле логина, а пароль вообще не вводить).
Если вдруг IP-адрес не подошел, а сеть у вас есть и работает — то попробуйте открыть командную строку и ввести ipconfig. Среди кучи появившихся параметров, должны увидеть строчку «Основной шлюз» — это и есть IP-адрес настроек роутера.
Как узнать IP-адрес для входа в настройки в роутер
ДОПОЛНЕНИЕ!
Если в настройки роутера так и не удалось войти, воспользуйтесь рекомендациями из этой статьи:https://ocomp.info/kak-zayti-po-192-168-1-1-vhod-vrouter.html
*
2) Присваиваем компьютеру постоянный локальный IP-адрес
Каждый раз, когда вы включаете компьютер или ноутбук, он, соединившись с роутером получает свой IP-адрес в локальной сети (т.е. той домашней локальной сети, которую организует роутер). Например, у вашего ноутбука может быть адрес — 192.168.0.101, а у компьютера — 192.168.0.102.
Этот адрес локальный (внутренний) и он может меняться (если это специально не настроить)! Т.е. сегодня у вашего компьютера был IP 192.168.0.102, а завтра 192.168.0.101. А для проброса портов — нужно, чтобы он был постоянным, и не изменялся с течением времени.
Дополнение! О том, как узнать свой IP-адрес, а также разницу между статическим и динамическим, внутренним и внешним IP, вы можете узнать из этой статьи:https://ocomp.info/kak-uznat-ip-adres.html
Чтобы это сделать в роутерах, как правило, необходимо знать MAC-адрес сетевого адаптера, через которое вы подключаетесь к нему. Например, в ноутбуках — это, как правило — беспроводной адаптер, в компьютерах — Ethernet.
Узнать MAC-адрес можно также в командной строке — команда ipconfig/all покажет физический адрес устройства (это и есть MAC-адрес). См. скрин ниже.
Физический адрес адаптера — это и есть MAC-адрес
Собственно, дальше в настройках локальной сети в роутере (где задается привязка конкретного статического IP к MAC) укажите ваш локальный IP-адрес и MAC-адрес сетевого адаптера. Таким образом, даже после выключения вашего ПК (перезагрузки) и т.д. — ваш IP будет постоянным (т.е. в нашем примере 192.168.0.102, т.е. роутер, по сути, его за вами закрепит и не даст никакому другому устройству!).
(У каждого роутера своя прошивка, и компоновка и расположение кнопок может существенно различаться. Ниже приведены два фото настроек роутера Tenda и ASUS)
Статический IP-адрес (кликабельно)
ASUS — привязка IP к MAC-адресу
*
3) Открываем порт для нужной программы
Теперь осталось открыть порт для конкретной программы. Но прежде, один небольшой вопрос…
У некоторых пользователей возникает дилемма, какой именно порт открывать… И где его можно узнать…
Например, в uTorrent порт можно посмотреть в настройках соединения (см. скрин ниже).
Настройки uTorrent
В моем случае 16360 (но его можно и поменять). Браузеры используют 80 порт, Skype — подобно uTorrent, можно уточнить в настройках (и поменять в случае необходимости).
Как правило, порты (которые нужно открыть) указаны в файле помощи, в настройках приложения, или просто в ошибке, которая сообщит вам о проблемах с NAT!
Что касается каких-то игр – то этот момент необходимо уточнять в технических характеристиках игры, либо у разработчиков (также можно на тематических форумах).
Продолжим…
В настройках роутера в разделе задания параметров интернета (часто раздел WAN) можно задать перенаправление портов (Port Forwarding). В роутере Tenda — это раздел «Дополнительные параметры».
Достаточно указать внутренний локальный IP-адрес (который мы в предыдущем шаге этой статьи привязывали к MAC-адресу), и порт, который хотите открыть. Обратите внимание, что также может потребоваться указать протокол TCP или UDP (если не знаете какой открыть — открывайте оба).
Парочка скринов представлены ниже (для роутеров ASUS и Tenda).
Порт для uTorrent был открыт!
ASUS — порты открыты (в качестве примера)
Собственно, порты проброшены. Можете сохранять настройки и пользоваться программами — всё должно работать…
*
4) Пару слов о DMZ-хосте
Все, что писано выше, мы сделали лишь для одного-двух портов. А представьте, если вам необходимо открыть все порты?! Например, это часто бывает нужно для создания игрового сервера, для организации видеонаблюдения и пр. ситуациях.
Для этого во всех современных роутерах имеется специальная функция DMZ-хост. Включив ее и указав нужный локальный IP-адрес в вашей сети, вы открываете все порты у этого компьютера. Пример настроек представлен на скрине ниже.
Включаем DMZ-хост / Включите также UPnP
Отмечу, что делать так следует только по необходимости. Все-таки, таким быстрым и не хитрым образом, вы открываете полностью свой ПК для доступа из интернета (что не очень хорошо в плане безопасности).
*
А у меня по теме вопроса пока всё.
Дополнения приветствуются…
👋
RSS (как читать Rss)
Другие записи:
- Как убрать строку поиска в Windows 10, а то занимает половину панели задач
- Intel HD Graphics: где и как скачать драйвер на видеокарту (неск. способов)
- Как разбить большой файл на части (на куски), а то он не помещается на флешку (диск)…
- Как проверить скорость интернета на телефоне Андроид
- Chrome пишет: «Ваше подключение не защищено», как это исправить? (NET::ERR_CERT_INVALID, …
- Опасен ли Wi-Fi, вреден ли он для здоровья? Как снизить степень воздействия Wi-Fi на организм
- Как найти драйвер по коду оборудования ИД (ID, VEN/VID, DEV/PID)
- Как найти человека в интернете. Поиск людей по имени и фамилии, телефону, E-mail и пр.
Проброс портов является важной функцией, которая позволяет получить доступ к локальному устройству или серверу из внешней сети. Некоторые интернет-сервисы, в частности торрент-клиенты, онлайн-игры, приложения для удалённого доступа требуют открытия дополнительных портов. Давайте рассмотрим, как пробросить порты самостоятельно и какие проблемы при этом могут возникнуть.
Что такое проброс портов
В компьютерных сетях портом называют числовой идентификатор от 0 до 65 535, указываемый при запросе на соединение. Стандартные номера портов назначаются серверным службам Центром управления номерами интернета (IANA). Например, веб-серверы обычно используют порт 80, FTP-серверы — порты 20 и 21, SMTP-серверы — порт 25 и 110. Перечень общеизвестных и зарегистрированных организацией IANA портов, а также их краткое описание можно посмотреть на сайте «Википедия» по адресу https://ru.wikipedia.org/wiki/Список_портов_TCP_и_UDP.
Белым цветом в таблице выделены порты, зарегистрированные IANA, синим — незарегистрированные, а жёлтым — конфликтные порты, имеющие несколько применений наряду с зарегистрированным
Использование портов позволяет компьютерам, ноутбукам, смартфонам одновременно запускать несколько служб/приложений. А переадресация портов сообщает маршрутизатору, на какое устройство внутри сети должны быть направлены входящие соединения и с каким именно приложением на этом устройстве нужно связаться для обмена пакетами данных.
Зачем нужно открывать порты на роутере?
Функция переадресации портов довольно часто используется как в домашних сетях, так и в корпоративных. Варианты использования перенаправления портов могут быть следующими:
- доступ к камерам видеонаблюдения, когда вы находитесь вдали от дома;
- настройка сервера RDP для удалённого доступа к компьютеру из внешней сети;
- обеспечение дополнительного уровня безопасности сети за счёт скрытия IP-адреса;
- ускорение загрузки файлов с торрентов и файлообменников;
- подключение к почтовой службе или FTP-серверу;
- посещение веб-сайтов с регионально ограниченным доступом;
- создание виртуального сервера для тестирования сайта на домашнем ПК;
- настройка IP-телефонии;
- подключение к игровым серверам с многопользовательскими видеоиграми, например, Counter Strike или Minecraft.
На роутере можно настроить проброс портов для всех устройств локальной сети, присвоив им разные IP-адреса
Переадресация портов
Для открытия портов на роутере не нужно быть опытным администратором — с этой процедурой справится любой пользователь. Главное, следовать пошаговой инструкции, состоящей из двух основных этапов: присвоения статического IP-адреса пользовательскому компьютеру в настройках ОС Windows и перенаправления портов в админ-панели маршрутизатора.
Предварительные настройки «Виндовс»
Перед пробросом портов нужно для устройств локальной сети выделить диапазон внутренних IP-адресов, после чего закрепить по одному адресу за каждым ПК. Сделать это можно в настройках компьютера либо в панели администрирования роутера (раздел DHCP). Первый способ является более надёжным, так как статический адрес прописывается в настройках сетевой карты и без вашего вмешательства ничто и никто его не изменит. Для запуска данного процесса нужно включить ПК и произвести несколько действий:
- Перейти в раздел «Сетевые подключения», воспользовавшись системной утилитой «Выполнить» (вызывается сочетанием клавиш Win + R в любой версии Windows). В появившемся окошке ввести команду ncpa.cpl и нажать кнопку «ОК» или клавишу «ENTER».
Для быстрого перехода к разделу с сетевыми подключениями можно использовать системную программу «Выполнить»
- В открывшемся окне кликнуть правой кнопкой мыши по активному сетевому подключению и выбрать пункт «Свойства».
При клике ПКМ по активному подключению появится контекстное меню
- Сделать двойной клик по строке «IP версии 4 (TCP/IPv4)», чтобы открыть свойства протокола.
В «Свойствах подключения» первым делом нужно убедиться в том, что пункт «IP версии 4 (TCP/IPv4)» включён, после чего перейти к настройке протокола
- В окне «Свойства» активировать пункты «Использовать следующий IP-адрес» и «Использовать следующие адреса DNS-серверов». После чего заполнить обязательные поля:
- «IP-адрес» — сюда вписать адрес из диапазона внутренней локальной сети, например, любое значение от 192.168.0.2 до 192.168.0.200 (единственное условие — он должен отличаться от адреса роутера),
- «Маска подсети» — в домашних сетях чаще всего этот параметр имеет значение 255.255.255.0,
- «Основной шлюз», в роли которого выступает IP-адрес роутера (по умолчанию 192.168.0.1 или 192.168.1.1),
- «Предпочитаемый DNS-сервер» — здесь чаще всего указывают DNS-адреса провайдера или альтернативного источника, например, публичного сервиса Google Public DNS (8.8.8.8 и 8.8.4.4.).
В окне настроек протокола можно задать статичный IP-адрес компьютеру и DNS-серверу
- Подтвердить настройки нажатием «ОК».
Проброс портов в веб-интерфейсе маршрутизатора
После того как для компьютера зафиксирован статичный IP-адрес, можно переходить к настройке роутера (на примере TP-Link). Для этого нужно выполнить следующие действия:
- Войти в админ-панель маршрутизатора, введя в браузерной строке адрес устройства (для большинства роутеров по умолчанию используется 192.168.0.1 или 192.168.1.1).
По умолчанию для входа в веб-интерфейс большинства роутеова используются одинаковые логин и пароль — admin
- В боковом меню выбрать раздел «Переадресация», а в нём подраздел «Виртуальные серверы».
- В открывшемся окне нажать кнопку «Добавить» для создания нового правила переадресации.
Чтобы открыть новый порт, нужно воспользоваться кнопкой «Добавить» в разделе «Виртуальные серверы»
- Откроется диалоговое окно, где обязательно нужно заполнить два поля: «Порт сервиса» — здесь указывается номер порта, который нужно открыть, и «IP-адрес» — присвоенный компьютеру статический адрес в сети. Поле «Внутренний порт» можно оставить пустым, а поля «Протокол» («Все») и «Состояние» («Включено») оставить по умолчанию. После чего подтвердить настройки, нажав на кнопку «Сохранить».
В настройках виртуального сервера обязательно нужно указать номер внешнего порта и статичный IP-адрес компьютера или другого сетевого устройства
При необходимости проброса стандартных портов в роутере имеются предустановленные настройки. Достаточно выбрать в выпадающем списке «Стандартный порт сервиса» нужную службу (DNS, FTP, HTTP, POP3, SMTP, TELNET), как все поля заполнятся автоматически.
Для облегчения процесса настройки стандартных портов предусмотрено соответствующее поле с перечнем общеизвестных портов
Возможные проблемы при пробросе портов и их решение
Иногда при проверке работоспособности добавленных портов пользователь попадает из интернета в панель администрирования роутера, а не на нужный сервис или приложение на компьютере. Почему так происходит? Причин может быть несколько:
- блокировка внешнего соединения брандмауэрами и антивирусными программами. Решается данная проблема отключением этих служб либо их тонкой настройкой, во время которой добавляются исключения на подсоединение к нужным портам;
- у компьютера нет постоянного адреса. В таком случае при старте или перезагрузке роутера IP-адрес ПК изменится, и открытый порт перестанет работать, поскольку изначально был привязан к другому адресу. Решение — присвоить компьютеру (ноутбуку, планшету) неизменяемый IP-адрес;
- политика провайдера. Не редки случаи, когда интернет-провайдер запрещает обладателям «серых» (внутренних) IP-адресов использовать некоторые порты, например, торрент-трекеров. Выход из данной ситуации — приобретение статичного «белого» адреса;
- изменение порта самим приложением или сервисом. Иногда программы-клиенты самостоятельно меняют порт при каждом запуске. Избежать этого можно, если прописать порт в настройках софта и запретить опцию «Случайный выбор порта».
В настройках программы uTorrent (раздел «Соединение») можно указать порт входящих соединений и запретить выбор случайного порта при запуске
Как закрыть порты
Очень часто при использовании пользователем различных веб-серверов и сервисов удалённого доступа может возникнуть необходимость закрыть тот или иной порт. Осуществить эту процедуру можно в админ-панели маршрутизатора. Удаление портов производится в той же вкладке, где настраивался их проброс («Переадресация» → «Виртуальные серверы»). В списке открытых портов напротив каждого из них есть две ссылки «Изменить» и «Удалить». Нажав на вторую, произойдёт закрытие (удаление) порта и он перестанет отображаться в панели управления.
Для редактирования и удаления открытых портов во вкладке «Виртуальные серверы» есть соответствующие ссылки
Настройка перенаправления портов в веб-интерфейсе роутера не требует определённых знаний. Пользуясь вышеизложенной инструкцией на примере маршрутизатора TP-Link, любой пользователь при необходимости сможет открыть доступ к устройствам локальной сети из интернета. Алгоритм проброса портов в роутерах других производителей может несколько отличаться, но главные этапы настройки будут одинаковы.
У этой технологии есть множество названий — это и трансляция портадреса, и проброс портов, и перенаправление, и буржуйские порт-форвардинг/порт-маппинг, и сокращенные DNAT/PAT. Но как бы она ни называлась, о ее полезности спорить не приходится. Проброс портов — просто спасательный круг для тех, кто хочет показать свой сервер из-за высокой и крепкой стены под названием NAT.
Перед тем, как начать
Эта статья рассказывает о настройке проброса портов в самых разных операционных системах, начиная с Windows и заканчивая ОС, установленными на сетевом оборудовании. В большинстве случаев для реализации проброса портов используются специальные правила брандмауэра, и здесь я должен сделать первое предостережение.
Дело в том, что любой брандмауэр выполняет трансляцию сетевых адресов до их фильтрации, поэтому описанные в статье правила должны находиться в начале. Второе: для успешного прохождения оттранслированных пакетов должны быть добавлены правила, разрешающие входящие подключения на целевой порт шлюза, а также правила, разрешающие обмен данными между внутренней целевой машиной и шлюзом.
Windows
Начнем, как говорится, с азов. Проще всего проброс портов настроить в операционных системах семейства Windows. Здесь все это делается в «Свойствах NAT»:
- Заходим в «Администрирование -> Маршрутизация», выбираем локальную машину, далее «IP-маршрутизация -> NAT».
- Включаем NAT для локального интерфейса.
- Переходим к вкладке «Службы и порты», выбираем интересующую нас службу или добавляем свою.
- В открывшемся окне выбираем протокол, входящий порт (тот, который будет виден извне), адрес машины внутренней сети и ее порт.
LINUX
В Linux все намного сложнее, здесь необходимо оперировать правилами iptables/netfilter, без знания основ которого просто не обойтись. Для осуществления проброса портов предусмотрена цель DNAT, которую необходимо использовать в правилах цепочки PREROUTING. В самом простейшем случае правило будет выглядеть следующим образом:
iptables -t nat -A PREROUTING -p tcp --dst $GATE --dport $PORT -j DNAT --to-destination $SERVER:$PORT
Где $GATE — это адрес шлюза, $PORT — пробрасываемый порт, а связка $SERVER:$PORT — это адрес и порт внутреннего сервера. Естественно, чтобы правило сработало, должен быть включен форвардинг (хотя на шлюзе он в любом случае включен):
# echo 1 > /proc/sys/net/ipv4/ip_forward
Проброс портов возможен и с другой машины:
$IPTABLES -t nat -A PREROUTING -p tcp --dst $IP --dport $PORT -j DNAT --to-destination $SERVER:$PORT $IPTABLES -t nat -I POSTROUTING -p tcp --dst $SERVER --dport $PORT -j SNAT --to $IP
Это вполне легально, а иногда и просто необходимо. Различные преконфигурированные iptables-скрипты, такие как, например, знакомый пользователям Debian, arno-iptables-firewall, также можно использовать для более простой настройки проброса портов. Например, если ты хочешь пробросить порт 80 на машину 192.168.0.100, для этого достаточно добавить строку NAT_TCP_ FORWARD=»80>192.168.0.100″ в файл /etc/arno-iptables-firewall/firewall.conf и перезагрузить брандмауэр:
$ sudo /etc/init.d/arno-iptables-firewall restart
FreeBSD
1. Включить natd и ipfw в /etc/rc.conf:
# vi /etc/rc.conf # Включаем natd natd_enable="YES" # rl0 — внутренний интерфейс шлюза natd_interface="rl0" natd_flags="-f /etc/natd.conf" # Включаем ipfw firewall_enable="YES" firewall_type="/etc/ipfw.conf"
2. Настроить NAT и проброс портов в /etc/natd.conf:
# vi /etc/natd.conf same_ports yes use_sockets yes # Проброс портов: # протокол адрес-сервера-внутри-сети:порт порт-на-шлюзе redirect_port tcp 192.168.0.100:80 80
3. Чтобы все пакеты, проходящие через внешний интерфейс (rl1) шлюза, перенаправлялись в natd и обрабатывались им, добавим правило divert в /etc/ipfw.conf:
ipfw add divert natd ip from any to any in via rl1
Также разрешим общение всех с внутренним сервером:
ipfw allow tcp from any to 192.168.0.100 dst-port 80 in via rl0 setup
Далее можно добавить правила фильтрации. Метод номер два: ядерный NAT. Активация NAT с помощью реализации внутри ядра не требует ничего, кроме правильной настройки брандмауэра с помощью двух-трех правил. Не буду расписывать все в деталях, а просто приведу простой пример, демонстрирующий уже обсуждавшийся выше проброс 80-го порта со шлюза на внутренний сервер:
# vi /etc/ipfw.conf # Настраиваем NAT nat 1 config log if rl1 reset same_ports redirect_port tcp 192.168.0.100:80 80 # Заворачиваем весь трафик через внешний интерфейс в NAT add nat 1 ip from any to any via rl1
Правила ‘nat’ имеют несколько опций, большинство из которых совпадает с опциями, используемыми демоном natd. Например, опция same_ports предписывает механизму NAT сохранять оригинальные номера исходящих портов для исходящих пакетов (нужно для правильной работы некоторых RPC-протоколов). Опция rdirect_port имеет тот же синтаксис, что и в файле /etc/natd.conf.
OpenBSD
Наверное, самый логичный и простой в настройке проброс портов получается в ОС OpenBSD. Здесь механизм NAT также реализован в ядре и настраивается с помощью штатного pf, синтаксис которого куда яснее и продуманнее синтаксиса ipfw и, уж тем более, iptables. Все тот же проброс 80-го порта на языке pf будет выглядеть следующим образом:
# vi /etc/pf.conf # Настраиваем NAT nat on rl1 from 192.168.10.0/24 to any -> $out_ip # Настраиваем проброс портов rdr on rl1 inet proto { tcp, udp } from any to $out_ip port 80 -> 192.168.0.100
Как и прежде, rl1 — внешний интерфейс шлюза, 192.168.0.100 — адрес внутреннего сервера, а out_ip — адрес внешнего интерфейса шлюза. При этом, если проброс должен быть сделан на порт, отличный от 80-го, достаточно просто добавить ключевое слово «port» и числовое значение в конец первого правила.
Разрешается использование диапазонов портов, если, конечно же, оно может иметь какой-то смысл:
rdr on rl1 inet proto { tcp, udp } from any to $out_ip port 5000:10000 -> 192.168.0.100
Прим. ред.: Например, с помощью этой фичи удобно разрешать прохождение трафика bittorrent:
rdr on $ext_if inet proto tcp from any to $ext_if port 6881:6889 -> $myhost port 6881:6889 pass in quick on $ext_if inet proto tcp from any to $myhost port 6880 >< 6890 keep state
Как и в других рассмотренных ранее брандмауэрах, принятие решения о дальнейшей судьбе пакетов возлагается на правила фильтрации, через которые пакет будет пропущен уже после перенаправления. Но есть одно маленькое исключение: используя ключевое слово «pass» совместно с правилом rdr можно добиться такого поведения системы, когда пакеты будут отпускаться во внешний мир, минуя правила фильтрации (см. скриншот «Форвардим входящие запросы на сервер терминалов и SQL-сервер»). Эта особенность может быть использована для отладки правил.
Будь внимателен, в OpenBSD 4.7 синтаксис конфига несколько изменился:
pass out on rl1 from 192.168.0.0/24 to any nat-to $out_ip pass in on rl1 proto tcp from any to any port 80 rdr-to 192.168.0.100
Cisco
С моей стороны было бы кощунством не рассказать про настройку проброса портов с помощью сетевого оборудования небезызвестной компании Cisco. Благо, здесь все решается одной простой строкой, которая, тем не менее, будет разной для различных типов устройств. Например, проброс портов в Cisco PIX (Private Internet Exchange) или ASA (Adaptive Security Appliance) осуществляется с помощью следующей строки конфигурации:
static (inside,outside) tcp 1.2.3.4 www 192.168.0.100 www netmask 255.255.255.255
В то же время для оборудования, работающего на операционной системе Cisco IOS, строка будет выглядеть так:
ip nat inside source static tcp 192.168.0.100 80 1.2.3.4 80
Обе они не делают ничего кроме проброса порта 80 на сервер 192.168.0.100 для клиента с адресом 1.2.3.4. При этом если необходимо настроить проброс всех портов, достаточно просто опустить номера/ имена портов в строке конфигурации.
Openwrt и DD-WRT
Конечно же, кроме оборудования именитой Cisco на рынке существуют и гораздо менее дорогостоящие решения вроде разного рода домашних роутеров и точек доступа. Большой популярностью среди них пользуются ультра-бюджетные сетевые устройства таких компаний, как D-Link, ASUS, Linksys и других. На многих из них можно установить свободные и более продвинутые прошивки вроде OpenWrt, X-Wrt и DD-wrt, которые отличаются более развитой системой настройки и хорошим комьюнити. Естественно, проброс портов легко выполнить и с их помощью. В DD-Wrt проброс портов осуществляется с помощью локализованного веб-интерфейса. Чтобы настроить проброс по описанной выше схеме, достаточно открыть веб-интерфейс роутера (192.168.1.1), перейти на вкладку «NAT/QoS», далее — вкладка «Перенаправление портов». Теперь в поле «Приложение» пишем любое удобное для нас имя, например, «www», «Порт-источник» — внешний порт роутера, «Протокол» — TCP или UDP, «IP-адрес» — адрес внутреннего сервера, «Порт-приемник» — его порт. Далее выбираем галочку «Включить», жмем кнопку «Добавить », потом — кнопку «Применить».
Это действительно простой путь, который… не сработает для большинства российских провайдеров, предоставляющих как доступ к локальной сети (прямой), так и доступ к сети интернет (через VPN/PPTP). Дело в том, что добавленное таким образом правило будет применено к внешнему физическому интерфейсу, тогда как интерфейс ppp0, используемый для выхода в интернет через VPN/PPTP, останется не при делах. Для решения проблемы можно воспользоваться прямым вмешательством в недра DD-Wrt. Открываем вкладку «Тех.обслуживание», далее — «Команды» и набираем стандартные правила iptables:
iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 80 -j DNAT --to 192.168.0.100:80
Нажимаем «Сохр. брандмауэр» и перезагружаемся. Ненамного труднее выполнить эту операцию с помощью веб-интерфейса прошивок X-Wrt, представляющих собой, по сути, более юзабельный вариант OpenWrt. Жмем на «Network», затем «Firewall», выбираем в меню «New Rule» пункт «Forward» и нажимаем «Add». Записываем в поле «Forward To» IP-адрес внутреннего сервера, в поле «Port» помещаем номер пробрасываемого порта. В выпадающем меню выбираем пункт «Protocol» и нажимаем «Add», в появившемся меню выбираем протокол: TCP или UDP. Если порт, открытый на шлюзе, должен отличаться от порта внутреннего сервера, выбираем в выпадающем меню пункт «Destination Ports», получаем одноименное поле и вводим в него номер порта. Нажимаем кнопку «Save».
Того же эффекта можно достичь, отредактировав конфигурационный файл /etc/config/firewall следующим образом:
forward:proto=tcp dport=80:192.168.0.100:80
Другие подходы
Для осуществления проброса порта совсем необязательно использовать брандмауэры или системные демоны, как, например, этого требуют старые версии FreeBSD. Существует несколько других способов сделать это с помощью специализированного софта или стандартных инструментов ОС (кто знает, возможно, ты используешь Minix в качестве ОС для шлюза :)). Один из таких инструментов — SSH. Далеко не каждый системный администратор в курсе, что проброс порта является стандартной функцией этой программы. Возьмем, к примеру, следующую ситуацию. В локальной сети, закрытой от внешней сети NAT’ом, есть сервер, к которому тебе необходимо иметь доступ. Ситуация усугубляется тем, что ты не имеешь привилегий для настройки файервола на машине-шлюзе. Зато у тебя есть доступ к SSH-серверу, работающему на этом шлюзе. Как это может помочь? На самом деле очень сильно. Ты просто выполняешь следующую команду на удаленной машине (serverip — адрес внутреннего сервера, gateway-ip — адрес шлюза):
$ ssh -L 8080::80 user@<gateway>
И вуаля, порт 8080 локальной машины становится портом 80 внутреннего сервера локалки. Теперь достаточно набрать в веб-браузере адрес localhost:8080, и ты попадешь туда, куда надо. Твой SSH-клиент создаст туннель с SSH-сервером шлюза, все передаваемые в рамках которого данные будут направлены на порт 80 внутреннего сервера.
1.2.3.4 80 192.168.0.100 80
И (пере)запустить сервер командой:
$ sudo /etc/init.d/rinetd restart
в Ubuntu или:
# /usr/local/etc/rc.d/rinetd start
# echo "rinetd_enable="YES"" >> /etc/rc.conf
После этого весь трафик, пришедший на порт 80 машины 1.2.3.4, будет автоматически перенаправлен на тот же порт машины с IP-адресом 192.168.0.100.
Один из излюбленных способов проброса портов среди UNIX-администраторов заключается в использовании утилиты socket совместно с сетевым супер-сервером inetd. Как и все гениальное, идея в этом случае проста, а реализация очевидна. Открываем файл /etc/inetd.conf (даже если в твоей системе используется более новый xinetd, ты все равно можешь использовать этот файл) и добавляем в него строку следующего вида:
порт1 stream tcp nowait root /usr/local/bin/socket socket 192.168.0.100 порт2
Здесь порт1 — это прослушиваемый порт на машине-шлюзе, а порт2 — порт назначения на внутренней машине 192.168.0.100. При этом оба они должны быть заданы в форме имени службы (www, ftp и т.д.), если же таковой не имеется (ты выбрал произвольный порт), то ее необходимо добавить в файл /etc/services.
Далее можно перезагрузить inetd командой «kill -HUP» и наслаждаться результатом. Если же его нет, то смотрим в файл /etc/hosts.allow. Доступ к службе должен быть открыт.
Выводы
Несмотря на выбранный для статьи пример с пробросом порта в локальную сеть, у технологии DNAT есть множество других применений, включая создание более удобного способа доступа к удаленной машине, обход правил брандмауэра или просто обман. В любом случае, проброс портов остается очень удобной и легкой в реализации и применении технологией, которая может оказаться полезной в любой момент.
UDP-туннель между двумя NAT
Утилита pwnat (http://samy.pl/pwnat/) позволяет любому количеству клиентов, находящихся за одним NAT-сервером, соединяться с сервером, который стоит за другим NAT, причем никакой проброски портов на серверах не потребуется.
Клиент может подключаться через такой сервер к любым ресурсам, либо только к тем, что ограничены сервером pwnat.
Автоматический проброс портов
Universal Plug and Play (UPnP) — технология, призванная упростить и автоматизировать процесс общения сетевых устройств и приложений между собой. Поддерживается почти любым современным сетевым оборудованием, включает в себя механизм автоматического проброса портов в случае необходимости. Тот же механизм реализован во многих файлообменных программах.
</gateway></code></p>← Ранее Вход в социалки — на амбарный замок: Еще несколько способов контроля трафика и управления доступомДалее → Не спасовать перед лавиной: Подготавливаем веб-сервер к высоким нагрузкам
Используемые источники:
- https://ocomp.info/kak-probrosit-portyi-na-routere.html
- https://itmaster.guru/nastrojka-interneta/routery-i-modemy/kak-otkryt-porty-na-routere.html
- https://xakep.ru/2011/01/17/54483/