Redirigir tráfico entre puertos TCP con tcptunnel

Tcptunnel permite redirigir tráfico desde un puerto TCP a otro, escuchando en el puerto local y redirigiendo todo el tráfico hacia el puerto remoto que le indiquemos.

Tcptunnel puede ser utilizado con protocolos basados en TCP como HTTP, SMTP, POP, IRC, etc. y ha sido probado en GNU/Linux, FreeBSD, Solaris, HP-UX, Windows XP y Windows Server 2008.

Personalmente lo he probado entre dos máquinas CentOS y por el momento ha funcionado de forma correcta. En breve lo usaré en «producción» así que esperaremos a ver que tal. Os dejo unos ejemplos de utilización y su instalación.

Instalación

# wget http://www.vakuumverpackt.de/tcptunnel/tcptunnel-0.2.tar.gz
# tar -xzvf tcptunnel-0.2.tar.gz 
# cd tcptunnel-0.2
# ./configure --install-dir=/usr/local/bin
# make
# make install

Ejemplos de uso

En este ejemplo queremos redirigir todo el tráfico SMTP local contra el puerto SMTP de la máquina remota 192.168.0.100:

# tcptunnel --local-port=25 --remote-port=25 --remote-host=192.168.0.100 --stay-alive

En este ejemplo redirigimos el tráfico POP local (puerto 110) contra el puerto 111 del equipo remoto 192.168.0.100:

# tcptunnel --local-port=110 --remote-port=111 --remote-host=192.168.0.100 --stay-alive

En este ejemplo redirigimos el tráfico HTTP local (puerto 80) contra el puerto 80 del equipo remoto 192.168.0.100:

# tcptunnel --local-port=80 --remote-port=80 --remote-host=192.168.0.100 --stay-alive

Modo de uso:

# tcptunnel --help
Usage: tcptunnel [options]

Options:
  --version
  --help               this help

  --local-port=PORT    port to redirect
  --remote-port=PORT   target port
  --remote-host=HOST   target host

  --stay-alive
  --log-to-stdout

Si alguien conoce una forma más óptima de hacerlo, ¡soy todo oídos!

2 comentarios en “Redirigir tráfico entre puertos TCP con tcptunnel

  1. Personalmente, prefiero usar ssh (suele estar en todos los *nix) para el tuneling entre hosts. Si no necesitas encriptación ¿no has pensado en netcat?. Parafraseando tu 2º ejemplo:

    ssh -L110:0.0.0.0:111 -o TCPKeepAlive=yes 192.168.0.100

    (Debes tener activo AllowTcpForwarding en el demonio sshd)

    Saludos!

Comments are closed.