Индивидуальный подход
Доверительные партнерские отношения, подробное изучение сферы деятельности клиентов, особенностей организации их работы позволяют нам четко определять необходимые тактические и стратегические задачи, что поднимает наших партнеров на более высокий уровень среди конкурентов.
Подробнее
Гарантия качеcтва
Выполнение поставленных задач в максимально короткие сроки. Надежность и высокий профессионализм. «Прозрачная» ценовая политика. Предоставление любой информации клиенту, касающейся текущей работы и расходов. Мы полностью отвечаем за качество выполненных работ и соответствие вашим желаниям.
Подробнее
Решение задач любой сложности
Для нас нет ничего невозможного! Реализация любых целей по оригинальным проектам. Все работы выполняются квалифицированными специалистами, регулярно проходящими плановое обучение и аттестацию.
Подробнее
1 июля 2016
Запускаем командную строку, нажимаем (windows + r) вводим cmd, жмем enter.
Для открытия порта вводим команду
netsh advfirewall firewall add rule name=»Название правила» protocol=»TCP или UDP» localport=Порт action=allow dir=IN
После чего жмем enter.
Если появилось сообщение ОК, то вы сделали все правильно.
(Не забываем выполнять данные действия с привилегиями администратора)
— Advertisement —
Hello! One of the protection mechanisms of the server is the implementation of the Firewall. Although there are third party options, Microsoft offers a Firewall integrated into the operating system. It is very efficient and highly configurable. Additionally, it can allow or block connections or redirect connection requests. Also, by customizing the rules it is possible to allow only authorized communications. On the other hand, port management is vital within the Firewall. Since they allow communication between the server and the external network. In fact, the vast majority of attacks are carried out through these ports. For this reason, the Firewall blocks most of the ports. However, it is occasionally necessary for an app to have access to one. In this case, the administrator must authorize the program’s access to the required port. So let’s see how to open a firewall port in Windows Server 2019/2016.
How to open the firewall port using the advanced settings.
In the first place it is necessary to enter the Control Panel and follow the next path:
- System and security
- Windows Defender Firewall
- Advanced Settings
The advanced settings of the Windows Firewall are immediately displayed. There are the entry and exit rules plus the security rules for connections. Finally, there are the firewall supervision options.
Clicking on the input rules will display the pre-configured Windows Server rules. As the name implies, they are related to incoming network connections and packets. Also, some rules are not activated by default. Therefore, you just need to double-click on them and then enable them.
Creating a new rule in the Windows Server Firewall.
By right-clicking on inboud rules, you can create a new rule.
There are several options for the creation of the rule. However, you should only select Port. Press Next to continue
Now it’s time to set your connection preferences:
- TCP: It is a connection-oriented protocol. In other words, its function is to create connections with the aim of sending data flow.
- UDP: It is a non connection-oriented protocol. Consequently, its development is based on the exchange of data grams.
On the other hand, it is possible to enable all ports for connection. This is obviously an unsecured option. Or you can configure specific ports.
Now it is time to determine what action the new rule will take:
- Allow connection through the port.
- Allow connection if secure. That is, allow data to be transmitted only if the connection is authenticated through Ipsec.
- Block connection through the port.
Please select the option corresponding to Allow connection and press Next. Now it is time to determine which profiles the new rule will be applied to.
Finally, you can assign a name and description to the new rule. This way it is easier to locate it later.
Back to the previous screen, you can see the new rule created.
Ultimately we have seen how to open a firewall port in Windows Server 2019/2016. In addition, the tutorial also serves to block a specific port. This way, the administrator can increase the functionality of the Firewall. All right, that’s it for now. Greetings!
June 18, 2018
Last updated on July 20, 2020
To use Parallels RAS on Windows Server 2008 R2 up to Windows Server 2019 with Windows Firewall enabled, several ports must be opened for the Parallels RAS components to communicate.
List of TCP and UDP Ports Used by Parallels RAS
The figure below shows the most common ports used by the Parallels RAS component to communicate when running on different machines:
Figure 1
Note: In Figure 1, the “>>” implies direction. If Server A is connecting to Server B, it will show “A >> B.” Therefore, you should open the following ports for the Parallels RAS components to work:
Gateway
TCP Ports 80 and 443
UDP Port 20000
Publishing Agent
TCP Ports 20001, 20002 and 20003
TS Agent
TCP Port 30004
UDP Port 30004
VDS Agent
TCP Port 30007
UDP Port 30007
For a detailed and complete list of all the ports that the Parallels RAS components use to communicate, please refer to the Port Reference section in the Parallels Remote Application Server Administrator’s Guide.
Start your free Parallels RAS 30-day trial today!
Default Windows Server Firewall Configuration
The Windows Firewall is enabled by default on all profiles on a Windows Server operating system. The default configuration has the following rules:
- Inbound connections that do not match a rule are blocked.
- Outbound connections that do not match a rule are allowed.
The Windows Firewall configuration is already set to allow all outgoing connections; therefore, only ports for incoming connections should be opened. These must be configured in the “Inbound Rules,” as explained below.
Windows Firewall Configuration
There are three different ways to open ports in Windows Server 2008/2012 R2/2016 and Windows Server 2019. You can do so by using either:
- MMC
- The command line (netsh)
- PowerShell commands (only for 2012R2 and 2016)
Opening Ports on the Windows Server Firewall Using GUI
To open a port in the firewall using the GUI in Windows Server 2008/2012 R2/2016 and Windows Server 2019, follow the steps below:
- Log in using an administrator account.
- Click Start > Administrative Tools > Windows Firewall with Advanced Security
Figure 2
- Click on Inbound Rules on the left of the MMC (Figure 3), and then on New Rule on the Right of the MMC (Figure 4).
Figure 3 Figure 4
There are five steps to open a port and accept incoming connections with the wizard:
- Rule Type
- Protocol and Ports
- Action
- Profile
- Name
For this example, we will open TCP port 20002 on servers that are running the Parallels RAS Publishing Agents role:
- Rule Type section – select “Port” and click “Next”.
- Protocol and Ports section – select “TCP” as the type of protocol and type “20002″ in the “Specific local ports” input field:
- Action section – select “Allow the Connection” and click “Next”.
- Profile section – select all three options and click “Next”. If you wish to limit the connection to a particular profile, select only the profiles that are appropriate to your setup. For this example, we will open the port on all profiles.
- Name section – enter a “Name” for this rule. It is recommended to list the port number in the name, so the rule is easily recognizable. For example, the new rule could be named ”Pub_Agent_20002_IN”. Click ”Finish” when ready.
Repeat the above procedure for each additional port and/or protocol you’d like to open in each server.
Opening Ports on the Windows Server Firewall Using Command Line (netsh)
To open a port on the Windows Firewall using the netsh command line, follow the procedure below:
- Login to the server using an administrator account.
- Run the Command Prompt as Administrator.
- Execute the following command to open the TCP port 20002 on the servers running the Publishing Agents role:
Below is an explanation of the format of the netsh command: Note: By default, netsh opens the specified port on all profiles. If you want to specify a specific profile, use the profile parameter: profile=public|private|domain
To open additional ports, repeat the above procedure for each additional port and/or protocol you’d like to open in each server.
Opening Ports on the Windows Firewall Using PowerShell
To open a port in the Windows Firewall using PowerShell commands, follow the procedure below (only applies to 2012 R2 and 2016 Windows Server OS):
- Log in using an administrator account.
- Run the Windows PowerShell as Administrator.
- Execute the following command to open the TCP port 20002 on the servers running the Publishing Agents role:
Below is an explanation of the format of the New-NetFirewallRule PowerShell command:
Note: Default New-NetFirewallRule opens the specified port in all profiles. To specify a specific profile, add the –Profile parameter to the command with one of the following options:
-Profile=public|private|domain
Repeat the above procedure for each additional port and/or protocol you’d like to open in each server.
How to check if the Port is Open
To check if a port is open or not, you need to activate Telnet, which by default is not installed in Windows Server 2008, Windows Server 2012, Windows Server 2016, and Windows Server 2019. The easiest way to install the Telnet client is via the command line as follows:
1. Launch the command prompt as an Administrator
2. Execute the command below:
dism /Online /Enable-feature /FeatureName:TelnetClient
You can also activate Telnet via GUI if you follow the steps outlined in this link.
3. Next, check if a port is open by typing the command using the format below:
telnet [IP address] [port]
In the above command specification, the IP address is the IP address of the server hosting Parallels RAS. At the same time, the port is the port number, which in this case can be 20002. You can check the IP address of the local server by issuing the command below:
ipconfig
For example, if you execute the above command and find that your IP address is 173.20.39.40, you can check if a port 20002 is open or not by issuing the command below:
telnet 173.20.39.40 20002
When you see a blank screen, it indicates port 20002 is open on the server—meaning the test is successful. However, when you see receive a “connecting …” or an error message, it indicates port 20002 is not open on the server.
Start your free Parallels RAS 30-day trial today!
References
Windows Server 2012 Firewall | https://support.rackspace.com/how-to/managing-the-windows-server-2012-firewall/
Windows Server 2008 R2, 2012 Firewall | https://technet.microsoft.com/en-us/library/cc753558(v=ws.11).aspx
Opening ports in the Windows Server firewall | https://technet.microsoft.com/en-us/library/ms345310(v=sql.100).aspx
Fasthosts Windows Server Firewall | https://help.fasthosts.co.uk/app/answers/detail/a_id/2032/~/setup-a-windows-server-firewall
Rackspace | https://support.rackspace.com/how-to/managing-the-windows-server-2012-firewall/
- Remove From My Forums
Не открывается порт
-
Общие обсуждения
-
Здраствуйте!
Мне нужно открыть один порт.
Я пробовал ВСЕ способы его открытия которые я нашёл в интернете:
Вот список того что я пробовал
1) Отключить антивирус
2) Отключить Брэндмауэр
3) Добавить правило о портах (TCP & UDP)
4) Добавить правило о программе в которой мне нужен открытый порт
5) Открыть порт через uTorrent, MediaGet
6) Открыть порт через Роутер
7) Открыть порт через специальные программы
-
Изменен тип
13 февраля 2018 г. 17:24
нет ясности в решении проблемы, как и в описаниии онной
-
Изменен тип
Необходимость проброса портов весьма часто встающая перед системным администратором задача. Обычно для этой цели используют службы маршрутизации и удаленного доступа (RRAS), но в ряде случаев использование данного инструмента избыточно. В тоже время немногие знают о такой службе как Portproxy, которая управляется из командной строки при помощи команд Netsh. Тем не менее данная служба позволяет справиться с поставленной задачей проще, быстрее и удобнее, чем инструменты графического интерфейса.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Часто можно услышать совершенно неверное утверждение, что в части сетевых настроек операционные системы Windows значительно уступают своим конкурентам (Linux и BSD). Отчасти такие суждения опираются на опыт администрирования стандартных ролей полностью игнорируя возможности командной строки.
Начиная с Windows Server 2003 в состав системы был в введена команда Netsh, которая позволяет гибко управлять сетевыми настройками компьютера. Обзор всех возможностей этой утилиты займет не одну статью, поэтому мы остановимся на командах Netsh для интерфейса Portproxy, позволяющих непосредственно решить нашу задачу.
Данный набор команд позволяет перенаправлять приходящие пакеты с IPv4 и IPv6 портов на любые IPv4 и IPv6 порты компьютера назначения в любых комбинациях. Единственное ограничение — portproxy может работать только с протоколом TCP, но в большинстве случаев этого достаточно.
Для добавления перенаправления используется команда add v4tov4 (если требуется перенаправление с IPv4 в IPv6 используйте v4tov6 и т.д.), полный синтаксис будет такой:
netsh interface portproxy add v4tov4 listenaddress=xxx.xxx.xxx.xxx listenport=nnn connectaddress=xxx.xxx.xxx.xxx connectport=nnn
где:
- listenaddress — локальный адрес на котором принимаются соединения
- listenport — локальный порт на котором принимаются соединения
- connectaddress — удаленный или локальный адрес на который перенаправляются соединения
- connectport — удаленный или локальный порт на который перенаправляются соединения
Для изменения уже существующего правила используется команда set v4tov4, которая имеет идентичный синтаксис, listenaddress и listenport — являются обязательными параметрами. Из необязательных параметров можно указывать только тот, который нужно изменить.
Для удаления правил используйте delete v4tov6 с указанием входящих адреса и порта:
netsh interface portproxy delete v4tov4 listenaddress=xxx.xxx.xxx.xxx listenport=nnn
Для просмотра существующих правил введите:
netsh interface portproxy show all
Вместо all допустимо указывать v4tov4 или v6tov4 и т.п. для просмотра только соответствующих правил.
Для сброса всех существующих правил используйте:
netsh interface portproxy reset
Чтобы не быть голословными рассмотрим практический случай использования 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-адресу, поэтому направим пакеты туда, для чего создадим два правила:
netsh interface portproxy add v4tov4 listenport=3390 listenaddress=192.168.0.200 connectport=3389 connectaddress=10.8.0.2
netsh interface portproxy add v4tov4 listenport=22222 listenaddress=192.168.0.200 connectport=22222 connectaddress=10.8.0.2
Первое правило отправит все пакеты пришедшие на порт 3390 с адресом 192.168.0.200 (внутренний адрес SRV-1-1) в VPN-туннель серверу SRV-2-1, а так как он уже является целевым для службы RDP, то сразу меняем порт назначения на 3389. Первая часть задачи выполнена.
Второе правило отправит к SRV-2-1 все пакеты с порта 22222 (SSH), теперь нам надо научить этот сервер как правильно доставить их адресату. Для этого добавим уже этому серверу следующее правило:
netsh interface portproxy add v4tov4 listenport=22222 listenaddress=10.8.0.2 connectport=22 connectaddress=192.168.0.201
Согласно которому сервер SRV-2-1 в сети второй компании будет слушать порт 22222 на интерфейсе VPN-сети и передавать все полученные пакеты на порт 22 (SSH) сервера SRV-2-2.
Как видим мы весьма просто реализовали довольно сложную схему, так пакет к серверу SRV-2-2 проходит три промежуточных узла, но при этом мы не настраивали никакой маршрутизации и не устанавливали никакого дополнительного ПО и вообще обошлись минимальным вмешательством в инфраструктуру.
Дополнительные материалы
- Команды Netsh для интерфейса Portproxy
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
В данном руководстве будет рассмотрена процедура изменения порта RDP в операционной системе Windows Server 2016.
Обратите внимание что — все дальнейшие процедуры меняют порт RDP что приведет к отключению текущего соединения с сервером, в связи с этим рекомендуем использовать другие варианты подключения к серверу (например через Веб консоль из личного кабинета).
Для того чтобы выполнить эту задачу, необходимо осуществить редактирование реестра операционной системы.
Редактирование реестра производится с помощью программы-редактора.
Нажмите Пуск и в панели Поиск напечатайте cmd.
В появившемся окне консоли наберите и выполните команду regedit.
В редакторе реестра нужно отыскать раздел RDP-Tcp, сделать это можно, пройдя такой путь:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp
В нем необходимо отыскать элемент PortNumber (как на картинке выше), и открыть этот параметр.
Далее следует переключиться в Десятичный (Decimal) формат ввода и задать новый порт для подключения по протоколу RDP:
При выборе нового порта для подключения необходимо помнить о том, что существует несколько категорий портов в разбивке по их номерам:
— Номера от 0 до 10213 — известные порты, которые назначаются и контролируются организацией IANA (Internet Assigned Numbers Authority).
Как правило, их используют различные системные приложения ОС.
— Порты от 1024 до 49151 — зарегистрированные порты, назначаемые IANA. Их позволяется использовать для решения частных задач.
— Номера портов от 49152 до 65535 — динамические (приватные) порты, которые могут использоваться любыми приложениями или процессами для решения рабочих задач.
Правило для порта
После изменения порта для удаленного подключения, необходимо открыть его в настройках межсетевого экрана, иначе попытки внешнего соединения будут блокироваться.
Для этого, нужно воспользоваться оснасткой управления Брандмаэур Windows в режиме повышенной безопасности
Открыть ее можно, зайдя в меню: Диспетчер Серверов —> Средства
Далее нужно выбрать пункт «Брандмаэур Windows в режиме повышенной безопасности»
В новом окне выбрать пункт «Правила для входящих подключений», кликнуть по этому пункту правой кнопкой мыши и выбрать «Создать правило»:
Мы будем создавать правило для порта:
Нужно выбрать тип протокола (TCP или UDP) и указать порт, который мы задавали в ходе редактирования реестра
(в нашем примере — протокол TCP, номер порта 60000):
На следующем этапе нужно выбрать тип действия, которое описывает правило.
В нашем случае нужно разрешить подключение.
На следующем шаге необходимо указать область действия правила — оно зависит от того, где работает сервер (в рабочей группе, домене, или частном доступе):
Затем нужно выбрать имя для правила
(рекомендуется выбирать его таким образом, чтобы затем правило было легко узнать среди других):
После этого нужно перезагрузить сервер.
Теперь для подключения к нему по протоколу RDP нужно использовать новый порт.
Используйте наши наработки и знания!
Это поможет Вам эффективно и максимально быстро освоить алготрейдинг.
Во всех версиях Windows вы можете настроить перенаправление/проброс сетевых портов (порт форвардинг) без использования сторонних инструментов. С помощью правила форвардинга вы можете перенаправить входящее TCP соединение (IPv4 или IPv6) с локального TCP порта на любой другой номер порта или даже на порт удаленного компьютера. Перенаправление портов в Windows чаще всего используется для обхода файерволов или чтобы спрятать сервер или службу от внешней сети (NAT/PAT).
В Linux можно довольно просто настроить перенаправление портов довольно просто с помощью правил iptables или firewalld. На серверных системах Windows Server для настройки перенаправления портов можно использовать службу маршрутизации и удаленного доступа (RRAS). Однако есть более простой способ настройки проброса портов с помощью режима
portproxy
в
netsh
, который одинаково хорошо работает в любой версии Windows (начиная с Windows XP и заканчивая современными Windows 11 и Windows Server 2022).
Содержание:
- Включить перенаправления порта в Windows с помощью netsh portproxy
- Настройка правил файервола для режима перенаправления портов Windows
- Управление правилами проброса портов netsh в Windows
- Настройка перенаправления портов с помощью NAT на Hyper-V Server
Включить перенаправления порта в Windows с помощью netsh portproxy
Вы можете включить и настроить перенаправление портов в Windows из командой строки через режим Portproxy команды Netsh.
Синтаксис команды следующий:
netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport
где,
- listenaddress – локальный IP адрес, на котором ожидается соединение (полезно, если у вас несколько сетевых карт в разных подсетях/VLAN или несколько IP адресов на одном интерфейсе);
- listenport – номер локального TCP порта, подключение к которому будет перенаправляться (на этом порту ожидается входящее соединение);
- connectaddress – локальный или удаленный IP-адрес или DNS-имя хоста, на который нужно перенаправить сетевое подключение;
- connectport – номер TCP порта, на который нужно перенаправить трафик с порта listenport.
С помощью опций
netsh interface portproxy add
v4tov6
/
v6tov4
/
v6tov6
можно создавать правила порт форвардинга между для IPv4 и IPv6 адресов илимежду ними.
Допустим наша задача, заставить службу RDP отвечать на нестандартном порту, например 3340 (этот порт, конечно, можно изменить в настройках самой службы, но мы используем именно RDP для упрощения демонстрации техники перенаправления и проброса портов). Для этого нам нужно перенаправить входящий трафик на TCP порт 3340 на другой локальный порт – 3389 (это номер стандартного порта RDP).
Примечание. Обратите внимание, что номер локального порта, который вы указали в listenport не должен быть занят (слушаться) другой службой. Проверьте, что номер порта свободен командой:
netstat -na|find "3340"
Либо вы можете проверить что порт не слушается локально с помощью PowerShell командлета Test-NetConnection:
Test-NetConnection -ComputerName localhost -Port 3340
Чтобы создать правило перенаправления порта, запустите командную строку с правами администратора и выполните команду:
netsh interface portproxy add v4tov4 listenport=3340 listenaddress=10.10.1.110 connectport=3389 connectaddress=10.10.1.110
Где 10.10.1.110 – IP адрес вашего компьютера, на котором настраивается порт-форвардинг.
Теперь с помощью утилиты netstat проверьте, что в Windows теперь слушается локальный порт 3340:
netstat -ano | findstr :3340
Примечание. Если эта команда ничего не возвращает и перенаправление портов через netsh interface portproxy не работает, проверьте, что у вас в Windows включена служба iphlpsvc (IP Helper / Вспомогательная служба IP).
Проверьте состояние службу в консоли services.msc или с помощью команды PowerShell:
Get-Service iphlpsvc
Также на сетевом интерфейсе, для которого создается правило перенаправления портов должна быть включена поддержка протокола IPv6.
Это обязательные условия для корректной работы порт-форвардинга. Без службы IP Helper и без включенной поддержки IPv6 механизм перенаправления не работает.
В Windows Server 2003 / XP для работы перенаправления дополнительно нужно включить параметр реестра IPEnableRouter = 1 в ветке HKEY_LOCAL_MACHINE SystemCurrentControlSetservicesTcpipParameter. Можно включить этот параметр реестра с помощью PowerShell:
Set-ItemProperty -Path HKLM:systemCurrentControlSetservicesTcpipParameters -Name IpEnableRouter -Value 1
Этот параметр также позволяет включить маршрутизацию между разными подсетями в Hyper-V.
Вы можете определить процесс, который слушает указанный локальный порт по его PID (в нашем примере PID – 636):
tasklist | findstr 636
Теперь попробуйте подключиться на новый порт с удаленного компьютера при помощи любого RDP клиента. В качестве rdp-порта нужно указать 3340 (номер порта указывается после двоеточия после адреса rdp-сервера). Hапример, ,
10.10.1.110:3340
В этом примере порт 3340 нужно предварительно открыть в Windows Defender Firewall (см. следующий раздел статьи).
RDP подключение должно успешно установиться.
Правила проброса портов portproxy являются постоянными и не удаляются при перезагрузке Windows. Эти правила хранятся в реестре. Можно вывести список правил перенаправления netsh в реестре с помощью PowerShell:
Get-ItemProperty -Path HKLM:SYSTEMCurrentControlSetServicesPortProxyv4tov4tcp
Если нужно перенаправить входящее TCP соединение на удаленный компьютер, используйте такую команду:
netsh interface portproxy add v4tov4 listenport=3389 listenaddress=0.0.0.0 connectport=3389 connectaddress=192.168.1.100
Это правило перенаправит весь входящий RDP трафик (с локального порта TCP 3389) с этого компьютера на удаленный компьютер с IP-адресом 192.168.1.100.
Нужно отметить, что режим portproxy в Windows не поддерживает сохранения IP источника в перенаправленном сетевом пакете. Т.е. если вы пробросите 443 порт Windows компьютера на внутренний веб-сервер, то на целевом сервере все входящие соединения будут идти с одного и того же IP адреса (Windows компьютер с активным режимом netsh portproxy). Если вам нужно использовать переадресацию с сохранением IP источника, нужно использовать NAT на внешнем фаейволе или на Hyper-V (описано ниже).
Так же для проброса локального порта на удаленный сервер в Windows можно использовать технику SSH туннелей.
Настройка правил файервола для режима перенаправления портов Windows
Проверьте, что в настройках вашего файервола (брандмауэра Windows или стороннего межсетевого экрана, такие часто включаются в состав антивирусного ПО) разрешены входящие подключения на новый порт. Вы можете добавить новое разрешающее правило в Windows Defender Firewall командой:
netsh advfirewall firewall add rule name=”RDP_3340” protocol=TCP dir=in localip=10.10.1.110 localport=3340 action=allow
Или с помощью командлета PowerShell New-NetFirewallRule:
New-NetFirewallRule -DisplayName "RDP_3340" -Direction Inbound -Protocol TCP –LocalPort 3340 -Action Allow -Enabled True
При создании входящего правила файервола для порта 3340 через графический интерфейс Windows Defender, не нужно ассоциировать с правилом программу или процесс. Данный порт слушается исключительно сетевым драйвером.
Если вы отключаете правило portproxy, не забудьте удалить оставшиеся правила файервола так:
netsh advfirewall firewall del rule name="RDP_3340"
или с помощью PowerShell:
Remove-NetFirewallRule -Name RDP_3340
Управление правилами проброса портов netsh в Windows
Можно создать любое количество правил перенаправления локальных портов Windows. Все правила netsh interface portproxy являются постоянными и сохраняются в системе после перезагрузки Windows.
Несколько раз сталкивался со случаями, когда в Windows Server 2012 R2 правила перенаправления портов сбрасывались после перезагрузки сервера. В этом случае рекомендуется проверить нет ли периодических отключений на сетевом интерфейсе, и не меняется ли IP адрес при загрузке ОС (лучше использоваться статический IP, вместо динамического DHCP). В качестве обходного решения пришлось добавить в планировщик Windows скрипт с правилами
netsh interface portproxy
, который создает правило перенаправления порта при загрузке операционной системы.
Чтобы вывести на экран список всех активных правил перенаправления TCP портов в Windows, выполните команду:
netsh interface portproxy show all
В нашем случае присутствует только одно правило форвардинга с локального порта 3340 на 3389:
Listen on ipv4: Connect to ipv4: Address Port Address Port --------------- ---------- --------------- ---------- 10.10.1.110 3340 10.10.1.110 3389
Совет. Также вы можете вывести вес правила перенаправления портов в режиме portproxy так:
netsh interface portproxy dump
#======================== # Port Proxy configuration #======================== pushd interface portproxy reset add v4tov4 listenport=3340 connectaddress=10.10.1.110 connectport=3389 popd # End of Port Proxy configuration
Если вам нужно изменить настройки имеющегося правила portproxy, используйте такую команду:
netsh interface portproxy set v4tov4 listenport=3340 listenaddress=10.10.1.110 connectport=3300 connectaddress=10.10.1.110
В этом примере мы изменили адрес целевого порта portproxy на 3300.
Чтобы удалить определенное правило перенаправления порта, выполните:
netsh interface portproxy delete v4tov4 listenport=3340 listenaddress=10.10.1.110
Чтобы удалить все имеющиеся правила перенаправления и полностью очистить таблицу с правилами порт-форвардинга:
netsh interface portproxy reset
Важно. Такая схема перенаправления работает только для TCP портов. Трафик по UDP портам нельзя перенаправить с помощью режима portproxy. Также нельзя использовать в качестве connectaddress адрес localhost 127.0.0.1.
Если вы хотите включить перенаправление UDP трафика, можно использовать Windows Server с ролью RRAS и NAT. Вы можете настроить перенаправление портов между интерфейсами компьютера с помощью графической оснастки (
rrasmgmt.msc
) или командой:
netsh routing ip nat add portmapping Ethernet udp 0.0.0.0 53 192.168.1.54 53
Список NAT правил перенаправления портов в Windows Server можно вывести так:
netsh routing ip nat show interface
Если у вас на компьютере развернут WSL (Windows Subsystem for Linux), вы можете создать простой PowerShell скрипт создания правила перенаправления порта внутрь виртуальной машины WSL 2 (у ВМ на WSL 2 есть собственный виртуальный адаптер ethernet с уникальным IP адресом):
wsl --shutdown;
netsh interface portproxy reset;
$wsl_ipaddr = wsl -d Ubuntu-20.04 hostname -I;
netsh interface portproxy add v4tov4 listenport=443 listenaddress=0.0.0.0 connectport=443 connectaddress=$wsl_ipaddr ;
netsh interface portproxy show all;
exit;
Еще одной неявной возможностью portproxy является возможность создать видимость локальной работы любого удаленного сетевого сервиса. Например, вы хотите перенаправить весь трафик с локального порта 9090 на
google.com:443
netsh interface portproxy add v4tov4 listenport=9090 listenaddress=127.0.0.1 connectaddress=142.250.74.46 connectport=443 protocol=tcp
Теперь, если в браузере перейди по адресу https://localhost:9090 (нужно игнорировать ошибки SSL_ERROR_BAD_CERT_DOMAIN), откроется поисковая страница Google. Т.е. несмотря на то, что браузер обращается к локальному компьютеру, в нем открывается страница с внешнего веб-сервера.
Перенаправление портов также можно использовать, чтобы пробросить порт с внешнего IP адреса сетевой карты на порт виртуальной машины, запущенной на этом же компьютере. В Hyper-V такой проброс порта можно настроить на виртуальном коммутатор (см. ниже).
Windows не умеет пробрасывать диапазон TCP портов. Если вам нужно пробросить несколько портов, придется вручную создавать несколько правил перенаправления.
Настройка перенаправления портов с помощью NAT на Hyper-V Server
При использовании на вашем компьютере роли Hyper-V (может быть установлена как на Windows 10/11, так и на Windows Server или в виде бесплатного Windows Hyper-V Server), вы можете настроит проброс портов DNAT с помощью PowerShell. Допустим, вы хотите перенаправить все https запросы, которые получает ваш хост Hyper-V на IP адрес запущенной на хосте виртуальной машины. Для этого используется команды Hyper-V StaticMapping.
Создайте виртуальный коммутатор Hyper-V:
New-VMSwitch -SwitchName «NAT_Switch» -SwitchType Internal
Задайте IP адрес для нового виртуального коммутатора:
New-NetIPAddress -IPAddress 192.168.10.1 -PrefixLength 24 -InterfaceAlias "vEthernet (NAT_Switch)"
Включите NAT для данной сети:
New-NetNat -Name NATNetwork -InternalIPInterfaceAddressPrefix 192.168.10.0/24
Подключите ВМ в ваш коммутатор NAT_Switch и задайте для нее статический IP адрес (например, 192.168.10.80). В качестве шлюза-по умолчанию нужно указать IP адрес виртуального коммутатора Hyper-V (192.168.10.1).
Теперь можно настроить перенаправление порта с хоста Hyper-V в виртуальную машину:
Add-NetNatStaticMapping -NatName NATNetwork443 -Protocol TCP -ExternalIPAddress 0.0.0.0/24 -ExternalPort 443 -InternalIPAddress 192.168.10.80 -InternalPort 443
После выполнения этих команд весь HTTPS трафик, который приходит на порт TCP/443 гипервизора будет переправлен на серый IP адрес виртуальной машины.
Если вы хотите перенаправить нестандартный порт, не забудьте открыть его в Windows Firewall:
New-NetFirewallRule -DisplayName "HyperV_Nat_443" -Direction Inbound -LocalPort 443 -Protocol TCP -Action Allow -Enabled True
Полный список правил NAT на хосте Hyper-V можно вывести так:
Get-NetNat