Во всех версиях 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 из командой строки через режим 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).
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
Проверьте состояние службу в консоли services.msc или с помощью команды PowerShell:
Get-Service iphlpsvc
Также на сетевом интерфейсе, для которого создается правило перенаправления портов должна быть включена поддержка протокола IPv6.
Это обязательные условия для корректной работы порт-форвардинга. Без службы IP Helper и без включенной поддержки IPv6 механизм перенаправления не работает.
В Windows Server 2003 / XP для работы перенаправления дополнительно нужно включить параметр реестра IPEnableRouter = 1 в ветке HKEY_LOCAL_MACHINE\ System\CurrentControlSet\services\Tcpip\Parameter. Можно включить этот параметр реестра с помощью PowerShell:
Set-ItemProperty -Path HKLM:\system\CurrentControlSet\services\Tcpip\Parameters -Name IpEnableRouter -Value 1
Этот параметр также позволяет включить маршрутизацию между разными подсетями в Hyper-V.
Вы можете определить процесс, который слушает указанный локальный порт по его PID (в нашем примере PID – 636):
tasklist | findstr 636
Теперь попробуйте подключиться на новый порт с удаленного компьютера при помощи любого RDP клиента. В качестве rdp-порта нужно указать 3340 (номер порта указывается после двоеточия после адреса rdp-сервера). Hапример, ,
10.10.1.110:3340
RDP подключение должно успешно установиться.
Правила проброса портов portproxy являются постоянными и не удаляются при перезагрузке Windows. Эти правила хранятся в реестре. Можно вывести список правил перенаправления netsh в реестре с помощью PowerShell:
Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\PortProxy\v4tov4\tcp
Если нужно перенаправить входящее 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
Проверьте, что в настройках вашего файервола (брандмауэра 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.
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
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
Если вы хотите включить перенаправление 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
Отличная тема для статьи, спасибо.
А теперь вопрос, если у меня в ответ на команду
выдается
TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING 1324
номарльно ли это? Не должен ли выдаваться мой локальный адрес с указанием порта 3389 (что-то вроде 192.168.1.100:3389). И да, подключение по RDP к этому компьютеру не работает.
Выслушаю любые предложения.
Судя по строке TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING 1324, на вашем компьютере служба RDP запущена. Имеенно так она и должна отображаться.
А снаружи не удается подключится из за настроек файерволов/брандмауэров.
супер, в еверноут )), я почти все с вашего блога как не в еверноуте ) то в покете ) для подальшого возврата, единственный ресурс на моей памяти где очень полезной и четкой информации о таких делах, ничего лишнего.
Добрый вечер подскажите сработает такая схема: на роутере настроен порт форвардинг на сервер:3389 для подключения из вне (схема опасное, но до этого пока у админов нет дела), могу я с помощью этого порта 3389 перенаправить на порт например свой локальной машины где установлен radmin. Вы указали что можно, но мне интересно не помешает это правило работать пользователям которые подключаются к серверу
Вы можете перенаправить трафик, приходящий на порт 3389 сервера на другой компьютер в сети. Но в таком случае остальные пользователи подключится по rdp к серверу не смогут. Всех их обращения по этому порту будут перенаправляться на вашу локальную машину.
Спасибо за статью, но есть замечание, что бы эта радость работала, необходимо на интерфейсе добавить протокол ip V6
Вовсе нет. У меня отключен ipv6, но всё прекрасно работает.
А как насчет аналога в нативном powershell? Пока и в нем конечно работает netsh. Но он уже ругается:
В будущих версиях Windows корпорация Майкрософт может удалить функциональность
Netsh для TCP/IP.
Если вы используете Netsh для настройки и управления TCP/IP, мы
рекомендуем вам перейти на оболочку Windows PowerShell.
Чтобы просмотреть список команд для управления TCP/IP,
введите Get-Command -Module NetTCPIP в командной строке Windows PowerShell.
Дополнительные сведения о командах PowerShell для TCP/IP см.
по адресу http://go.microsoft.com/fwlink/?LinkId=217627.
Вот я поставил форвардинг из-вне на ВМ в локальной сети, но после перезагрузки хоста правило перестает работать. В списке правил есть, но не работает. В чем может быть проблема?
Файервол после перезагрузки не включился случайно? А если удалить и заново создать правило, форвард порта работает?
В файрволе создано правило для входа на этот порт. В списке присутствует. Если заново добавить — работает. Единственное — может это из-за того, что ВМ стартует не сразу. Как это проверить — не знаю.
Подтверждаю такой глюк имеется (Win2012R2). Приходится сбрасывать и пересоздавать правила форвардинга в планировщике при загрузке.
Всем, у кого не работает!
и после netstat -ano | findstr :3340 ничего не выводит!
нужно включить службу «Вспомогательная служба IP»
Спасибо, этот коммент помог мне все настроить, статья на 5+.
Кстати по поводу службы, вот что ОС пишет, для чего она нужна,
«Обеспечивает возможность туннельного подключения с помощью технологий туннелирования для IP версии 6 (6to4, ISATAP, порты прокси и Teredo), а также IP-HTTPS. Если остановить эту службу, компьютер не сможет использовать дополнительные возможности подключения, предоставляемые этими технологиями.»
Действительно без включенной службы iphlpsvc (IP Helper в английской версии) порт форвард не работает. Спасибо!
А можно поподробнее о возможности, упомянутой в конце статьи?
«Перенаправление портов также можно использовать, чтобы пробросить порт с внешнего адреса сетевой карты на порт виртуальной машины, запущенной на этом же компьютере.»
На Хосте 192.168.0.100 две виртуалки VMWare 192.168.0.101 и 192.168.0.102. Только ради RDP к ним стоит маршрутизатор. Хотелось бы от него отказаться.
Команды из статьи не помогли. По RDP порту 33892 начал отзываться хост.
netsh interface portproxy add v4tov4 listenport=3389 listenaddress=192.168.0.100 connectport=3389 connectaddress=192.168.0.101
В первую очередь проверьте доступность ВМ (192.168.0.101) с хоста. Возможно ли подключится с хоста на порт 3389 ВМ?
Да, и с хоста и снаружи за маршрутизатором.
Хотел поиграться с настройкой сетевого адаптера виртуалки. Стояло Bridged. Поставил NAT. Потерял доступ к хосту по RDP. Поеду к консоли возвращать как было.
Вообще, посмотрел на других своих виртуалках: в разных виртуалках стоят все возможные варианты Bridged, NAT, Host-only, Custom:VMnet0
Всё заработало. На маршрутизаторе направлял 33891 и 33892 на 3389 на хосте. Поправил.
Спасибо за полезную информацию.
Всё получилось. По ошибке на маршрутизаторе перенаправлял на хост порты 33891 и 33892 на 3389. Поправил, всё заработало! Теперь можно снимать маршрутизатор.
Спасибо большое.
А можно 80 порт направлять yf хосте на разные виртуалки в зависимости от доменного имени? На одной виртуалке стоит Редмайн с Апачами, а на другой IIS.
Этот форвард придется реализовать средствами веб сервера. На IIS это может быть URL Rewrite, в апач вроде через mod_rewrite
itpro подскажите, а как сделать подобный проброс на компьютер из другой подсети. В моём случае vpn реализована не штатными средствами windows?
Исходный и целевой компьютер могут находится в разных IP подсетях. Так что настройка аналогичная. Главное условие, чтобы целевая подсеть была доступна (маршрутизировалась) с исходного сервера, и на уровне файерволов не закрыт перенаправляемый порт.
Если я настраиваю родными средствами винды, то всё работает пробрасывается порт и на 192.168.1.2 и на 192.168.2.2
Если vpn через аналог, в свойствах сетевой добавляю дополнительный адрес второй подсети, при этом пинг идёт, но если прописываю правило проброса порта, ничего не происходит как будто сервер не понимает что надо пробросить в другую подсеть.
Фаервол при этом отключен
Некоторые VPN-ы грешат тем, что сначала редиректят трафик в туннель через себя, отправляя его на внутренний loopback интерфейс и потом уже от своего имени отправляя дальше. Возможно проще всего поменять VPN клиент
Или попробовать настроить форвард через службу RRAS (на серверной Windows) — но это тоже под вопросом.
Вернул всё на штатные средства винды. От SoftEther VPN Server Manager 4.19 отказался так и не разобравшись с ситуацией проброса порта на другую подсеть. Хороший продукт, ну да и ладно…
Доброго времени суток,подскажите мне неопытному,я подключаюсь к впн серверу,при проверке анонимности сайт 2ip.ru выдаёт «Открытые порты VPN 1723/tcp, PPTP VPN»»
Вы используете средства анонимизации, однако нам не удалось узнать ваш реальный IP адрес.
Вероятность использования средств анонимизации:
99 %»
,как мне скрыть или сменить порт,мне надо что-бы не знали что я использую vpn,у меня установленна windows 7,заранее спасибо!
Маленький вопрос от неспециалиста.
Есть ADSL модем Zyxel p600 настроен в режиме моста. Раздает интернет на одну машину (соединение на ПК показывает внешний ip 82.ххх.хх.ххх). Далее этот ПК раздает интернет из второй сетевой на ряд устройств (ip даного пк внутри сети, тоесть между 4 машинами он как сервак 192.168.139.1) на данной машине стоит некая программа вебмониторинга (видимая через браузер внутри сетки под портом 8087).
Пытаюсь сделать так чтоб данная прога была видна из вне.
На zyxel пытался пробросить порт на внутренний ip но как я полагаю это не верно.
Помогите пожалуйста решить данную проблему.
Заранее благодарен.
Если у машины (сервера) интерфейса, то скорее всего веб интрефейс программы мониторинга будет доступен как по внутреннему 192.168.139.1:8087 так и по внешнему адресу 82.ххх.хх.ххх:8087, если конечно в самой программе не выставлена привязка к внутреннему интерфейсу
блин 80 порт пробросился только после того, как первый интерфейс указал 0.0.0.0 (до этого был ip сетевой карты, с которой надо пробрасывать — нифига не работало)
а вот 34567 порт вообще никак не пробрасывается.. никто его не слушает.. службу ip включил (она была включена), в списке перенаправлений — перенаправление есть, а по факту нифига не выходит. может есть еще какие-то волшебные моменты? а то всю голову сломал, неделю не сплю уже.
хм оказалось это софтинка от регистратора косая ) а проброс таки работает..
хотя и только после 0.0.0.0
Для информации: чтобы порт прокси заработал на Windows Server 2003 / XP, нужно установить поддержку IPv6 протокола для сетевого подключения и в ветке реестра HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters изменить IPEnableRouter = 1
НЕ подтверждаю необходимость установки IPEnableRouter = 1
У меня проброс работает со значением 0 как в ControlSet00x так и в CurrentControlSet (Windows XP).
Есть отличная бесплатная программа: «IP MiniRoute» — использую её на серваке для проброса IP-камер по сети. Уже не первый год стоит.
Здравствуйте!
Подскажите, пожалуйста! Делаю проброс для mysql сервера через
netsh interface portproxy add v4tov4 listenport=3306 listenaddress=0.0.0.0 connectport=3306 connectaddress=192.168.1.5
WindowsServer2016
Получаю
C:\Windows\system32>netstat -a | find «3306»
TCP 0.0.0.0:3306 server:0 LISTENING
Но соединиться с БД извне не могу(по 192.168.1.5 из локалки всё нормально)
Брендмауэр отключал для теста — не помогло
У тебя на 192.168.1.5 прописан основным шлюзом IP адрес компа на котором ты выполняешь команду «netsh interface portproxy add v4tov4 listenport=3306 listenaddress=0.0.0.0 connectport=3306 connectaddress=192.168.1.5» ?
Спасибо за ответ!
Решилось отключением настройки проброса в GUI и перезагрузкой.
(Маршрутизация и удаленный доступ —> Преобразование сетевых адресов —> Службы и порты)
Винда однако!!! И кто у них круче, ГУЙ или Powershell / cmd ?
Последнее время MS превращает свои оси в такую знатную ПОМОЙКУ, что там и поллитра уже не помогают!
В Win10-64 Pro (1703, Creators) навертели с защитником так, что их «Modern»-ползунки бегают, но нифига не отключают.
По RDP подключаешься в Win10-64 (1703), и постоянно высококонтрастная тема включается. Обычная применяется, но до очередного переподключения.
MS — Шляпа. Больше нечего сказать.
А тут еще и cmd с маршрутизацией конфликтуют. Верить уже ничему нельзя.
Добрый день, коллеги!
Есть ли возможность пробросить диапазон портов? Например 80-120. Я пытаюсь записать это в команде (для примера):
netsh interface portproxy set v4tov4 listenport=80-120 connectport=80 connectaddress=216.58.201.174
, оно вроде как даже и выполняется, но — не работает.Не выйдет. Для каждого порта нужно создавать свое правило
Добрый день!
Подскажите как решить такую проблему.
Есть ПК с Windows 8.1 подключен кабелем ip 192.168.0.101 маска подсети 255.255.255.0 на нем установлен web-сервер apache на 80 порту.
В роутере проброшен порт 80. белый ip. извне открывается сайт нормально.
Есть также vpn подключение к сети предприятия PPTP
при подключении к vpn сайт перестает работать. Насколько я понял запрос приходит, а ответ уходит в vpn подключение. Как можно это исправить ?
Для начала в свойствах VPN подключения снимите галку «использовать шлюз по-умолчанию в удаленной сети». Если будут проблемы с доступом в корп сеть, возможно руками придется настроить статические маршруты
Доброго времени суток!
А вот интересно, можно ли как-то управлять исходящими пакетами?
Если совсем конкретно, хотелось завести локальный squid и завернуть на него всё, что уходит на внешние адреса на 80 порт, на него. Под линуксом с помощью iptables с полпинка делается, а вот под виндой непонятно.
В DDK есть некий пример под названием WFPSampler, который, судя по описанию, возможно и сможет это сделать, но собранным я его нигде не нашёл, только в исходниках, а на Visual Studio Express увы DDK не ставится…
Т.е. задача — а-ля прозрачный прокси на Windows, когда весь трафик на 80/443 с Windows машин перенаправляется на ваш прокси сервер squid?
Здравствуйте!
Подскажите, пожалуйста, как заставить работать portproxy на windows server 2003?
Как будто какой-то службы ещё не хватает, экспериментировал с двумя разными серверами 2003, из той же локалки с рабочей станции проверял.
Т.к. роутер в офисе древний и умеет форвардить в локалку только тот порт, что и слушает, то в целях безопасности решено было средствами portproxy слушать ещё один порт на сервере для rdp и уже его перенаправлять с роутера. Для win7 всё завелось с пол-пинка, а вот сервер 2003 ведёт себя странно.
Я установил для интерфейса дефолтный протокол IPv6 (может, надо скачать версию посвежее?), также (после первого эксперимента) в реестре включил IPEnableRouter = 1 как в ветке ControlSet001, так и в CurrentControlSet (тут уже было 1).
Вспомогательная служба IP (iphlpsvc) — такого в 2003м нет.
Брандмауер выключен.
Применял команды, нпр:
netsh interface portproxy add v4tov4 listenport=65000 connectaddress=192.168.0.2 connectport=3389
netsh interface portproxy show all отобразил таблицу моих экспериментов.
Пробовал и с указанием listenaddress (192.168.0.2, 0.0.0.0) и без.
Вывод netstat -ano | findstr :65000 — все нужные порты слушает.
В итоге — с соседней рабочей станции telnet подключается ко всем нужным портам сервера, но на этих моих нестандартных портах не отвечают мои службы (rdp, radmin, web).
При чём, я даже форвардил высокий порт на «левый» порт несуществующих служб, куда телнет не должен цепляться, а вот через portproxy телнет рабочей станции цеплялся на мой порт.
Т.е., как будто, реализация portproxy на сервере 2003 никуда не перенаправляет, а оставляет входящее подключение в своей «песочнице».
WinXPsp3 успешно с portproxy переадресовала и без «IPEnableRouter = 1» в реестре, а вот с сервером 2003 беда какая-то…
Провел эксперимент на Windows Server 2003.По-умолчанию портфорвард действительно не работал. Мало того, при включении правило и выполеннии команды
netstat -ano | findstr :3340
выходило, что порт 3340 слушает только UDP (!!!) протокол.
Чтобы все заработало пришлось:
1) Устанвить ключ в реестре IPEnableRouter = 1
2) Установить в свойствах сетевого подключения протокол ipv6
После этого создал новое правило netsh interface portproxy и с соседнего компьютера проверил работу перенаправления на службы RDP — все заработало.
Спасибо за совет, но за пол-дня не смог я побороть portproxy на Windows Server 2003… Пришлось по старинке воспользоваться сторонним ПО — relaytcp, я с ней уже давно знаком
Удачи в 2018-ом году с сервером 2003. Оно самое то конечно. И работает достойно, для уважения старости, не желающего ничего открывать для себя человека.
P.S. разница в скорости обработки информации у Serv2016 и 2003 просто колосальнейшая, прежде всего в отношении работы всех сетевых протоколов. Сидите и дальше на старичке 2003, страдайте >:(
Еще было замечено такое поведение, может быть кому-то поможет:
Был настроен проброс для десятка портов на Windows 2008, через которые активно ходил трафик, но в один прекрасный момент трафик перестал проходить через часть из них (в ответ на SYN пакеты от машины прилетали RST, ACK). При этом по другим портам все ходило.
После долгих мучений и пересозданий всего чего только можно, помог простой перезапуск (Restart) службы «IP Helper» (iphlpsvc) или «Вспомогательная служба IP» в русской версии.
Причины и обстоятельства до конца не выяснены…
Ёлки… Действительно, поcле каждой перезагрузки системы приходится перезапускать Ip Helper…
Спасибо за статью. Активно пользуюсь «пробросом портов», когда необходимо предоставить доступ какой-либо машинки в локальной сети к интернет-ресурсу, доступному только через АРМ с установленным на нем «специальным» ПО.
Вот только возник такой вопрос, ответ на который я в сети пока не нашел.
В статье указано, что можно создавать сколь угодно много правил, лишь бы только порты не путались.
Так вот, при создании более четырех-пяти правил, стал замечать, что некоторые порты внезапно «отваливаются», оставаясь недоступными до перезагрузки основной машины. То есть, завязанные на порты интернет-ресурсы становятся вдруг недоступными при обращении к ним из интернет-браузера.
При этом недоступны они как с других АРМ, так и с основного (если попытаться выйти на свой же порт). Отвал происходит рандомно, и чаще в те моменты, когда начинаешь активно обращаться к данным портам. Бывает даже, что отваливается порт, к которому не было обращения после последней загрузки оси, но при этом активно пользовались по другими портами.
Проверял на WinXP SP3 и Win7 pro 32x. И там и там ситуация аналогичная.
Не приходилось создавать более 2-3 правил на одном компьютере 🙂
Большой трафик идет через перенаправленные порты?
На ум пока идет только создание отдельного скрипта-костыля, который бы проверял доступность определенного порта, и если коннекта нет, перестартовывал бы все зависимые сетевые службы.
Помогите настроить проброс адреса и порта на уделенный ПК. Нужно пробросить адрес 81.177.167.77 и порт 1335 с сервера, чтоб определенное ПО могло подключится по этому ИП и порту (пример адреса сервера 172.Х9.ХХ.22) на удаленный ПК(Пример адреса ПК: 172.Х8.ХХХ.203). Какие будут команды? И на удаленном ПК я прописываю непосредственно адрес и порт 81.177.167.77 и 1335 или адрес и порт сервера?
Замечательно, но как перенаправлять UDP-поток по заданным портам?
Нужно искать сторонний софт для перенаправления UDP портов. Методика из этой статьи может перенаправить только TCP соединения.
Отличная статья, давно пользуюсь. но тут возникла трабла которую пока не могу победить:
есть сервер с белым IP на который стучатся входящие VPN клиенты. на каждом клиенте есть ресурс который доступен по определенному порту. сделал проброс чтобы эти порты были видны с внешнего IP сервера, чтобы пользователи имели доступ к этим портам обращаясь к внешнему IP сервера.
вообщем все работает, но возникают проблемы с одним портом — периодически, при обрыве связи у пользователя порт на внешке из статуса LISTENING переходит в статус CLOSE_WAIT, доступ у пользователей пропадает, переподключение не происходит и держится так постоянно до полной перезагрузки сервера. при этом с самого сервера данный ресурс остаётся доступным. после перезагрузки сервера все работает до очередного обрыва связи у клиента. при этом про просмотре статуса видно что ожидает он ответа с IP адреса провайдера оного клиента. можно ли как-то регулировать время жизни этого статуса или может есть какой-то метод сброса состояния портов без перезагрузки? нашел, что имеется некий параметр в реестре который регулирует TIME_WAIT но чет еще это никому особо не помогло, а вслепую лепить горбатого на живом серваке чет не очень хочется. есть у кого идеи, плиз накиньте мудрости кто виноват и как с этим бороться))
А как удалить?
netsh interface portproxy reset
Хочу перенаправлять все запросы на сайт (80 порт) одного IP на сайт(80 порт) другого.
на исходном сервере пишу
netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=нужный IP
получаю
вроде должно работать, но из браузера попадаю все-равно на 1-й сервер
ipv6 включен
IPEnableRouter = 1 поставил
что не так делаю?
iphlpsvc работает
1.Поправка:
Вы пишите:
Думаю, корректнее проверять/устанавливать соотв.значение соотв.параметра в ветке HKEY_LOCAL_MACHINE\SYSTEM\ControlControlSet\Services\Tcpip\Parameters
2.bug_report:
Вы пишите:
В этом cmdlet-е есть две ошибки:
2.1.для парам.»SwitchType» нету такого значения (NAT);
2.2.параметра «NATSubnetAddress» для этого cmdlet-a нет.
3.Вопрос (не по теме):
Не пойму, зачем вы на ряде скриншотов частично затираете ip-address?
Во-первых, они всё равно их частного диапазона ip-адресов. А, во-вторых, в тексте вы всё равно их указываете полностью.
1.Поправка#2 на поправку #1:
Не
HKEY_LOCAL_MACHINE\SYSTEM\ControlControlSet\Services\Tcpip\Parameters
а
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
не сайт, а кладезь полезной инфы.
Отличная статья. Появился вопрос в том как это лучше запретить делать пользователям?)
Отобрать у пользователей права администратора 🙂
А если пользователь является IT-инженером и имеет такие права?
Человек с правали лок админа рано или поздно обойдет любые ограничения.
Если прям сильно нужно, можно сделать небольшой внешний скрипт (либо прямо в системе мониторинга скрипт) который будет собирать со всех компьютеров инфу о наличии проброса портов и отправлять ИТ директору. Инженера, который это включил потом вычислить не проблема.
Кто нибудь с PgSQL таким занимался? есть необходимость перенаправить 1С с дефолтного порта PG 5432 на локальный порт на PG на тачке 54321
Так?
netsh interface portproxy add v4tov4 listenport=54321 listenaddress=192.168.2.20 connectport=5432 connectaddress=192.168.2.20
Сервер работает как Edge Firewall между внутренней сетью (192.168.16.0/24) и периметром (192.168.1.0/24), дефолтный шлюз в интернет — 192.168.1.2. На сервере опубликован Терминальный сервер внутренней сети 192.168.16.X. Можно ли завернуть ТОЛЬКО трафик RDP на специальный шлюз 192.168.1.254?
Что значит на сервере опубликован терминальный сервер? Развернута роль, поднята ВМ, или просто есть правила маршрутизации/редиректа на другой хост во внутренней сети?
Да, есть правилo маршрутизации/редиректа на другой хост во внутренней сети через Microsoft ISA Server2004
Здравствуйте коллеги. Как говорится подкиньте ума. Вопрос, есть файловый сервер на WINs2016. С двумя LAN интерфейсами. К каждой подключена (теперь) своя независимая сетка со своими гейтами, DNSми и DHCP-серверами. Из первой сетки все работает, управляется и раздается. А из второй ну никак, никто из клиентов второй сетки этот сервер не видит. Второй интерфейс конечно образмерен и работает.
Задача , чтобы файловый сервер был виден из двух сетей. Дайте хоть идею чтоль? СПС
помогите, хочу сделать все порты для удаленного доступа, но незнаю как
Спасибо за статью, у меня вопрос, настроил в локальной сети сервер для удаленных подключений Apache Guacamole, я подключаюсь к компьютерам пользователей по hostname, подключаюсь по протоколу VNC, в локальной сети все работает идеально, но когда пользователь забирает ноутбук домой и подключается к своему роутеру, то соединение по hostname больше не работает.
Понимаю, что нужен проброс портов на домашнем роутере клиента, но настраивать всем проброс неудобно, вопрос, можно ли настроить проброс портов не прибегая к настройкам домашнего роутера? Например, powershell команда, которую можно упаковать в скрипт. И вообще реализуемо ли это?
У вас задача по сути объединить внешних пользователей с вами в одну сеть. Как вариант можно поднять у вас VPN, куда будут коннектится внешние пользователи (из дома) и тогда вы сможете ходить на их компьютеры черех VNC.
Либо смотреть на такие штуки как anydesk, self-hosted RustDesk (в общем тьмя аналогов как платных, так и бесплатных)
На сетевой карте был один Ip адрес 192.168.1.10 и ftp сервер (на этом же компьютере) работал нормально. На роутере проброшен 21 порт на адрес 192.168.1.10. Но после того как я добавил второй адрес 192.168.137.1 на эту же сетевую карту, то внешние устройства уже не могут отослать файл на этот ftp. Не пойму в чём у Windows проблема ?
Можно попробовать запретить компьютеру использовать второй IP в качестве исходящего Если применимо).:
Netsh int ipv4 add address name="Local Area Connection" 192.168.137.1 255.255.255.0 SkipAsSource=True
Либо ограничить в настройках FTP сервера использование только первого IP (binding).