
Entonces, tengo varias Raspberry Pi 4B (8) conectadas a mi FritzBox mediante cables Ethernet. Todos los Pi tienen SSH activado en su configuración y son compatibles con SSH dentro de la red local escribiendo "ssh[correo electrónico protegido]". Configuré un servicio dynDNS para mi enrutador, para poder acceder a él sin tener que saber la dirección IP exacta. Eso también funcionó bien.
Luego utilicé la opción "Permitir acceso" de FritzBox para reenviar los puertos 22 y 3389 a uno de los RPi. Ahora puedo usar SSH y MS Remote Desktop en ese.
Problema: Todos los demás RPi tienen instalaciones Raspberry OS Lite sin cabeza y también necesito SSH de Internet para ellos. Pero como el primer RPi ya usa el puerto 22, no puedo usar ningún otro RPi con el puerto 22.
Existe un método llamado redireccionamiento de puertos sobre el que leí varias veces en Internet. Pero nadie realmente lo explicó fácilmente. Entonces, tengo que encontrar una manera de hacer esto:
Enrutador
|-> puerto externo 2200 -> puerto 22 de Pi Nr. 0
|
|-> puerto externo 2201 -> puerto 22 de Pi Nr. 1
|
|-> puerto externo 2202 -> puerto 22 de Pi Nr. 2
|
|-> puerto externo 2203 -> puerto 22 de Pi Nr. 3
Pero no tengo idea de cómo funciona ;D
¿Qué archivo de configuración debo editar en los RPi o qué configuraciones debo cambiar en el enrutador para lograrlo?
Gracias por una respuesta :)
(PD: soy un novato en redes. He estado codificando software Java para PC y, a veces, Discord Bots como pasatiempo durante aproximadamente 2 años. Pero no tengo idea de cómo funciona todo eso de Internet y quiero aprenderlo XD)
Respuesta1
Existe un método llamado redireccionamiento de puertos sobre el que leí varias veces en Internet. Pero nadie realmente lo explicó fácilmente.
En la mayoría de los enrutadores, permitir el acceso externo a un host IPv4 interno es literalmente la misma función, ya sea que sea necesario cambiar el puerto o no. Si su Raspberry Pi tiene una dirección IP privada, el enrutador debe realizar NAT de todos modos, por lo que la "redirección de puertos" es parte de ella y en realidad no es una cosa separada.
En tu caso, parece que FRITZ!Box te permite introducir diferentes puertos "externos" e "internos" si seleccionas 'Otra aplicación' en el mismo apartado "Permitir acceso".
Pasando por capturas de pantallaencontrado en googleesto sería:
- Aplicación: [Otra aplicación]
- Protocolo: [TCP]
- Puerto al dispositivo: [22] a [22]
- Puerto solicitado externamente (IPv4): [2201]
(El campo está etiquetado como específico de IPv4 porque en IPv6 se conectaría directamente a la propia dirección del Pi en lugar de a la dirección del enrutador, por lo que no habría ninguna separación entre los puertos "externos" e "internos/al dispositivo").
¿Qué archivo de configuración debo editar en los RPi o qué configuraciones debo cambiar en el enrutador para lograrlo?
Normalmente es unooel otro, dependiendo de lo que quieras.
Enrutador |-> puerto externo 2200 -> puerto22de Pi Nr. 0 |-> puerto externo 2201 -> puerto22de Pi Nr. 1 |-> puerto externo 2202 -> puerto22de Pi Nr. 2
Probablemente esto sea lo que se llama "redirección de puertos". Requiere que el enrutador traduzca los puertos y no requiere ningún cambio en el Pi.
Generalmente es específico de IPv4; si bien todavía es técnicamente posible en IPv6, se considera algo que "debe evitarse". (Esto se debe principalmente a que en IPv6cadade tu Pi tendríasu propiodirección externa, por lo que el problema de la colisión del puerto 22 sería discutible).
En FRITZ!Box, esto parece estar oculto en la opción "Otra aplicación" en la misma página "Permitir acceso" que ya está utilizando.
Enrutador |-> puerto externo 2200 -> puerto2200de Pi Nr. 0 |-> puerto externo 2201 -> puerto2201de Pi Nr. 1 |-> puerto externo 2202 -> puerto2202de Pi Nr. 2
Esto no requiere ninguna reescritura desde el enrutador (funciona igual tanto en IPv4 como en IPv6), pero requiere que el servicio SSH en el Pi escuche en el puerto correspondiente.
En Linux, esa es la
Port
opción/etc/ssh/sshd_config
; probablemente deberías agregarla dos veces, tanto para el puerto predeterminado 22 como para tu puerto personalizado 2200.
TúpodríaPor supuesto, haga ambas cosas, por ejemplo, reescribiendo el puerto externo 2200 en el puerto Pi 3300, pero eso es simplemente innecesario.
También existe la opción denohacer que los otros Pi sean accesibles externamente. En su lugar, podría utilizar ssh -J
para conectarse a todos ellos a través del 0.º Pi, por ejemplo ssh -J public.ip lan.ip.pi2
.