¿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?


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.


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.


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


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.


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


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 .


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.


-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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.