- Настройка port mapping в windows с помощью netsh
- О чём речь и зачем это нужно
- Как сделать port mapping (port forwarding) через netsh
- Проверка правильности настройки port mapping
- Удаление port mapping
- Изменение настроек port mapping через netsh
- Записки IT специалиста
- Настраиваем проброс портов в Windows при помощи командной строки и Portproxy
- Дополнительные материалы
- Переадресация портов: что это такое и как ее настроить?
- Что такое переадресация портов?
- Для чего используется переадресация портов?
- Как настроить переадресацию портов?
- Является ли переадресация портов безопасной?
- Что такое UPnP?
- Работает ли переадресация портов с VPN?
Настройка port mapping в windows с помощью netsh
О чём речь и зачем это нужно
В 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=
- 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=
- listenport — обязательный параметр. Задает порт IPv4, который должен прослушиваться, по номеру порта или имени службы;
- listenaddress — задает IPv4-адрес, который должен прослушиваться. Может быть введен IP-адрес, NetBIOS-имя или DNS-имя компьютера. Если адрес не задан, по умолчанию используется локальный компьютер;
- connectaddress — задает IPv4-адрес, к которому следует подключаться. Может быть введен IP-адрес, NetBIOS-имя или DNS-имя компьютера. Если адрес не задан, по умолчанию используется локальный компьютер;
- connectport — задает порт IPv4, к которому следует подключаться, по номеру порта или имени службы. Если параметр connectport не задан, по умолчанию используется значение listenport на локальном компьютере.
например:
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. Если значения не заданы, изменения не производятся.
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
- Главная
- Настраиваем проброс портов в Windows при помощи командной строки и Portproxy
Настраиваем проброс портов в Windows при помощи командной строки и Portproxy
Необходимость проброса портов весьма часто встающая перед системным администратором задача. Обычно для этой цели используют службы маршрутизации и удаленного доступа (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. Первая часть задачи выполнена.
Второе правило отправит к SRV-2-1 все пакеты с порта 22222 (SSH), теперь нам надо научить этот сервер как правильно доставить их адресату. Для этого добавим уже этому серверу следующее правило:
Согласно которому сервер SRV-2-1 в сети второй компании будет слушать порт 22222 на интерфейсе VPN-сети и передавать все полученные пакеты на порт 22 (SSH) сервера SRV-2-2.
Как видим мы весьма просто реализовали довольно сложную схему, так пакет к серверу SRV-2-2 проходит три промежуточных узла, но при этом мы не настраивали никакой маршрутизации и не устанавливали никакого дополнительного ПО и вообще обошлись минимальным вмешательством в инфраструктуру.
Дополнительные материалы
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал:
Переадресация портов: что это такое и как ее настроить?
Переадресация портов может быть мощным инструментом для разблокировки дополнительных функций на маршрутизаторе, но также может стать серьезной уязвимостью в системе безопасности.
Что такое переадресация портов?
Чтобы понять, что такое переадресация портов, сначала необходимо понять, какую функцию выполняет маршрутизатор. Брандмауэр NAT, установленный в маршрутизаторе, посылает входящие соединения на устройства, которые их запрашивали, а также блокирует нежелательные входящие данные. Это происходит автоматически, но если вы хотите, чтобы ваши домашние устройства подключались к удаленному устройству, вам нужно настроить переадресацию портов.
Стандартный маршрутизатор имеет более 60 000 портов. Примерно первые 1000 из них обычно предназначены для выполнения специфических функций. Оставшиеся могут быть назначены на любое устройство или программу по вашему желанию. Это можно сделать, просто открыв порт на маршрутизаторе и назначив его конкретному устройству. Теперь, когда устройство отправит запрос на подключение к вашему маршрутизатору, автоматически произойдет прямое соединение.
Для чего используется переадресация портов?
Переадресация портов необходима всякий раз, когда вам нужно установить прямое подключение между устройством в вашей домашней сети и удаленным устройством. Например:
- Присоединиться к камере видеонаблюдения или радионяне, когда вы находитесь вдали от дома;
- Удаленно подключиться к домашнему серверу;
- Использовать ПО для удаленного рабочего стола, чтобы получить доступ к домашнему компьютеру;
- Разрешить другим пользователям подключаться к вашему веб-серверу;
- Подключаться к устройству IoT в домашней сети;
- Подключаться к игровому серверу;
- Поддерживать непрерывный и прямой доступ к серверу вызовов VoIP.
Существует много других законных способов использования переадресации портов, но многие из них являются сложными и будут непонятны обычным пользователям.
На видео: Порты и перенаправление\открытие портов. Инструкция и объяснения на пальцах!
Как настроить переадресацию портов?
Конкретные инструкции по переадресации портов могут отличаться для каждого отдельного роутера, поэтому будет приведен общий обзор того, как может выглядеть этот процесс:
-
- 1. Войдите в свой маршрутизатор. Это можно сделать, введя его IP-адрес (или, другими словами, шлюз по умолчанию) в адресную строку.
- 2. Откройте панель настроек переадресации портов. Там вы увидите список пустых конфигураций портов.
- 3. Выберите одну конфигурацию и введите внутренние и внешние номера портов (лучше всего выбрать более 1000 и менее 65 000). В большинстве случаев внешние и внутренние порты не должны совпадать друг с другом.
- 4. После установки портов введите локальный IP-адрес устройства, к которому вы хотите подключиться в сети (локальный адрес будет отличаться от IP-адреса вашего маршрутизатора).
- 5. Теперь маршрутизатор может перенаправлять любой запрос, отправленный на этот порт, прямо на устройство, не раскрывая его IP-адрес. Но как это происходит?
Допустим, ваш маршрутизатор имеет IP-адрес 193.24.171.247. Если порт, который вы настроили для подключения к вашей домашней камере видеонаблюдения 8028, то запрос на ваш маршрутизатор для подключения непосредственно к камере через переадресацию портов будет отправлен по этому адресу: 93.24.171.247:8028. Это все равно, что набрать номер телефона с добавочным номером.
Является ли переадресация портов безопасной?
Представьте себе, что порты вашего маршрутизатора — это двери, и большинство из них заперты. Информация из интернета все еще может попасть внутрь — она должна быть проверена и допущена маршрутизатором. Но если одна из этих дверей открыта, то любой, кто попытается войти внутрь, сможет это сделать.
В каком – то смысле это не так плохо, как кажется — открытый порт (или незапертая дверь) ведет только к тому устройству, на которое он был направлен. Но если, например, ваша камера видеонаблюдения имеет слабый пароль (или не имеет его вообще), злоумышленник может видеть то же, что видит ваша камера и даже контролировать ее. Порт, открытый непосредственно на вашем компьютере, может использоваться для заражения компьютера или для взлома вашей сети. Поэтому очень важно защищать свои устройства надежными паролями.
Другая проблема заключается в том, что порты, настроенные вручную, остаются открытыми до тех пор, пока вы не закроете их вручную. Их можно легко взломать. Обычно невозможно использовать уже занятый порт, но хакеру ничего не стоит подключиться к открытому и неиспользуемому порту.
Что такое UPnP?
Возможно, ранее вы уже использовали переадресацию портов без ручной настройки и даже не знали об этом. Как? В любом современном устройстве используется технология Universal Plug and Play (UPnP), которая позволяет приложениям открывать порты на маршрутизаторе при необходимости и закрывать их по окончании работы.
UPnP может быть удобен, но здесь также существуют потенциальные проблемы с безопасностью. Предполагается, что каждому устройству в своей локальной сети можно доверять. Поэтому если одно из них случайно заразилось вредоносным ПО, которое хочет получить прямое соединение с удаленным хакером, ваш UPnP-маршрутизатор разрешит это без вопросов. Такое подключение было бы невозможным, если бы UPnP был отключен.
Устаревшие маршрутизаторы с плохой UPnP уязвимы для ряда эксплойтов. Некоторые из них могут вообще открыть все порты на вашем маршрутизаторе или использовать UPnP для изменения DNS-сервера.
Работает ли переадресация портов с VPN?
Переадресация портов в целом может работать с протоколом VPN. Но многие из них блокируют практически все соединения порта внутри устройства, за исключением тех, которые наиболее часто используются популярными приложениями.
Серфинг интернета с открытыми портами открывает ряд рисков в области безопасности. Блокировка доступа ко всем портам, за исключением тех, которые необходимы для работы VPN и доступа в интернет, является частью того, как некоторые VPN обеспечивают вашу безопасность.