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 називається спільним доступом до Інтернету (ICS) , ознайомтеся з цією відповіддю .
rda

Привіт, дякую за ваш внесок. Я спробував використовувати netsh, але, схоже, це не працює (можливо, тому, що мені потрібна прослуховування адреси, щоб це було підстановкою *). Для ICS я не зовсім впевнений, як це буде працювати (чи знадобиться мені другий адаптер? Якщо я їх перемикаю, я не можу використовувати ICS)
Orestis P.

Можливо, ви могли використовувати netcat на своєму ПК. Він прослухає один порт і відправить на інший порт. IP буде IP-адресою вашої машини посередині.
TJJ

2
@OrestisP. Перевірте, netsh interface portproxy add v4tov4 listenport=80 connectaddress=127.0.0.1 connectport=8080я спробую перекласти ваші iptables в neth, якщо у мене є час. замініть 127.0.0.1 на
обрану

Відповіді:


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


1
Зверніть увагу, що це, на жаль, працює лише для TCP, тому якщо ви хочете переслати деякий трафік UDP, вам не пощастить.
user276648

1
Для мене працює за допомогою Windows 10 для пересилання ssh (порт 22 сервера) на машині, на якій працює VPN. Машина (без підключення VPN) у моїй домашній мережі може підключитися до іншої машини всередині VPN за допомогою прослуховування.
Френк М

1

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

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

Це для XP, але він працює і на Win10.


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встановити службу.
користувач276648
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.