Во всех версиях 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
Необходимость проброса портов весьма часто встающая перед системным администратором задача. Обычно для этой цели используют службы маршрутизации и удаленного доступа (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 часов практики и доступ навсегда.
- Содержание статьи
- Брандмауэр Windows
- Программа 3proxy
- nginx
- Добавить комментарий
Портмаппинг, или же, переназначение портов — возможность перенаправить трафик с одного сетевого порта на другой, в том числе, расположенный на другом интерфейсе. Подобный функционал присутствует практически в любом роутере, и используется для возможности доступа из внешней сети к ресурсам локальной сети, расположенной за роутером. Портмаппинг так же можно реализовать и в операционных системах Windows, используя как встроенные возможности фаирволла (брандмауэра), так и используя стороннее программное обеспечение.
Брандмауэр Windows
Не смотря на то, что в настройках брандмауэра отсутствуют какие-либо намеки на портмаппинг, такие возможности у него есть — правда, доступны они только через командную строку, и ограничены только протоколом TCP.
Синтаксис команды для портмаппинга следующий:
netsh interface portproxy add v4tov4 listenaddress=[ПРОСЛУШИВАЕМЫЙ ЛОКАЛЬНЫЙ АДРЕС] listenport=[ПРОСЛУШИВАЕМЫЙ ЛОКАЛЬНЫЙ ПОРТ] connectaddress=[АДРЕС НАЗНАЧЕНИЯ] connectport=[ПОРТ НАЗНАЧЕНИЯ]
Уточним назначение данных параметров:
- listenaddress — локальный адрес, с которого нужно будет переадресовать сетевое соединение
- listenport — локальный порт, с которого нужно будет переадресовать сетевое соединение
- connectaddress — адрес назначения, на который нужно будет будет переадресовать сетевое соединение
- connectport — порт назначения, на который нужно будет будет переадресовать сетевое соединение
Примеры:
Представим, что наш компьютер имеет адрес 10.0.0.13, а где-то в сети с адресом 10.0.0.23 есть веб-сервер. Сделаем так, чтобы при обращению к 80 порту на наш компьютер, происходило открытые веб-сайта с адреса 10.0.0.23:
netsh interface portproxy add v4tov4 listenaddress=10.0.0.13 listenport=80 connectaddress=10.0.0.23 connectport=80
А теперь предположим, что все в той же сети есть компьютер с RDP сервером, расположенном на нестандартном для него порту 4200. Сделаем так, чтобы при попытке подключится к удаленному рабочему столу на нашем компьютере с адресом 10.0.0.13 происходило подключение к другому компьютеру.
netsh interface portproxy add v4tov4 listenaddress=10.0.0.13 listenport=3389 connectaddress=10.0.0.23 connectport=4200
Узнать, какие порты настроены для переадресации на компьютере, можно с помощью команды netsh interface portproxy show all
.
Программа 3proxy
3proxy — маленькая программа (полтора мегабайта), автором которой является человек с ником 3APA3A. 3proxy позволяет переадресовывать TCP и UDP трафик, а так же может выступать в роли HTTP, HTTPS, POP3, SOCKS, SMTP прокси. В данном материале мы разберем, как настроить с её помощью портмаппинг TCP или UDP.
Все настройки проброса портов задаются в конфиге который имеет название 3proxy.cfg, и должен находиться в той же директории, что и исполняемый файл программы (по умолчанию, в папке bin).
Синтаксис файла конфига следующий:
[ПРОТОКОЛ TCP или UDP]pm -i[ПРОСЛУШИВАЕМЫЙ ЛОКАЛЬНЫЙ АДРЕС] [ПРОСЛУШИВАЕМЫЙ ЛОКАЛЬНЫЙ ПОРТ] [АДРЕС НАЗНАЧЕНИЯ] [ПОРТ НАЗНАЧЕНИЯ]
То есть, если при использовании протокола TCP нужно выполнить переадресацию с локального порта 80, имеющего адрес 10.0.0.13 на удаленный адрес 10.0.0.23 с портом 8080, нужно написать следующее:
tcppm -i10.0.0.13 80 10.0.0.23 8080
Если речь идет о протоколе UDP, то вместо tcppm будет udppm. В примере ниже, мы переадресуем UDP порт 3389 с локального компьютера с адресом 10.0.0.13 на компьютер с адресом 10.0.0.23.
udppm -i10.0.0.13 3389 10.0.0.23 3389
После каждого изменения файла конфига, программу необходимо перезапускать для применения изменений!
Так же есть возможность запустить программу как службу. Для этого нужно в файле конфига указать параметр service
. После этого, нужно запустить программу с параметром --install
:
3proxy.exe --install
После чего, произойдет установка программы как службы. Для удаления 3proxy из служб, следует использовать параметр --remove
.
Для удобства отслеживания работы портмаппинга, можно включить логирование. Делается это добавлением следующей строчки в файл конфига:
log "C:3proxylogs%Y.%m.%d.log" D
В данной строке «C:3proxylogs%Y.%m.%d.log» — путь к файлу конфига (где %Y обозначает год, %m — месяц, %d — число в имени файла), D — ежедневная ротация лога. Подробнее о настройке логирования можно прочитать на официальном сайте программы.
Пример полноценного работающего конфига для 3proxy:
service
log "C:Program Files3proxylogs%Y.%m.%d.log" D
tcppm -i192.168.240.5 8080 10.10.10.2 80
tcppm -i192.168.240.5 8081 12.0.1.122 443
nginx
Программа nginx известная в первую очередь как веб-сервер, но за счет возможности по балансировке нагрузки, она может выступать и в роли программы для перенаправления и проброса портов. У nginx есть сборка под Windows, которая к сожалению, не позволяет работать программе как службе, но эта проблема решается использованием дополнительных программ.
Для простого перенаправления 3390 порта с локального адреса на удаленный адрес 10.0.0.23 с портом 3389, достаточно привести файл конфигурации nginx.conf к приведенному ниже виду, и после этого, запустить файл nginx.exe из командной строки.
worker_processes 1;
events {
worker_connections 1024;
}
stream {
upstream portforward {
server 10.0.0.23:3389;
}
server {
listen 3390;
proxy_pass portforward;
}
}
Для протокола UDP, потребуется дополнительно указать его использование в директиве listen.
worker_processes 1;
events {
worker_connections 1024;
}
stream {
upstream portforward {
server 10.0.0.23:3389;
}
server {
listen 3390 udp;
proxy_pass portforward;
proxy_responses 0;
}
}
Во всех версиях Windows вы можете настроить переадресацию / переадресацию сетевых портов без использования сторонних инструментов. Используя правило переадресации, вы можете перенаправить входящее TCP-соединение (IPv4 или IPv6) с локального TCP-порта на любой другой номер порта или даже на порт на удаленном компьютере. Кроме того, Windows не требуется, чтобы служба прослушивала определенный порт TCP. Перенаправление портов в Windows часто используется для обхода брандмауэров или для сокрытия внутреннего сервера или службы от внешней сети (NAT / PAT).
В Linux переадресацию портов довольно легко настроить с помощью iptables. В системах Windows Server для настройки переадресации портов обычно используется служба маршрутизации и удаленного доступа (RRAS). Однако есть более простой способ настроить переадресацию портов, который одинаково хорошо работает в любой версии Windows.
Как включить перенаправления портов в Windows 10 с помощью netsh portproxy?
Настройка переадресации портов в Windows выполняется из командной строки в режиме Portproxy команды Netsh. Синтаксис команды следующий:
netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport
где это находится,
- listenaddress – локальный IP-адрес, на котором ожидается соединение (полезно, если у вас несколько сетевых карт или несколько IP-адресов на одном интерфейсе);
- listenport – номер локального TCP-порта, соединение на которое будет перенаправлено (на этом порту ожидается входящее соединение);
- connectaddress – локальный или удаленный IP-адрес или DNS-имя, на которое вы хотите перенаправить сетевое соединение;
- connectport – номер TCP-порта, на который вы хотите перенаправить трафик с прослушивающего порта.
Используя параметры
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 portproxy не работает, убедитесь, что в вашей системе включен iphlpsvc (IP Helper).
А на сетевом интерфейсе, для которого создано правило переадресации портов, должна быть включена поддержка IPv6.
Это предварительные условия для правильной работы переадресации портов. Без IP Helper и без включенной поддержки IPv6 механизм пересылки не работает.
В Windows Server 2003 / XP для работы перенаправления вам также необходимо включить параметр реестра IPEnableRouter = 1 в ветке HKEY_LOCAL_MACHINE SYSTEM ControlSet001 Services Tcpip Parameters.
можно определить процесс, прослушивающий указанный локальный порт, используя его PID (в нашем примере PID – 636):
tasklist | findstr 636
Теперь попробуем подключиться к этому порту с удаленного компьютера с помощью любого RDP-клиента. В качестве порта rdp необходимо указать 3340 (номер порта указывается после двоеточия после адреса сервера rdp), например,
10.10.1.110:3340
RDP-соединение должно быть установлено правильно.
Если вам нужно перенаправить входящее 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.
Кроме того, для перенаправления локального порта на удаленный сервер в Windows вы можете использовать метод SSH-туннелирования.
Важно: убедитесь, что настройки вашего брандмауэра (брандмауэр Windows или сторонний брандмауэр, часто включаемый в антивирусное программное обеспечение) разрешают входящие подключения к новому порту. Вы можете добавить новое правило разрешений в брандмауэр Защитника Windows с помощью команды:
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
Когда вы создаете правило входящего брандмауэра с помощью графического интерфейса для порта 3340, вам не нужно связывать какие-либо программы, потому что этот порт прослушивается только сетевым драйвером.
вы можете создать любое количество локальных правил переадресации портов Windows. Все правила portproxy интерфейса netsh постоянны и сохраняются в системе после перезапуска Windows.
Несколько раз я встречал случаи, когда в Windows Server 2012 R2 правила переадресации портов сбрасывались после перезапуска сервера. В этом случае рекомендуется проверить, есть ли периодические отключения на сетевом интерфейсе и не меняется ли IP-адрес при запуске операционной системы (лучше использовать статический IP, а не динамический DHCP). В качестве обходного пути мне пришлось добавить сценарий с правилами
netsh interface portproxy
в планировщик Windows, который создает правило переадресации портов при запуске операционной системы.
Чтобы увидеть список всех активных правил переадресации TCP-портов в Windows, выполните команду:
netsh interface portproxy show all
В нашем случае существует только одно правило переадресации с локального порта 3340 на 3389:
Слушайте ipv4: подключитесь к ipv4: Port Address Port Address --------------- ---------- ------------- - ---------- 10.10.1.110 3340 10.10.1.110 3389
Совет. Вы также можете просмотреть настройки переадресации портов в режиме portproxy следующим образом:
netsh interface portproxy dump
# ======================== # Конфигурация прокси порта # ================= == = ==== pushd portproxy interface reset add v4tov4 listenport = 3340 connectaddress = 10.10.1.110 connectport = 3389 popd # Конец конфигурации прокси порта
Чтобы удалить определенное правило переадресации портов, запустите:
netsh interface portproxy delete v4tov4 listenport=3340 listenaddress=10.10.1.110
Чтобы удалить все существующие правила переадресации и полностью очистить таблицу правил переадресации портов:
netsh interface portproxy reset
Важный. Эта схема пересылки работает только для портов TCP. Трафик на порты UDP не может быть перенаправлен. Кроме того, 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
Еще одна неявная особенность portproxy – это возможность сделать так, чтобы любая удаленная сетевая служба работала локально.
Например, создадим такой редирект с локального порта 8888 на удаленный адрес 213.180.204.3:
netsh interface portproxy add v4tov4 listenport=8888 connectport=80 connectaddress= 213.180.204.3 protocol=tcp
Теперь, если в браузере перейти по адресу http://localhost:8888/, откроется главная страница Яндекс. Те, даже если браузер обращается к локальному компьютеру, открывает страницу с внешнего веб-сервера.
Перенаправление портов также можно использовать для перенаправления порта с внешнего IP-адреса сетевого адаптера на порт виртуальной машины, работающей на том же компьютере. В Hyper-V эту переадресацию портов можно настроить на виртуальном коммутаторе (см. Ниже).
Windows не может переслать диапазон портов TCP. Если вам нужно перенаправить несколько портов, вам нужно будет вручную создать несколько правил перенаправления. Самый простой способ – создать список команд
netsh interface portproxy add
с разными портами в Блокноте, а затем вставить его в командную строку для выполнения.
Настройка перенаправления портов в Hyper-V Server
При использовании роли Hyper-V на вашем компьютере (может быть установлена как на Windows 10, так и на Windows Server или в качестве бесплатного сервера Windows Hyper-V) вы можете настроить переадресацию портов DNAT с помощью PowerShell. Допустим, вы хотите перенаправить все https-запросы, которые получает ваш хост Hyper-V, на IP-адрес виртуальной машины, работающей на хосте. Для этого используйте команды Hyper-V StaticMapping.
Для начала нужно создать виртуальный коммутатор с NAT:
New-VMSwitch -Name "NAT" -SwitchType NAT -NATSubnetAddress 192.168.0.0/24
Затем необходимо подключить необходимую виртуальную машину к указанному коммутатору и включить правило трансляции адресов для всех виртуальных машин, подключенных через этот виртуальный коммутатор Hyper-V:
Новый-NetNat -Webname_NAT -InternalIPInterfaceAddressPrefix 192.168.0.0/24
Добавить-NetNatStaticMapping -ExternalIPAddress "0.0.0.0/24" -ExternalPort 443 -Protocol TCP -InternalIPAddress "192.168.0.2" -InternalPort 443 -NatName Web_NAT
После выполнения этих команд весь HTTPS-трафик, поступающий на порт 443 гипервизора, будет перенаправлен на серый IP-адрес виртуальной машины.
Источник изображения: winitpro.ru
На чтение 10 мин Просмотров 2.3к.
Максим aka WisH
Высшее образование по специальности «Информационные системы». Опыт работы системным администратором — 5 лет.
Задать вопрос
Проброс портов потребуется вам дома, если нужно получить доступ к какому-то домашнему оборудованию из интернета. Маршрутизатор не позволяет делать такие вещи напрямую, это служит дополнительной защитой от атак из глобальной сети. Иногда требуется дать подключение из внешней сети к внутреннему устройству. Тогда и пригодится перенаправление портов.
Содержание
- Зачем нужен проброс портов
- Что необходимо для выполнения перенаправления
- Ручной проброс через кабинет роутера
- Как пробросить порты с помощью
- Windows
- iptables в Линукс
- SSH-туннеля
- Заключение
Зачем нужен проброс портов
Домашние устройства находятся в локальной сети. Для доступа к интернету они используют маршрутизатор. Через него проходят данные от каждого домашнего устройства и отправляются в интернет. После получения ответа он сам раздает нужные данные обратно. Получается такая ситуация, что домашние девайсы видят интернет и могут получать из него данные, а из интернета виден только маршрутизатор.
Он выполняет роль сетевого шлюза, который защищает локальную сеть от проникновения. Поэтому и ценятся устройства, имеющие встроенные системы защиты, с их помощью внутренняя сеть остается в большей безопасности. Если вы не знаете, кто шлет сигналы в интернет, то и подобрать ключи к нему не сможете или это будет трудно.
Есть вещи, которые почти бесполезны при использовании в локальной сети. Это камеры видеонаблюдения или FTP-сервера. Доступ к камерам нужен всегда, чтобы в любой момент можно было посмотреть, что происходит дома или на другой территории. FTP для домашнего использования заводить смысла нет, есть способы организовать обмен данными проще. Так что для его использования тоже потребуется подключение из интернета.
Чтобы подключаться к таким девайсам используют переадресацию. На маршрутизатор приходит пакет с указанием номера порта, а тот его переадресуют напрямую камере или серверу. Получается, что человек из интернета общается сразу с устройством, минуя роутер. Такой способ позволяет получать данные напрямую, но при его перехвате, проникнуть в сеть становится проще.
Подключение устройств для прямого обмена данными с интернетом повышает опасность для домашней сети, но иногда другого выбора нет.
Что необходимо для выполнения перенаправления
Для начала вам нужен белый IP-адрес. Белый – это значит статический адрес. Обычно при каждом подключении провайдер выдает вам адрес из своего пула свободных IP. Каждый раз он оказывается разным, а для подключения его нужно знать. Чтобы избежать проблем с подключением, обратитесь к провайдеру и попросите, чтобы он дал вам статический адрес.
Услуга по предоставлению постоянного адреса платная, но сумма в месяц получается небольшая. Так что заплатите, если такая услуга предоставляется. Подключение такой услуги несет и угрозу, потому что вы всегда доступны по этому адресу. Это упрощает попытки подключение к вашему оборудованию злоумышленников.
Если провайдер не оказывает услуг по покупке белых адресов, то посмотрите в параметры роутера. Некоторые из них умеют работать в dynDNS, который можно использовать вместо адреса. Если на роутере такой настройки нет, то воспользуйтесь одним из сервисов, которые предоставляют услуги по использованию имени. После подключения к такому сервису, к роутеру можно обращаться по имени, а не по адресу.
Теперь на том оборудовании, которое «смотрит» в интернет настраивается переадресация портов. Прописываете, что данные, пришедшие на такой-то порт направляются такому-то устройству. Здесь тоже можно указать порт, на который они пойдут, если это важно. Теперь все полученные пакеты в неизменном виде отправятся вашему домашнему девайсу. Если порт не указывать, то все пакеты идут маршрутизатору, а оттуда распределяются стандартным порядком.
Ручной проброс через кабинет роутера
Проще всего перенаправить пакеты через настройку роутера. У них обычно есть встроенные параметры, которые называются «переадресация», «проброс портов», «port forwarding», «виртуальные порты» или каким-то похожим образом. Если название не очевидно, то лучше найти инструкцию для своей модели.
На Dlink можно сделать через мастер настройки виртуального сервера. На главном экране нажмите на него, откроется еще одно окно, в котором выберите внутренний IP, на который будут передавать пакеты.
Или можно настроить стандартный проброс, для этого зайдите в расширенные настройки, потом «Виртуальные серверы» в разделе «Межсетевой экран». В открывшемся коне нажмите на «Добавить».
Здесь заполните данные для установки соединения. Главное – это поставить значения во внешнем и внутреннем порте, чтобы маршрутизатор понимал, откуда и куда переправлять данные. Тут же можно указать и внешние с внутренними адресами.
Как пробросить порты с помощью
Бывает и так, что внешним устройством в сети является компьютер или специально созданный для этого сервер. Это не значит, что вам придется обязательно ставить роутер или настраивать все заново, большинство систем позволяет пробросить порты. Здесь покажем несколько примеров того, какие параметры нужно устанавливать, чтобы все заработало.
Если у вас более экзотические варианты и указанные способы вам не подходят, то придется смотреть инструкции конкретно под вашу версию операционной системы. Хотя что-то более сложное обычно носит специализированный характер и на домашних компьютерах не стоит.
Windows
Откройте меню пуска и наберите там «cmd», по найденной программе щелкните правой кнопкой мыши и выберите в появившемся меню «Запуск от имени администратора». В открытой командной строке введите следующую команду:
netsh interface portproxy add v4tov4 listenaddress=xxx.xxx.xxx.xxx listenport=nnn connectaddress=xxx.xxx.xxx.xxx connectport=nnn
В команде нужно установить эти данные:
- listenaddress – это тот адрес, с которого будут передавать пакеты.
- listenport – порт на адресе, принимающем пакеты, который будет прослушиваться для получения информации.
- connectaddress — удаленный или локальный адрес на который перенаправляются соединения.
- connectport — удаленный или локальный порт на который перенаправляются соединения.
Чтобы посмотреть все созданные правила введите netsh interface portproxy show all, после этого списком отобразятся все доступные перенаправления. Для удаления используйте netsh interface portproxy delete v4tov4, только впишите тут те адреса, которые были прописаны в начальной команде.
Эти способы работают и в Windows 10, и в других системах, начиная с Windows Server 2003, в котором и добавили возможность использования этих команд. Во всем, что было до него так сделать не получится. Вот только такими системами лучше не пользоваться, потому что их поддержка давно отменена, так что там нет обновлений и устранения угроз безопасности.
iptables в Линукс
В линуксе действовать будем с помощью таблиц маршрутизации iptables. Действовать будем с помощью команд, хотя в некоторых системах, таких как Linux Ubuntu есть и графическая оболочка, через которую можно провести такие операции.
Сначала включаем возможность пробрасывать порты в принципе. Для этого вводим команду:
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
Теперь открываем /etc/sysctl.conf и ищем там строку #net.ipv4.ip_forward=1, удаляем с неё значок комментария, чтобы она стала снова активна. Теперь пишем команду:
sudo iptables -A FORWARD -i enp0s3 -o enp0s8 -j ACCEPT
Вместо enp0s3 подставляем название вашего внешнего интерфейса, вместо enp0s8 ставим название внутреннего интерфейса. Вся этак команда разрешает проброс портов и передачу данных из внешней сети во внутреннюю.
Теперь пишем сами правила для перенаправления:
- sudo iptables -t nat -A PREROUTING -p tcp -d адрес внешнего интерфейса —dport внешний порт -j DNAT —to-destination внутренний адрес:внутренний порт
- sudo iptables -t nat -A POSTROUTING -p tcp —sport внутренний порт —dst внутренний адрес -j SNAT —to-source внешний адрес:внешний порт
В тех местах, где написан курсив, вам нужно проставить свои значения. Первая команда будет отправлять все поступившие на определенный порт внешнего интерфейса данные на определенный порт по внутреннему адресу. Вторая команда делает обратную операцию, отправляет данные с определенного порта устройства внутренней на определенный порт внешней сети.
Теперь нужно создать файл, в который запишем наши новые правила, на случай, если они слетят. Выполняем команду:
- sudo nano /etc/nat
Вписываем в файл наши созданные правила. - sudo iptables -t nat -A PREROUTING -p tcp -d адрес внешнего интерфейса —dport внешний порт -j DNAT —to-destination внутренний адрес:внутренний порт
- sudo iptables -t nat -A POSTROUTING -p tcp —sport внутренний порт —dst внутренний адрес -j SNAT —to-source внешний адрес:внешний порт
- sudo nano /etc/network/interfaces
Открываем файл интерфейсов. - Дописываем в конце строчку pre-up /etc/nat. Это позволит подгружать файл с командами после каждой перезагрузки системы.
Если вдруг захотите посмотреть все действующие правила, то введите в консоли sudo iptables -L -t nat. Отобразятся все действующие правила.
SSH-туннеля
SSH-туннели используются для безопасного внешнего доступа и передачи данных из интернета во внутреннюю сеть. Чем-то их действие похоже на организацию VPN-сервера и передачу данных внутри этой приватной сети.
Только если впн бывает еще и общим, то про SSH этого не скажешь. Такие туннели организуют для безопасной связи со своей локальной сетью или каким-то устройством в нем. Если у вас уже организован доступ к какому-то оборудованию внутри сети, то можно будет пробросить порт через него, чтобы получить нужный доступ.
SSH-туннели используют для безопасно передачи данных и подключению к свое оборудованию, но не к каждому девайсу так удобно подключаться.
Проблема возникает такая же, как и в случае с роутерами. Если у вас построен полноценный туннель, то он может быть организован на Линуксе, виндовсе или используя какую-то операционную систему с вашего маршрутизатора. При этом настройка параметров и ограничений тоже лежит на вас.
Команда для проброски портов выглядит так на большинстве устройств:
$ ssh -f -N -R 2222:10.11.12.13:22 username@99.88.77.66
Теперь доступ к устройству можно получить по адресу http://localhost:2222 или командой $ ssh -p2222 localhost. Все это делается через ваш хост 99.88.77.66 к которому уже построен и настроен туннель, так что само его построение не рассматриваем.
Заключение
Проброс портов требуется в нескольких случаях, но всегда нужен для получения доступа к какой-то информации. Проводить его стоит с осторожностью, также хорошо, если вы сможете как-то дополнительно защитить оборудования, к которому теперь подключаетесь из сети. Сам белый адрес увеличивает шансы на взлом оборудования, а если иметь еще и незащищенное соединение через один из портов, то шансы увеличиваются.
Проблемы возникнут и при параноидальной настройке фаерволлов и антивирусов на компьютере или маршрутизаторе. Лучше заранее создайте исключения для каждого проброшенного порта и будущего соединения. Если этого не сделать, то в случайный момент времени антивирус может зарезать это соединение. Фаерволл-то его сразу не пропустит, если оно ему не нравится. А вот комплексные решения могут подложить свинью в самый неожиданный момент.
- Remove From My Forums
-
Вопрос
-
в windows 10 pro, как перенаправить исходящий tcp траффик с локального ip и порта 192.168.0.5:445 на внешний ip и порт 123.53.2.6:44000 средствами самой windows? или посоветуйте программу
-
Изменено
tehnikpc2
11 декабря 2021 г. 15:29
-
Изменено
Все ответы
-
Посмотрите вот это:
https://docs.microsoft.com/en-us/windows-server/networking/technologies/netsh/netsh-interface-portproxy
This posting is provided «AS IS» with no warranties, and confers no rights.
-
это для входящего траффика, а мне исходящий
-
это для входящего траффика, а мне исходящий
Это и будет _входящим_ трафиком на хосте 192.168.0.5 (или куда именно происходит соединение), нет? Думаю, никто не помешает вам присвоить своему хосту этот адрес (можно на виртуальный адаптер если возможен
конфликт) и далее переназначить уже _входящий_ трафик куда надо?В любом случае поясните более детально что вы пытайтесь сделать, вполне возможно есть более простые решения данной задачи. Если конечно это не упражнение в переназначении трафика без какой либо цели.
This posting is provided «AS IS» with no warranties, and confers no rights.
-
за роутером с белым ip
123.53.2.6:44000 есть samba сервер 192.168.22.3 со стандартным портом 445 tcp, нужно попасть на него из вне просто, поскольку в windows жёсткая привязка с порту 445, а порт 445 уже занят на маршрутизаторе, сделан проброс порта
44000 на 445, здесь всё просто -
за роутером с белым ip
123.53.2.6:44000 есть samba сервер 192.168.22.3 со стандартным портом 445 tcp, нужно попасть на него из вне просто, поскольку в windows жёсткая привязка с порту 445, а порт 445 уже занят на маршрутизаторе, сделан проброс порта
44000 на 445, здесь всё простоСамба в интернете на любом порту звучит как не самая хорошая идея. VPN является более правильным решением.
This posting is provided «AS IS» with no warranties, and confers no rights.
-
установил Traffic Inspector, создал правило для перенаправления в правила-перенаправление запросов, но пока не помогает
-
Может вам попробовать использовать WebDav?
-
-
Изменено
tehnikpc2
14 декабря 2021 г. 15:37
-
Изменено
-
поддержка Traffic Inspector ответила что такое перенаправление возможно с помощью их программы, установил,
сделал правильно правило для перенаправления, но пока не работает ( -
Вам не трафик перенаправлять надо, а искать приложение, которое может использовать отличный от 445 порт при подключении через smb. Если на удалённом хосте настроена samba, то я могу предположить, что другая сторона Linux, тогда могу
посоветовать использовать SFTP, чей порт можно просто поменять в Winscp.Что касается Traffic Inspector — то это уже у них спрашиваете, почему не работает.
-
другая сторона windows 7 ultimate
-
какие есть программы для smb?
-
другая сторона windows 7 ultimate
тогда откуда вы взяли «samba»?
и зря вы это написали. сейчас придёт человек, и будет отвержадать, что Windows 7 Ultimate практически нигде не установлена за рельные деньги, а вы перат. Но это только от его незнания того, что на Ultimate у MS было куча акции. Например, пройди обучение
в Microsoft и получи Ultimate в подарок.какие есть программы для smb?
да любые файловые менеджеры. например, Total Commander
Настройка перенаправления портов в Windows выполняется из командой строки (cmd.exe от имени Администратора) через режим Portproxy команды Netsh. Синтаксис команды на примере ниже:netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport
где,
- listenaddress – локальный IP адрес, на котором ожидается соединение (полезно, если у вас несколько сетевых карт или несколько IP адресов на одном интерфейсе);
- listenport – номер локального TCP порта, подключение к которому будет перенаправляться (на этом порту ожидается входящее соединение);
- connectaddress – локальный или удаленный IP-адрес или DNS-имя, на который нужно перенаправить сетевое подключение;
- connectport – номер TCP порта, на который нужно перенаправить трафик с порта listenport.
Пример написания команды:
netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=16732 connectaddress=192.168.1.17 connectport=16732
После ввода правила выводим на экран список всех активных правил перенаправления TCP портов в Windows, выполните команду:
netsh interface portproxy show all
В нашем случае присутствует только одно правило форвардинга с локального порта 16732 на внешний порт 16732 на другом ПК из одного нашего ПК в другой ПК в нужный нам порт.
Listen on ipv4: Connect to ipv4: Address Port Address Port --------------- ---------- --------------- ---------- 127.0.0.1 16732 192.168.1.17 16732
Убедившись что правило создано — переходим к проверке его на практике.
В данном примере мы настраивали отправку запросов из одного ПК в другой для печати чека на Сервер печати АТОЛ который находиться в компьютере в локальной сети. Так же можно сделать и не только для АТОЛ.
Вступление Соображения
Прежде чем реализовать что-либо из этого, было бы очень полезно узнать, что на самом деле делает маршрутизация.
Маршрутизация не меняет сетевых адресов. (Ну, NAT делает. И NAT может быть выполнен, пока применяется маршрутизация. Однако, если вы хотите научиться делать что-то, вы должны стараться сделать вещи простыми. И лучше всего думать о простой / традиционной маршрутизации как о отдельном процессе, потому что это гораздо проще думать об этом.)
Прежде чем смотреть на изменение таких вещей, как адреса, давайте удостоверимся, что есть полное понимание того, как на самом деле работают эти вещи, чтобы мы не пытались делать что-то, что будет нарушать общие правила проектирования сети (и которые, вероятно, будут отвергнуты большинством оборудования и программное обеспечение, которое обычно реализует эти правила). Если этот материал будет изучен, то, по крайней мере, если мы попробуем что-то сумасшедшее, мы поймем, что то, что мы пытаемся, сумасшедшее, и будем мысленно подготовлены к тем типам препятствий, с которыми мы пытаемся столкнуться. Это намного лучше, чем не знать эти детали.
О маршрутизации
Маршрутизация обычно предназначена для обеспечения того, чтобы трафик поступал из одной сети (часто называемой «подсетью» или «подсетью») в другую сеть.
Когда ваш компьютер отправляет сетевой трафик, он, скорее всего, отправляет «кадры» сетевого трафика. Эти кадры называются трафиком уровня 2. (Уровень 1 ориентирован на физические соединения, такие как кабели или антенны и радиоволны.) Кадры доставляются по адресам MAC-48 (также известным как адреса EIU-48, и гораздо чаще просто называются «MAC-адресами»). Наиболее распространенные способы доставки кадров — использование Ethernet (через медные кабели UTP) или Wi-Fi.
Кадры, как правило, содержат пакеты. Наиболее распространенными типами пакетов в наши дни являются IPv6 и IPv4. (Вероятно, не в таком порядке …) Эти пакеты считаются трафиком уровня 3. Пакеты, как правило, содержат сегменты TCP или дейтаграммы UDP, которые являются трафиком уровня 4. Я использую термин «уровень» в соответствии с тем, что описывается «моделью OSI», которая обычно преподается на многих уроках / тренингах по работе с сетями профессионального уровня.
Теперь предположим, что вы на 192.168.1.103 и хотите общаться с 4.2.2.2. Это может быть трафик UDP-порта 53 (DNS), но вместо этого я буду использовать ICMP (ping).
Обычно ваш компьютер сравнивает 192.168.1.103 и размер вашей сети, который определяется длиной префикса (например, IPv4 /24). Длина префикса (особенно IPv6 /64) наиболее распространена для IPv6. Для IPv4 размер сети очень часто записывается в виде маски подсети. Двоичные значения общих масок подсети начинаются со всех, со всеми нулями ближе к концу масок подсети, поэтому вы часто заканчиваете с масками подсети, такими как 255.255.255.0. Используя эти примеры IPv4 /24 и 255.255.255.0, размер сети составляет 256 адресов. Таким образом, компьютер определяет, какие адреса будут в начале и в конце группы из 256 адресов, если все возможные интернет-адреса будут разделены на группы одинакового размера такого размера. Таким образом, если бы все возможные интернет-адреса были разбиты на группы по 256 адресов, то 192.168.1.103 были бы в группе, которая идет от 192.168.1.0 и 192.168.1.255 (включительно).
Поскольку желаемый пункт назначения — 4.2.2.2, а 4.2.2.2 не находится между 192.168.1.0 и 192.168.1.255, то трафик не просто отправляется на MAC-адрес 4.2.2.2 с использованием фрейма. (Мы вряд ли сможем использовать протокол разрешения адресов IPv4 (ARP) или протокол обнаружения соседей (если мы использовали IPv6) для обнаружения MAC-адреса, поскольку он находится в другой сети. Это связано с ограничениями, которые влияют на ARP и IPv6 NDP.) Итак, если мы не можем отправить туда фрейм, как мы можем общаться с 4.2.2.2?
По маршрутизации. Мы можем найти шлюз, который поможет нам получить трафик до 4.2.2.2. Для наиболее распространенного потребительского оборудования люди часто используют только два типа сетей: сеть, частью которой является компьютер, и всемирный Интернет. (Корпорации иногда имеют несколько сайтов и могут иметь другие сети.) Шлюз, предназначенный для обработки адресов в любую точку мира (весь Интернет), иногда называют «последним средством» и гораздо чаще называют «шлюзом по умолчанию». Это шлюз, который будет использоваться для любого адреса, если не существует более конкретного шлюза.
Итак, ваш компьютер отправит запрос IPv4 ARP для шлюза по умолчанию, который должен быть в вашей сети. Как правило, это будет первый «используемый» адрес в вашей сети. (Из-за некоторых очень старых стандартов вещания и, возможно, также из-за некоторой общей путаницы, многие люди просто считают первый адрес подсети непригодным для использования. Это включает создателей некоторого программного и аппаратного обеспечения, поэтому решения этих людей часто влияют на нас. Так что 192.168.1.0 может быть непригодным в этом примере.) Таким образом, 192.168.1.1 может быть первым используемым адресом и может быть шлюзом по умолчанию. Я буду использовать этот пример.
Как только ваш компьютер определит MAC-адрес вашего шлюза по умолчанию, он отправляет ICMP-сообщение с использованием IP-пакета, адресованного для 4.2.2.2, и этот IP-пакет является частью кадра, который переходит на MAC-адрес шлюз.
Таким образом, сетевой трафик, содержащий сообщение ICMP, фактически не отправляется на IP-адрес 192.168.1.1. Трафик отправляется на MAC-адрес, связанный с 192.168.1.1.
Затем ваш локальный маршрутизатор будет обращать внимание на трафик, потому что трафик идет на MAC-адрес. Поскольку это маршрутизатор, он будет взаимодействовать путем маршрутизации трафика. Таким образом, ваш маршрутизатор выяснит, знает ли он, как общаться напрямую с 4.2.2.2, находясь в той же сети. По всей вероятности, ваш маршрутизатор не будет знать, как получить MAC-адрес 4.2.2.2. Таким образом, процесс повторяется, так как ваш маршрутизатор затем «направит» трафик на MAC-адрес другого маршрутизатора, который может быть расположен у вашего интернет-провайдера (ISP).
Теперь, смысл объяснения всего этого заключается в том, что даже если вам все-таки удалось заставить ваш компьютер перевести 10.10.10.10 на 20.20.20.20, это может оказаться бесполезным, если принимающее оборудование не ожидает трафика для 10.10.10.10. Принимающее устройство в 20.20.20.20 может принимать трафик, но может игнорировать его, если трафик предназначен для 10.10.10.10.
Имейте в виду, что в моем рабочем примере, даже несмотря на то, что IP-трафик был отправлен на MAC-адрес, связанный со шлюзом по умолчанию, назначение IP-пакета 4.2.2.2 оставалось неизменным в течение всего процесса маршрутизации трафика.
Итак, если вы пытаетесь изменить IP-адрес назначения, это не простая маршрутизация. Это NAT. NAT — это аббревиатура для трансляции сетевых адресов. Таким образом, когда сетевой трафик включает определенный сетевой адрес (10.10.10.10), он переводится на другой адрес (20.20.20.20). Смотрите: NAT в Windows.
Предел TCP
Обратите внимание, что большая часть интернет-трафика использует TCP. Если вы пытаетесь настроить TCP-соединение на 20.20.20.20, требование TCP для двусторонней связи может вызвать некоторые проблемы. Даже если вы могли бы получать трафик, отправленный на 20.20.20.20, тогда 20.20.20.20 должен иметь возможность успешно отвечать, потому что TCP требует двусторонней связи для завершения «рукопожатия TCP» в начале соединения TCP, перед любым ваших («полезных данных») данных отправлено. Если ваша программа считает, что она отправляет трафик на 10.10.10.10, то ваша программа не будет принимать ответный трафик с 20.20.20.20. Таким образом, в дополнение к NAT для исходящего трафика, вам также может понадобиться обратить эффекты NAT, если вы используете TCP. TCP очень распространен, например, HTTP (веб) и SMTP (электронная почта). Основными исключениями является трафик, который очень мал (например, классический DNS, который использует UDP. Другим примером является ICMP) или трафик, который очень чувствителен к медлительности (может быть VOIP, новости (например, цены на акции, где старая информация бесполезна, чем повторное обновление новой информации), игры в реальном времени). Может быть очень полезно узнать, будет ли протокол, который вы собираетесь использовать, опираться на протокол более низкого уровня, такой как TCP. Сетевой сниффинг (например, tcpdump или Wireshark) также может быть очень полезен для понимания того, почему что-то не работает.
Наличие NAT
Как правило, вы не беспокоитесь о NAT на компьютерах конечных пользователей. Как правило, это делается маршрутизатором. Некоторые версии Windows поддерживают функцию маршрутизатора, что означает, что компьютер может обрабатывать сетевой трафик аналогично тому, как другие маршрутизаторы обрабатывают трафик.
Этот вопрос имеет тег «Windows», поэтому я предполагаю, что вы хотите сделать это с помощью программного обеспечения, встроенного в Microsoft Windows, и я думаю, что NAT будет поддерживаться функцией под названием «Маршрутизация». В современных версиях Windows эта функция встроена в некоторые программы под названием «Маршрутизация и удаленный доступ» (сокращенно «RRAS»).
Насколько я знаю, RRAS часто не поддерживается «домашними» версиями Microsoft Windows. Он часто поддерживается выпусками Windows Server (например, Windows Server 2008 R2). Я думаю, что он может поддерживаться выпусками «Professional» для конечных пользователей, такими как «Windows 7 Professional». Я подозреваю, что эта функция может отсутствовать в выпусках Home, таких как «Windows 7 Home».
Даже если эта функция потенциально доступна в вашей версии Windows, она, вероятно, настолько отключена по умолчанию, что даже удалена. Таким образом, вам может потребоваться перейти к месту, где вы можете установить компоненты Windows (например, «Диспетчер сервера», или, возможно, апплет Панели управления, который включает в себя слово «Программы», как часть его имени, а затем левый кадр этого апплета иметь гиперссылку для добавления / установки / включения «функций»).
- Возможный ресурс: TechNet. Включение и настройка NAT.
- Возможный ресурс: TechNET: команды Netsh Routing IP NAT Context
Теперь, теоретически, вы можете указать компьютеру направлять трафик на прокси-сервер, который транслирует трафик и отправляет его как другой IP-адрес. Так что то, о чем вы просите, может быть возможным.
подходы
Одна из возможных альтернатив: рассмотрите возможность манипулирования DNS вместо IP-трафика. например, укажите DNS-имя на другой IP-адрес, возможно, с помощью CNAMES (если вы можете повлиять на записи DNS для соответствующих доменных имен) или с помощью файлов хостов. Зачастую это гораздо проще реализовать и отменить (если вы решили отменить свои изменения).
Скорее всего, очень, очень хорошо, что это не будет лучшим подходом к тому, чего вы действительно пытаетесь достичь. Поймите, что попытка сделать что-то нормально, в соответствии с правилами, может быть очень сложной. Попытка придумать свои собственные способы ведения дел намного сложнее. Крайне нежелательно становиться слишком изобретательным при проектировании сетей, прежде чем вы имели опыт успешного проектирования сетей с использованием стандартных методов, и вы знаете ограничения стандартных методов (и, вероятно, также, почему эти ограничения существуют), и вы действительно знаете, что вы ‘ лучше (и почему лучше). В противном случае вы можете столкнуться с множеством проблем. (Я могу говорить из некоторого опыта. В конце концов, я просто научился пытаться делать вещи простым способом.)
Вопрос выглядит как классический случай проблемы XY. Если вы пытаетесь достичь чего-то другого, кроме того, о чем вы только что просили, попробуйте создать другой вопрос, в котором вы спрашиваете о том, чего вы действительно пытаетесь достичь.