Windows 10 - NAT - Reenvío de puertos y enmascaramiento de IP

13

Estoy buscando una forma de obtener la funcionalidad de iptables en Windows 10. Habilité el enrutamiento IP y necesito reenviar los datos tcp a otro host (puerto 8080) y luego reenviar su respuesta mientras enmascaro IP. En Linux pude hacer esto usando lo siguiente (Donde $ 1 = <IP interna>, $ 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

¿Hay alguna manera de lograr una funcionalidad similar en Windows 10?

Orestis P.
fuente
Probablemente sea demasiado corto para una respuesta y no sé si esto todavía es válido para Windows 10. Para el reenvío de puertos, consulte esta respuesta . Enmascararse en Windows se llama Conexión compartida a Internet (ICS) , consulte esta respuesta .
rda
Hola, gracias por tu aporte. Intenté usar netsh pero no parece funcionar (tal vez porque necesito escuchar dirección para ser comodín *). Para ICS, no estoy exactamente seguro de cómo funcionará (¿Necesitaré un segundo adaptador? Si los conecto no puedo usar ICS)
Orestis P.
Tal vez podría usar netcat en su PC. Escuchará en un puerto y enviará a otro puerto. IP será la IP de su máquina en el medio.
TJJ
2
@OrestisP. echa un vistazo netsh interface portproxy add v4tov4 listenport=80 connectaddress=127.0.0.1 connectport=8080Intentaré traducir tus iptables a netsh si tengo tiempo. reemplace el 127.0.0.1 con la dirección que elija
Zalmy

Respuestas:

16

Windows netshpuede configurar un proxy para permitir a los administradores proxy del tráfico ipv6 sobre ipv4. Netsh también tiene una opción para configurar un proxy para ipv4 a ipv4.

Para su configuración, use netsh interface portproxy add v4tov4 listenport=80 connectaddress=127.0.0.1 connectport=8080reemplazar 127.0.0.1la dirección con la que desea usar el proxy.

Aquí hay un pequeño desglose del comando.

netsh interface portproxyselecciona la interfaz que maneja los túneles. add v4tov4para crear un túnel ipv4 a ipv4. listenport=80para el puerto que desea que se conecten los clientes. connectaddress=127.0.0.1es la dirección remota a la que se representará a los clientes. connectport=8080es el puerto remoto

También puede usarlo listenaddress=si solo desea que el proxy esté disponible en una interfaz.

Para más información https://technet.microsoft.com/en-us/library/cc731068(v=ws.10).aspx

Zalmy
fuente
1
TENGA EN CUENTA que desafortunadamente esto solo funciona para TCP, por lo que si desea reenviar algo de tráfico UDP, no tiene suerte.
user276648
1
Funciona para mí usando Windows 10 para reenviar puertos ssh (puerto del servidor 22) en una máquina que ejecuta una VPN. Una máquina (sin conexión VPN) en mi red doméstica puede conectarse a otra máquina dentro de la VPN utilizando el puerto de escucha.
Frank M
1

Al menos para fines de prueba pude usar la siguiente utilidad para reenviar TCP y UDP

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

Es para XP, pero también funciona en Win10.

usuario276648
fuente
Windows 10 me dice: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.
Peter Turner
1
@ PeterTurner: verifique el readmearchivo. Veo PassPort.exe -Installpara instalar el servicio.
usuario276648