¿Reenvío de puertos en Linux sin iptables?

34

Tengo un servidor Linux VPS (virtuozzo) y necesito configurar el reenvío de puertos, pero mi proveedor de alojamiento no permite módulos de kernel iptables-nat, por iptables -t natlo que no funciona.

Estoy buscando otras formas de hacerlo. Sé que puedo reenviar el puerto usando openssh , pero necesito reenviar más de 20 puertos diferentes, tcp y udp, por lo que esta no es una opción.

¿Existe algún software para Linux que pueda hacer reenvío de puertos?

troex
fuente
eh buena pregunta +1. No conozco una solución, espero ver si hay algo aquí.
The Shurrican
Y luego, ¿qué pasa con un programa que le permite reenviar puertos a diferentes destinos en función de la IP de origen?
dpk
Evite el problema por completo al nunca usar VPS basados ​​en Virtuozzo / OpenVZ.
Michael Hampton
@MichaelHampton: No es extremadamente constructivo ...
Nicolas Raoul

Respuestas:

47

Use la herramienta llamada "socat", es una gran herramienta para tales cosas y ya está empaquetada en muchas distribuciones de Linux. Lea sobre esto aquí: http://www.dest-unreach.org/socat/doc/README

Ejemplo de reenvío de puertos con socat:

socat TCP4-LISTEN:80,fork TCP4:www.yourdomain.org:8080

Esto redirige todas las conexiones TCP en el puerto 80 a www.yourdomain.org puerto 8080 TCP.

Fbo
fuente
No olvide que https es el predeterminado en el puerto 443, en lugar del puerto 80 :)
keiki
Socat es la única herramienta que funcionó para mí en una frambuesa pi solo ipv6
chotchki
Perfecto, resolvió mi problema al instante. Tenga en cuenta que debe asegurarse de que el puerto entrante esté abierto en iptables si lo tiene.
Jancha
13

Hay un pequeño programa de recursos ligeros llamado redirque es bastante configurable.

apt-get install redir en distribuciones basadas en Debian.

Jonathan Ross
fuente
He usado esta herramienta en el pasado y funciona muy bien ...
Alex
Yo secundo esta herramienta. Parece que esta no es una herramienta de reenvío de paquetes, sino el túnel tcp. Cambiará la dirección IP de origen vista por el destino. Por lo tanto, funciona muy bien cuando necesita redirigir un puerto a otra computadora que tiene una configuración de enrutamiento diferente.
scegg
10

¿Qué hay de rinetd?
Es un demonio que redirige las conexiones TCP. Eche un vistazo a la página de manual para ver si se adapta a sus necesidades: http://www.boutell.com/rinetd/

fabuloso
fuente
Parece interesante, pero está limitado a TCP solo como dijiste.
troex
UDP es compatible ahora: github.com/samhocevar/rinetd
kev
6

xinetdadmite un atributo de redireccionamiento que hará lo que quieras. Como otros han señalado, hay varios programas que manejan redirecciones.

El uso xinetdu otro programa que use la tcpwrappersbiblioteca le permitirá aplicar restricciones de acceso cuando sea necesario.

BillThor
fuente
4

xinet / inetd. Por ejemplo:

redirigir

Permite que un servicio tcp se redirija a otro host. Cuando xinetd recibe una conexión tcp en este puerto, genera un proceso que establece una conexión con el host y el número de puerto especificado, y reenvía todos los datos entre los dos hosts.

http://linux.die.net/man/5/xinetd.conf

poige
fuente
Parece interesante, pero está limitado a TCP solo como dijiste
Doud
4

Encontré una pequeña utilidad llamada portfwd http://portfwd.sourceforge.net/ que hace exactamente lo que necesito (reenvío TCP y UDP), la página de inicio dice que se actualizó por última vez en 2002, pero la última versión es 2007, y funciona en el núcleo 2.6 .

troex
fuente
Aceptaré mi respuesta, ya que parece que este es el único software que es totalmente compatible con los protocolos TCP y UDP.
troex
3

SSH Realiza el reenvío de puertos, siempre que pueda hacer un túnel en una conexión SSL.

JeffG
fuente
-3

Ok, esta es la respuesta simple que debería funcionar, no es ciencia espacial, pero la mayoría de las personas complican la respuesta y confunden todo lo nuevo para los usuarios de Linux.

ufw permite 2xxx

2xxx = cualquiera que sea su número de puerto, simplemente escriba ese comando en la terminal del servidor y se abrirá el puerto deseado.

denn
fuente
Simplemente abre el puerto en las interfaces que se encuentran fuera del servidor. No redirige ni reenvía el puerto de una ip a la otra. ABRE EL PUERTO.
AmirHossein