¿Cómo canalizar un puerto desde un servidor detrás de un firewall a un servidor remoto que permite conexiones a través de ssh?

0

Tengo un escenario en el que necesito abrir un puerto para un servidor detrás de un ISP que parece estar bloqueando el tráfico. En este caso tengo un servidor dedicado de forma remota que puedo ssh en y usar cualquier puerto que desee. Mi deseo es ingresar desde el servidor detrás de este firewall al servidor dedicado y luego abrir un puerto generalmente para que el cliente de esta otra aplicación pueda acceder a voluntad.

Pensé que era tan simple como, desde el servidor detrás del firewall ISP:

ssh username@remote_server_ip -R remote_server_ip:12345:localhost:12345

Y luego simplemente conectar con el software cliente para remoteserver:12345 como la configuración del servidor.

Además, tengo sshd_config ajustado a GatewayPorts clientspecified y cuando lo compruebe netstat -tln | grep 12345 en el servidor_remoto, estoy viendo: Conexiones de internet activas (solo servidores)

Proto Recv-Q Send-Q Local Address                Foreign Address             State      
tcp        0      0 remote_server_ip:12345       0.0.0.0:*                   LISTEN 

Desafortunadamente esto parece no funcionar. Estoy sospechando que estoy obteniendo algo en los argumentos ssh. ¿Algunas ideas?

ylluminate
fuente
Supongo que no desea -R, si está ejecutando la aplicación de cliente ssh desde detrás del firewall, Y su cliente habitual también está detrás del firewall. así que quieres que la escucha se realice en el cliente ssh. así que eso es -L que es por defecto. no -R. Trata eso. Entonces, con -L. (También tengo curiosidad si funciona sin -L .. pero me parece que no quieres -R). Así que intenta cambiar tu comando de decir -R a decir -L.
barlop
Como entiendo esto desde la página de manual, uno usaría este mismo argumento anterior para reenviar el tráfico de remote_server: 12345 al servidor de inicio local que está detrás del firewall. He repasado esto una y otra vez y según la página del manual, este parece Correcto y sin error.
ylluminate
ok, entonces su firewall está bloqueando la entrada y permitiendo que salga su cliente ssh. Y sus servidores regulares están al final del cliente ssh, veo por su último comentario que están. Así que sí quieres -R. ¿Cómo estás conectando a tu cliente habitual después? Quizás su tunnei esté funcionando pero está fallando al conectar su cliente con él. ¿Puede pegar tanto el comando para configurar el túnel (como lo ha hecho), el resultado (¿algo de salida? ¿No hay salida?) El comando para conectar el cliente regular a él y la salida.
barlop
Además, si solo está solucionando el problema, puede omitir la línea GatewayPorts en sshd_config. o dejar que sea el predeterminado no. Y conéctese directamente Además, quizás pueda mostrar una salida que muestre si su conexión ssh está incluso establecida o no. Supongo que está establecido. Tal vez se equivocó. Usted escribió ssh username @ remote_server_ip -R remote_server_ip: 12345: localhost: 12345 Intente cambiarlo a ssh username @ remote_server_ip -R 127.0.0.1:12345:localhost:12345 o ssh username @remote_server_ip -R 0.0.0.0:12345:localhost:12345 o
barlop
ssh username @ remote_server_ip -R *: 12345: localhost: 12345 O intente reemplazar * con la ip local. Tal vez cuando hiciste ssh username @ remote_server_ip -R remote_server_ip: 12345: localhost: 12345 Hiciste lo mismo con remote_server_ip. Y eso es incorrecto porque este último tiene que ser local (por ejemplo, 192 ...) o en bucle o * / 0.0.0.0.
barlop

Respuestas:

0

Si entiendo bien, usted quiere crear un túnel ssh desde su máquina detrás del ISP y exponer su servicio a través de un puerto en el servidor SSH.

Si ese es el caso, su línea de comando parece correcta. Hago algo similar.

Ha habilitado los puertos de puerta de enlace en la configuración sshd, por lo que todo está bien, si no lo hizo, solo podría vincular el puerto a la dirección de bucle de retorno 127.0.0.1 en el servidor ssh.

Nota rápida: tuve que reiniciar mi servidor ssh para que la opción gatewayport comenzara a funcionar. Reiniciar el servicio sshd debería ser suficiente, pero no funcionó para mí.

Veo que no está especificando un puerto para el servidor ssh, lo que significa que está usando el puerto 22, su ISP puede estar templado con él de alguna manera.

Otra cosa, sea cual sea el servicio al que quiera acceder en el servidor que está detrás del ISP, asegúrese de que su puerto esté vinculado a la interfaz 127.0.0.1, ya que ese es el punto al que apunta su túnel. Además, verifique que su servicio esté aceptando conexiones desde esa interfaz y vuelva a verificar el puerto en el que se está ejecutando.

@barlop -R 127.0.0.1:12345:localhost:12345 estaría mal, el servicio solo sería accesible para alguien que se conecte con el adaptador de bucle invertido.

Pero al leer la publicación de barlop, me di cuenta de algo, tenga en cuenta que al establecer su comando, el puerto que se está abriendo en el servidor ssh estará vinculado a la misma IP que ejecuta su servidor SSH. Lo que significa que el servicio está siendo expuesto a Internet, tal vez sea lo que quiere, pero si la ppl que necesita el servicio se conecta desde la LAN, entonces debe vincular este puerto a la IP de LAN del servidor ssh. ¿TAMBIÉN ESTÁ SEGURO de que el servidor ssh al que se está conectando no está detrás de un servidor de seguridad que reenvía el puerto 22 al servidor de manera interna? Si ese es el caso, significa que le está pidiendo al servidor ssh que abra un puerto en una IP que pertenezca al firewall, lo cual es obviamente imposible.

En ese senario, necesitaría abrir un puerto en la propia lan ip del servidor ssh, luego las máquinas locales podrían conectarse directamente allí. Si desea exponer el servicio a Internet, debe reenviar un puerto del firewall al puerto. Usted abrió en el servidor ssh.

Solo tratando de cubrir todo, es difícil obtener una imagen clara de lo que está pasando sin más información sobre la infraestructura.

Awww los placeres de las redes.

TCZ
fuente