Windows 10 - NAT - переадресация портов и маскарад IP

13

Я ищу способ получить функциональность iptables в Windows 10. Я включил IP-маршрутизацию, и мне нужно перенаправить данные tcp на другой хост (порт 8080), а затем переслать его ответ, маскируя IP. В Linux я смог сделать это, используя следующее (где $ 1 = <внутренний IP>, $ 2 = 80, $ 3 = 8080, $ 4 = tcp)

iptables -t nat -A PREROUTING -p $4 --match multiport --dports $2 -j DNAT --to-destination $1:$3 
iptables -A FORWARD -p $4 --match multiport --dports $2 -d $1 -j ACCEPT
iptables -t nat -A POSTROUTING -j MASQUERADE

Есть ли способ добиться аналогичной функциональности в Windows 10?

Орестис П.
источник
Возможно, слишком короткий для ответа, и я не знаю, действительно ли это все еще для Windows 10. Для переадресации портов проверьте этот ответ . Маскарадинг в Windows называется Internet Connection Sharing (ICS) , посмотрите этот ответ .
RDA
Здравствуйте, спасибо за ваш вклад. Я попытался использовать netsh, но, похоже, он не работает (возможно, потому, что мне нужно, чтобы адрес прослушивания был подстановочным знаком *). Что касается ICS, я не совсем уверен, как он будет работать (понадобится ли мне второй адаптер? Если я соединю их, я не смогу использовать ICS)
Орестис П.
Может быть, вы могли бы использовать Netcat на вашем компьютере. Он будет прослушивать один порт и отправлять на другой порт. IP будет IP вашей машины в середине.
TJJ
2
@OrestisP. проверить, netsh interface portproxy add v4tov4 listenport=80 connectaddress=127.0.0.1 connectport=8080я постараюсь перевести ваши iptables в netsh, если у меня будет время. замените 127.0.0.1 на адрес по вашему выбору
Zalmy

Ответы:

16

Windows netshможет настроить прокси, чтобы позволить администраторам прокси-трафик ipv6 через ipv4. Netsh также имеет возможность настроить прокси для ipv4 в ipv4.

Для настройки используйте netsh interface portproxy add v4tov4 listenport=80 connectaddress=127.0.0.1 connectport=8080замену на 127.0.0.1адрес, который вы хотите прокси.

Вот небольшая разбивка по команде.

netsh interface portproxyвыбирает интерфейс, который обрабатывает туннели. add v4tov4создать туннель от ipv4 до ipv4. listenport=80для порта вы хотите, чтобы клиенты подключались. connectaddress=127.0.0.1это удаленный адрес, на который будут проксироваться клиенты. connectport=8080это удаленный порт.

Вы также можете использовать, listenaddress=если хотите, чтобы прокси был доступен только на одном интерфейсе.

Для получения дополнительной информации https://technet.microsoft.com/en-us/library/cc731068(v=ws.10).aspx

Zalmy
источник
1
Обратите внимание, что это, к сожалению, работает только для TCP, поэтому, если вы хотите перенаправить некоторый UDP-трафик, вам не повезло.
user276648 13.12.16
1
У меня работает с использованием Windows 10 для переадресации порта SSH (серверный порт 22) на машине с VPN. Машина (без подключения VPN) в моей домашней сети может подключиться к другой машине внутри VPN с помощью порта прослушивания.
Фрэнк М
1

По крайней мере, для целей тестирования я смог использовать следующую утилиту для пересылки как TCP, так и UDP

https://sourceforge.net/projects/pjs-passport/

Это для XP, но работает и на Win10.

user276648
источник
Windows 10 говорит мне:Cannot start service from the command line or a debugger. A Windows Service must first be installed (using installutil.exe) and then started with the ServerExplorer, Windows Services Administrative tool or the NET START command.
Питер Тернер
1
@PeterTurner: проверьте readmeфайл. Я вижу, PassPort.exe -Installчтобы установить службу.
user276648