¿Cuál es la mejor manera de reenviar el tráfico de un puerto específico a otra máquina?

¿Cuál es la mejor manera de reenviar el tráfico de un puerto específico a otra máquina?

La configuración que tengo es esta:

[client01] <-A-> [server01] <-B-> [server02]

client01Puede acceder al puerto 9300 en server01(conexión A). server01solo puede acceder al puerto 9300en server02(conexión B)vía ssh. ¿Cuál es la mejor manera de hacer que todo el tráfico en el puerto 9300vaya al server01puerto ?9300server02

Puedo hacer esto exitosamente con un túnel ssh de client01a server01a server02, pero no quiero tener que ejecutar ssh en client01. Cuando hago ssh desde server01el server02puerto de reenvío 9300 ( ssh -g -L9300:localhost:9300 server02en adelante server01), no funciona. ¿Estoy usando el comando incorrecto?

EDITAR: se agregó que solo se puede acceder al servidor 02 a través de ssh

Respuesta1

Puedes hacer esto con una regla DNAT de iptables, algo como:

iptables -A PREROUTING -p tcp -d x.x.x.x --dport 9300 -j DNAT --to-destination y.y.y.y:9300

Sustituya la dirección IP del servidor01 por x.x.x.xla dirección del servidor02 y.y.y.yy listo.

Todo esto supone, por supuesto, que estás ejecutando iptables en el servidor01. Esto también supone que el servidor02 está utilizando el servidor01 para enrutar el tráfico de regreso a Internet. Si server02 no lo es, entonces esto no sirve para hacer lo que desea.

Edite a la luz de la conectividad solo SSH entre las máquinas:

Su línea de comando para el reenvío del puerto SSH se ve bien, excepto que necesita un espacio entre "L" y "9300". También deberá asegurarse de que la computadora server01 acepte conexiones entrantes en el puerto 9300. Eche un vistazo a su cadena INPUT de iptables en la tabla de filtros ( iptables -L INPUT) para asegurarse de que se permitirá la entrada del tráfico.

También necesitarás mantener ese túnel en funcionamiento de manera persistente.

información relacionada