
La configuración que tengo es esta:
[client01] <-A-> [server01] <-B-> [server02]
client01
Puede acceder al puerto 9300 en server01
(conexión A
). server01
solo puede acceder al puerto 9300
en server02
(conexión B
)vía ssh. ¿Cuál es la mejor manera de hacer que todo el tráfico en el puerto 9300
vaya al server01
puerto ?9300
server02
Puedo hacer esto exitosamente con un túnel ssh de client01
a server01
a server02
, pero no quiero tener que ejecutar ssh en client01
. Cuando hago ssh desde server01
el server02
puerto de reenvío 9300 ( ssh -g -L9300:localhost:9300 server02
en 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.x
la dirección del servidor02 y.y.y.y
y 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.