SMsoft – informatica e dintorni

Raspberry: come raggiungerlo se non ha un IP pubblico statico

Mi si è presentata una situazione in cui il raspberry (ma potrebbe essere benissimo una linux box GNU/Debian) era in una rete locale non raggiungibile direttamente dall’esterno e non potendo attivare un port forwarding sul router, non c’era molto da fare per poterlo rendere raggiungibile dall’esterno.

In questo caso, l’uso di un tunnel SSH è l’ideale, sempre che si disponga di un server linux con IP pubblico da usare.

In pratica la situazione è questa:

raspberry 192.168.1.10
router/AP (doppio IP) 192.168.1.1/192.168.10.20
router/gateway pubblico 192.168.10.1/61.24.35.76

Pertanto, il raspberry per “navigare” passa attraverso il router/AP che a sua volta passa attraverso il router/gateway pubblico.

Raggiungere il raspberry da internet con questa configurazione non è possibile, a meno che non si possa configurare il router/gateway e poi il router/AP per inoltrare i pacchetti diretti verso una determinata porta del router/gateway verso il raspberry.

Abbiamo a disposizione un server linux con IP pubblico, ad esempio il 60.60.60.60.

Cosa possiamo fare?
Dal raspberry possiamo avviare un tunnel ssh verso il server linux e “dirgli” che se dovessero arrivargli pacchetti su una determinata porta, li deve girare verso il raspberry, tramite il tunnel ssh.

Questa cosa può essere fatta nativamente da SSH attivando un remote port forwarding.

Innanzitutto bisogna creare una chiave pubblica SSH sul raspberry e caricarla sul server linux. Non mi dilungo su questa parte.

Sul server linux bisogna inserire nel file /etc/ssh/sshd_config la seguente direttiva:

Successivamente, sul raspberry, dovremo lanciare il seguente comando:

dove 2203 e la porta da aprire sul server linux, 22 è la porta del raspberry che vogliamo risponda, utente@60.60.60.60 è l’utente e l’IP/FQDN del server linux

Cosi’ facendo, sarà possible collegarsi alla porta 2203 del server linux 60.60.60.60 tramite il client ssh e vedremo rispondere il servizio ssh del raspberry.

Ovviamente possiamo girare non solo la porta 22, ma anche altre porte, ad esempio la 80 se vogliamo rendere pubblico un servizio web su internet.

Riavviando il raspberry, purtroppo, il tunnel verrà interrotto. Per mantenerlo sempre attivo ed avviarlo in automatico in caso di reboot del raspberry, consiglio l’installazione del pacchetto autossh:

e poi l’inserimento della seguente riga come penultima (prima di exit 0) del file /etc/rc.local:

enjoy!




Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto o almeno clicca sul banner pubblicitario :-)
*

Commenti

Page optimized by WP Minify WordPress Plugin