Проброс портов на компьютере

О чём речь и зачем это нужно

В windows, начиная с версии Windows XP существует возможность настроить проброс портов (port forwarding или port mapping) без каких-либо внешних программ (и даже не используя встроенный брандмауэр!).

Зачем это может быть нужно? Например, для настройки еще одного (дополнительного) порта, на котором будет "висеть" служба. К примеру, вдобавок к порту 80 (на котором находится apache) можно вдобавок "открыть" порт 1580 или 65123, который будет фактически выполнять ту же роль, что и 80-й порт, но при этом он будет "секретным" портом.
Или же можно таким образом "прятать" фактические серверы: разрешать подключения на какой-либо локальный порт (на localhost, 127.0.0.1), а затем "пробрасывать" это подключение на другой сервер (и на другой порт).

Ограничение: данные перенаправления действуют только на TCP порты, UDP трафик таким образом перенаправить не удастся.

Как сделать port mapping (port forwarding) через netsh

Для этого в netsh есть контекст portproxy, который находится в контексте interface. Для создания port mapping выполните из командной строки (в windows Vista и выше — от имени администратора):

netsh interface portproxy add v4tov4 listenport= <целое_число или имя_службы>listenaddress= connectport= <целое_число или имя_службы>connectaddress=

  • listenport — обязательный параметр. Задает порт IPv4, который должен прослушиваться, по номеру порта или имени службы;
  • listenaddress — задает IPv4-адрес, который должен прослушиваться. Может быть введен IP-адрес, NetBIOS-имя или DNS-имя компьютера. Если адрес не задан, по умолчанию используется локальный компьютер;
  • connectaddress — задает IPv4-адрес, к которому следует подключаться. Может быть введен IP-адрес, NetBIOS-имя или DNS-имя компьютера. Если адрес не задан, по умолчанию используется локальный компьютер;
  • connectport — задает порт IPv4, к которому следует подключаться, по номеру порта или имени службы. Если параметр connectport не задан, по умолчанию используется значение listenport на локальном компьютере.

например:
netsh interface portproxy add v4tov4 listenport=5556 listenaddress=192.168.1.1 connectport=3389 connectaddress=192.168.1.10
В этом примере на компьютере с IP адресом 192.168.1.1 был открыт порт № 5556. При подключении к этому порту все пакеты, приходящие на порт, автоматически будут пересылаться на IP адрес 192.168.1.10, на порт 3389 (RDP).

Проверка правильности настройки port mapping

В первую очередь проверяем, появилось ли наше правило в списке правил netsh:
netsh interface portproxy show all

Если правило появилось, убеждаемся, что настроенный нами порт прослушивается. Для этого выполним команду:
netstat -ano | findstr :
например:
netstat -ano | findstr :5556

Если порт не прослушивается (т.е. port mapping не выполняется), то эта команда не отобразит ничего. Если же наша затея увенчалась успехом, то мы увидим что-то типа такого сообщения:
TCP . 5556 0.0.0.0:0 LISTENING .

В случае возникновения проблем с подключением проверьте, что у Вас правильно настроен (или отключен) брандмауэр (который может блокировать подключения на открытый Вами порт).

Удаление port mapping

Для того, чтобы удалить все правила перенаправления (простейший случай) достаточно выполнить команду (напоминаю, командная строка должна быть запущена от имени администратора!):
netsh interface portproxy reset

После этого убедитесь, что все правила удалены: по команде
netsh interface portproxy show all
не должно ничего отображаться.

Если же Вы хотите удалить только одно правило перенаправления портов, команда будет немного сложнее:
netsh interface portproxy delete v4tov4 listenport= <целое_число или имя_службы>listenaddress=

  • listenport — обязательный параметр. Задает удаляемый порт IPv4;
  • listenaddress — задает удаляемый адрес IPv4. Если адрес не задан, по умолчанию используется локальный компьютер.

например:
netsh interface portproxy delete v4tov4 listenport=5556
В этом примере мы удаляем port mapping, который был настроен на локальном компьютере, на порту 5556.

Изменение настроек port mapping через netsh

Если Вы хотите изменить значения параметров существующей на portproxy-сервере (т.е. на компьютере, где Вы запускали команду netsh interface portproxy add . ) записи, созданной командой add v4tov4, или добавить новую запись port mapping / port forwarding, выполните следующую команду:
netsh interface portproxy set v4tov4 listenport= <целое_число или имя_службы>listenaddress= connectport= <целое_число или имя_службы>connectaddress=

  • listenport — обязательный параметр. Задает порт IPv4, который должен прослушиваться, по номеру порта или имени службы;
  • listenaddress — задает IPv4-адрес, который должен прослушиваться. Может быть введен IP-адрес, NetBIOS-имя или DNS-имя компьютера. Если адрес не задан, по умолчанию используется локальный компьютер;
  • connectaddress — задает IPv4-адрес, к которому следует подключаться. Может быть введен IP-адрес, NetBIOS-имя или DNS-имя компьютера. Если адрес не задан, по умолчанию используется локальный компьютер;
  • connectport — задает порт IPv4, к которому следует подключаться, по номеру порта или имени службы. Если параметр connectport не задан, по умолчанию используется значение listenport на локальном компьютере.
Читайте также:  Фильтр atoll a 550m std отзывы

например:
netsh interface portproxy set v4tov4 listenport=5556 listenaddress=192.168.1.1 connectport=3300 connectaddress=192.168.1.10
В этом примере на компьютере с IP адресом 192.168.1.1 была изменена настройка порта № 5556: теперь при подключении к этому порту все пакеты, приходящие на порт, автоматически будут пересылаться на IP адрес 192.168.1.10, на порт 3300.

Примечание: Можно изменять любые значения параметров для существующей записи сервера portproxy. Если значения не заданы, изменения не производятся.

Технический блог специалистов ООО"Интерфейс"

  • Главная
  • Настраиваем проброс портов в Windows при помощи командной строки и Portproxy

Настраиваем проброс портов в Windows при помощи командной строки и Portproxy

  • Автор: Уваров А.С.
  • 11.02.2016

Необходимость проброса портов весьма часто встающая перед системным администратором задача. Обычно для этой цели используют службы маршрутизации и удаленного доступа (RRAS), но в ряде случаев использование данного инструмента избыточно. В тоже время немногие знают о такой службе как Portproxy, которая управляется из командной строки при помощи команд Netsh. Тем не менее данная служба позволяет справиться с поставленной задачей проще, быстрее и удобнее, чем инструменты графического интерфейса.

Часто можно услышать совершенно неверное утверждение, что в части сетевых настроек операционные системы Windows значительно уступают своим конкурентам (Linux и BSD). Отчасти такие суждения опираются на опыт администрирования стандартных ролей полностью игнорируя возможности командной строки.

Начиная с Windows Server 2003 в состав системы был в введена команда Netsh, которая позволяет гибко управлять сетевыми настройками компьютера. Обзор всех возможностей этой утилиты займет не одну статью, поэтому мы остановимся на командах Netsh для интерфейса Portproxy, позволяющих непосредственно решить нашу задачу.

Данный набор команд позволяет перенаправлять приходящие пакеты с IPv4 и IPv6 портов на любые IPv4 и IPv6 порты компьютера назначения в любых комбинациях. Единственное ограничение — portproxy может работать только с протоколом TCP, но в большинстве случаев этого достаточно.

Для добавления перенаправления используется команда add v4tov4 (если требуется перенаправление с IPv4 в IPv6 используйте v4tov6 и т.д.), полный синтаксис будет такой:

  • listenaddress — локальный адрес на котором принимаются соединения
  • listenport — локальный порт на котором принимаются соединения
  • connectaddress — удаленный или локальный адрес на который перенаправляются соединения
  • connectport — удаленный или локальный порт на который перенаправляются соединения

Для изменения уже существующего правила используется команда set v4tov4, которая имеет идентичный синтаксис, listenaddress и listenport — являются обязательными параметрами. Из необязательных параметров можно указывать только тот, который нужно изменить.

Для удаления правил используйте delete v4tov6 с указанием входящих адреса и порта:

Для просмотра существующих правил введите:

Вместо all допустимо указывать v4tov4 или v6tov4 и т.п. для просмотра только соответствующих правил.

Для сброса всех существующих правил используйте:

Чтобы не быть голословными рассмотрим практический случай использования portproxy в одной довольно непростой ситуации.

У одного нашего клиента имеется две аффилированных (т.е. принадлежащих одному владельцу) организации, имеющие разный вид деятельности и между собой не взаимодействующие. Одна из них находится в городе и не испытывает проблем с внешними коммуникациями. Вторая в сельской местности где доступен только среднего качества интернет, а о выделенном IP-адресе не может быть и речи.

Поэтому, когда встал вопрос организации удаленного доступа к сети второй организации с административными и контрольными целями, то было принято решение использовать для этого ресурсы первой организации, при этом внутренние сети обоих компаний не должны видеть друг друга и вообще иметь какой-либо доступ к ресурсам другой организации.

Кроме того, выяснилось, что обе сети имеют одинаковый диапазон IP-адресов, что делало маршрутизацию между ними в принципе крайне затруднительной. По условиям задачи требовалось обеспечить доступ к RDP (порт 3389) сервера SRV-2-1 и SSH (порт 22) сервера SRV-2-2 второй организации, для этого выделялся сервер SRV-1-1 первой компании, при этом, как можно увидеть из схемы ниже, сервера обоих компаний также имеют одинаковые внутренние адреса.

Между серверами был поднят VPN-туннель, и они видят друг друга по адресам VPN-сети (10.8.0.0), а дальше на выручку приходит portproxy. Так как порты 3389 и 22 соответствующие нужным службам уже использовались для целей администрирования первой компании, то мы выбрали для служб второй компании внешние порты 3390 и 22222, которые были проброшены с внешнего интерфейса роутера первой компании на сервер SRV-1-1 штатным образом.

Теперь нам надо перенаправить все соединения на эти порты в сеть второй компании, но там нам доступен только SRV-2-1 по VPN-адресу, поэтому направим пакеты туда, для чего создадим два правила:

Первое правило отправит все пакеты пришедшие на порт 3390 с адресом 192.168.0.200 (внутренний адрес SRV-1-1) в VPN-туннель серверу SRV-2-1, а так как он уже является целевым для службы RDP, то сразу меняем порт назначения на 3389. Первая часть задачи выполнена.

Читайте также:  Просмотр фото стандартная программа windows 10

Второе правило отправит к SRV-2-1 все пакеты с порта 22222 (SSH), теперь нам надо научить этот сервер как правильно доставить их адресату. Для этого добавим уже этому серверу следующее правило:

Согласно которому сервер SRV-2-1 в сети второй компании будет слушать порт 22222 на интерфейсе VPN-сети и передавать все полученные пакеты на порт 22 (SSH) сервера SRV-2-2.

Как видим мы весьма просто реализовали довольно сложную схему, так пакет к серверу SRV-2-2 проходит три промежуточных узла, но при этом мы не настраивали никакой маршрутизации и не устанавливали никакого дополнительного ПО и вообще обошлись минимальным вмешательством в инфраструктуру.

Иногда возникает необходимость доступа извне к устройству, которое расположено в локальной сети. Например, если это IP-видеокамера или сервер используемый для игр, возможно, требуется использовать удаленное управление каким либо из компьютеров. Таких устройств может быть достаточно много в локальной сети. В этой статье разберемся, как осуществляется доступ с помощью проброса портов.

О пробросе портов

Локальная сеть (LAN) организована таким образом, что у устройств, находящихся в ней есть доступ во внешнуюю сеть (WAN), в то время как из глобальной сети получить доступ в локальную не получится.

Зачастую требуется открыть доступ к устройствам, находящимся в локальной сети. Например, если у вас есть FTP сервер и нужно, чтобы знакомые могли к нему подключаться, скачивать и обновлять файлы. Для того, чтобы получить доступ к файлам, хранящимся на нем, требуется открыть порты. В этом случае сделать так, чтобы пакеты пришедшие на 21 порт роутера (стандартный порт FTP) перенаправлялись на 21 порт компьютера, находящегося в локальной сети, на котором запущен FTP сервер.

Не обязательно, чтобы номер открытого порта на роутере был таким же, как и на сервере.

После перенаправления портов, TCP и (или) UDP пакеты, пришедшие на заданный порт роутера, будут перенаправлены на нужный порт устройства, находящегося в локальной сети. Для этого нужно, чтобы IP-адрес роутера был белый (статический внешний IP-адрес). О белых и серых IP адресах будет рассказано ниже.

Вот еще пример — есть несколько видеокамер в локальной сети, у каждой из них свой IP-адрес. С помощью программы удаленного управления можно подключаться к устройствам по определенному порту. Видеокамеры могут быть установлены в локальной сети одного объекта. Если мы хотим получить доступ к ним через интернет, это можно организовать с помощью проброса портов.

Теперь разберемся по пунктам как это все должно быть устроено, на что следует обратить внимание.

Внешний IP-адрес

IP-адрес может быть:

  • Внешний статический IP-адрес, который закреплен за вашим роутером. Обычно выдается провайдером за дополнительную плату, в некоторых случаях предоставляется за дополнительную абонентскую плату.
  • Внутрисетевой статический. В этом случае к вам подключиться можно только внутри сети провайдера. Извне этот IP-адрес не будет виден.
  • Внешний динамический. Этот вариант часто встречается, если вы выходите в интернет через 3G/4G роутер. Вам выдается IP адрес из свободных, но через какое-то время он может измениться, например, после перезагрузки роутера.
  • Внутрисетевой динамический. IP-адрес не будет виден из интернета, так же он может измениться со временем.

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

Узнать свой IP-адрес можно с помощью разных сервисов, например, 2ip.ru, myip.ru, myip.com.

Безопасность

Так как в случае проброса портов будет открыт доступ к устройствам, находящимся внутри вашей локальной сети, особое внимание следует уделить безопасности:

  • Для подключения к устройству должен использоваться надежный пароль;
  • Если передается конфиденциальная информация, то она должна быть в шифрованном виде.

В этом случае злоумышленник может:

  • Установить на компьютер свои программы;
  • Перенастроить локальную сеть;
  • Отслеживать и влиять на обмен данными по локальной сети.

Подключение

Перед настройкой проброса портов, следует подключиться к роутеру. У роутера обычно по умолчанию IP-адрес 192.168.0.1 или 192.168.1.1. Логин по умолчанию admin, а пароль может быть тоже admin, иногда 1234. Настройки роутера по умолчанию указываются на наклейке с тыльной стороны.

Вводим адрес роутера в браузере. На рисунке фото выше это 192.168.1.1, на запрос имени пользователя и пароля – заполняем соответствующие поля. После этого попадаем в главное меню роутера.

Установка статических адресов

У оборудования, к которому надо дать доступ из внешней сети, могут быть адреса в локальной сети:

  • Статические, то есть заданные вручную на каждом устройстве;
  • Динамические, раздаваемые DHCP сервером из пулла адресов.

При использовании DHCP сервера, если у устройств заданы статические IP-адреса, следует проследить, чтобы они не были из диапазона раздаваемых динамически. Это для того, чтобы новое устройство, подключенное к сети, случайно не получило такой же IP-адрес.

Читайте также:  После переустановки виндовс 10 пропал звук

Если же IP-адрес получен динамически, то следует его закрепить за устройством по MAC адресу. Это делается в настройках DHCP сервера. На рисунке ниже показан пример резервирования адреса. После резервирования, следует перезагрузить маршрутизатор.

Настройка проброса портов

После того, как все подготовили, можно настроить проброс портов на роутере. Это осуществляется путем заполнения таблицы, в которой указаны:

  • Порт роутера;
  • IP устройства;
  • Порт устройства.

Роутер будет проверять все входящие пакеты. IP-пакеты пришедшие на указанный порт роутера будут перенаправлены на выставленный порт устройства.

В настройках переадресации добваляем новый виртуальный сервер.

Запись настраивается следующим образом:

  • Порт сервиса – это как раз тот порт, по которому будут подключаться из интернета;
  • Внутренний порт – это порт устройства, к которому надо открыть доступ;
  • IP-адрес – это адрес устройства в локальной сети
  • Протокол – тут можно выбрать протокол TCP или UDP. Можно выбрать “ВСЕ”, тогда будут перенаправляться оба протокола.
  • Состояние – здесь выбираем “включено”. При не надобности, можно отключить проброс, не удаляя запись.

Пункт “стандартный порт сервиса” предназначен только для того, чтобы упростить выбор портов. При выборе нужного сервиса, их номера просто подставятся в поля “порт сервиса” и “внутренний порт”. Ниже будут рассмотрены основные сервисы.

После того как все настройки выполнены, следует их сохранить.

Номера портов

Следует обратить внимание, что номера портов могут задаваться в диапазоне от 0 до 65536.

На компьютере эти порты делятся на следующие группы :

  • Системные (от 0 до 1023);
  • Пользовательские (от 1024 до 49151);
  • Динамические (от 49152 до 65535).

Если для проброса портов вам нужно выбрать любой порт, который будет открыт на роутере, то без особой необходимости желательно не использовать системный диапазон. Лучше всего в таком случае открывать порты на роутере из динамического диапазона.

Стандартные сервисы

Для организации доступа к сервисам, некоторые роутеры помогают правильно выбрать номер порта автоматически. Таким образом, можно сделать так, что при обращении к порту FTP из интернета, обращение переадресовывалось на FTP сервис, запущенный на одном из локальных компьютеров. Рассмотрим основные:

Сервис
Порт Пояснение
DNS 53 Преобразование символьного наименования в IP-адрес
FTP 21 Хранение и передача файлов
GOPHTER 70 Хранение и передача документов
HTTP 80 Получение информации с сайтов
NNTP 119 Сервер новостей
POP3 110 Получение почты
PPTP 1723 Защищенное соединение
SMTP 25 Прием и передача почты
SOCK 1080 Передача минуя межсетевой экран
TELNET 23 Управление в текстовом виде

Брандмауэр

После настройки проброса портов на роутере все должно работать. Но то же делать, если все равно не удается подключиться? В таком случае следует проверить настройки антивируса и брандмауэра Windows на компьютере, к которому осуществляется подключение. Возможно они считают подключения подозрительными и не дают доступ. В этом случае в брандмауэре следует прописать правило, разрешающее подключение к заданному порту.

В настройки брандмауэра проще всего попасть двумя способами:

  • Записываем в строке поиска “Брандмауэр Защитника Windows”. После ввода первых нескольких букв, находится нужное приложение.
  • Выполнить “firewall.cpl”. Для этого надо одновременно нажать комбинации клавиш + , в поле поле открыть записываем команду и нажимаем “OK”.

В дополнительных параметрах выбрать правила для входящих подключений. Там создаем новое правило. Рассмотрим это подробно.

Здесь показано основное окно настроек брандмауэра . Выбираем дополнительные параметры.

Два раза щелкаем мышью по пункту “Правила для входящих подключений”. После этого в правой колонке, которая называется “Действия” жмем на “Создать правило…”.

Выбираем тип правила “Для порта” и жмем далее.

Выбираем необходимый протокол. В большинстве случаев это TCP. Указываем локальный порт, для которого мы ранее настраивали проброс порта на маршрутизаторе. Можно задавать сразу несколько портов через запятую или диапазон через “-“.

Выбираем “Разрешить подключение”.

Указываем галочками профили.

Пишем свое имя для правила. Желательно выбрать такое имя, чтобы потом было легко его найти, в случае если решити отключить это правило или видоизменить. Можно для себя оставить пометку в виде описания, чтобы потом было легче разобраться для чего это правило было создано.

После того как параметры были настроены, жмем кнопку “Готово”. Созданное правило автоматически добавится в список правил для входящих подключений и активизируется. При необходимости его можно редактировать, отключить или удалить.

Отключение брандмауэра

В основном меню брандмауэра имеется пункт “Включение и отключение брандмауэра Защитника Windows”.

Выбрав этот пункт, можно отключить брандмауэр. Но это делать не рекомендуется, разве что для проверки того, что именно брандмауэр влияет на то, что не удается открыть порт.

После проверки не забудьте включить брандмауэр.

«>