Port forwading en Windows con netsh interface portproxy

Por necesidades puntuales necesitaba hacer un reenvío de puertos o port forwarding en un servidor Windows 2008. En concreto tenía que habilitar temporalmente cierta consulta LDAP desde un servidor en la Nube contra el Directorio Activo corporativo, pero para ello debía pivotar a través de un servidor en la DMZ hacia un controlador de dominio interno:


Después de gastar algún tiempo en buscar alguna herramienta, c*garme varias veces en el fuck^ng Güindous y añorar repetidas veces mis iptables, resulta que es posible hacerlo en Windows simplemente con el comando netsh interface portproxy (¡vivan las Builting tools!):

C:\Users\pruebas>netsh interface portproxy add v4tov4 listenport=6688 listen address=192.168.12.25 connectport=389 connectaddress=172.20.58.12

C:\Users\pruebas>netsh interface portproxy show v4tov4

Listen on ipv4:             Connect to ipv4:

Address         Port        Address         Port
--------------- ----------  --------------- ----------
192.168.12.25     6688        172.20.58.12    389


Así de sencillo. Tenéis más información y posibilidades en http://technet.microsoft.com/en-us/library/cc731068%28v=ws.10%29.aspx#BKMK_15
Tener en cuenta que netsh portproxy necesita las librerías ipv6 aunque sólo uses v4tov4...

pd. "Nunca la subestimes porque no te gusta o porque creas que ya la conoces, podrías no conocerla tanto e incluso podría llegar a gustarte (aunque sea un poquito)" - Lección VI. Decálogo del buen informático.

Comentarios

  1. Hola Vicente esto mismo hace ya bastante tiempo tuve que realizar una tarea parecida en windows y utilice fpipe una tool free de McAfee que no requiere instalación

    http://www.mcafee.com/us/downloads/free-tools/fpipe.aspx

    FPipe v2.1 - TCP/UDP port redirector.
    Copyright 2000 (c) by Foundstone, Inc.
    http://www.foundstone.com

    FPipe [-hvu?] [-lrs ] [-i IP] IP

    -?/-h - shows this help text
    -c - maximum allowed simultaneous TCP connections. Default is 32
    -i - listening interface IP address
    -l - listening port number
    -r - remote port number
    -s - outbound source port number
    -u - UDP mode
    -v - verbose mode

    Example:
    fpipe -l 53 -s 53 -r 80 192.168.1.101

    This would set the program to listen for connections on port 53 and
    when a local connection is detected a further connection will be
    made to port 80 of the remote machine at 192.168.1.101 with the
    source port for that outbound connection being set to 53 also.
    Data sent to and from the connected machines will be passed through.

    Aquí tienes algunas free tools más que ofrece McAfee:

    http://www.mcafee.com/us/downloads/free-tools/index.aspx

    Aunque debo admitir que está muy bien realizalo con netsh interface portproxy ;)

    ResponderEliminar
    Respuestas
    1. interesante Iñaki, yo creo la herramienta de McAfee es incluso más vieja que la builting tool que trae Windows :-P

      Eliminar
  2. Este comentario es antiguo, de todas formas queria aportar que portproxy solo admite TCP. Protocolo UDP no está soportado en portproxy

    ResponderEliminar

Publicar un comentario