Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Un servizio di tunneling con Raspberry Pi

Come configurare un servizio di tunneling con Raspberry Pi per l'accesso a servizi non supportati dalla propria rete
Come configurare un servizio di tunneling con Raspberry Pi per l'accesso a servizi non supportati dalla propria rete
Link copiato negli appunti

Il tunneling è un protocollo di comunicazione che consente agli utenti di accedere ad un servizio non supportato direttamente dalla propria rete o di fornirne uno. Con tale tecnologia è possibile utilizzare ad esempio IPv6 all'interno delle reti che supportano unicamente il vecchio IPv4. Non di rado le aziende sfruttano i servizi di tunneling per offrire servizi Web che se accessibili da una normale connessione sarebbero insicuri ed esposti a diverse minacce di sicurezza. Questo è possibile perché il tunneling prevede il reincapsulamento del traffico di rete sfruttando una forma di crittografia. Esistono diversi modi per implementare un servizio di tunneling. Nella guida di oggi parleremo di come attivarne uno all'interno con Raspberry Pi.

Questa piccola ma potente board ARM può essere infatti configurata per fornire un servizio di tunneling. Essendo poi di dimensioni ridotte è possibile collocarla dove si preferisce, magari anche agganciata dietro un mobiletto, cosi da non dare fastidio. Senza contare che, dovendo essere alimentata da un caricatore per device mobile, i suoi consumi energetici sono minimi e può essere lasciata attiva anche h24 senza impattare sulle spese energetiche.

L'hardware necessario per il progetto

Raspberry Pi

Per tale configurazione non sono necessari acquisti costosi né bisogna dotarsi di add-on hardware speciali. Il tunneling viene infatti impostato via software. Meglio optare per Raspberry Pi 4 model B con 8GB di RAM, e dotarsi di mouse, tastiera, cavo ethernet cat 6 e di un display con cavo HDMI annesso.

Installazione del sistema operativo Raspberry Pi OS

In tale tutorial adotteremo come sistema operativo di riferimento Raspberry Pi OS, ovvero la distribuzione Linux dedicata alla board ARM. Per realizzare il media d'installazione ci affideremo invece a Raspberry Pi Imager, l'imaging tool realizzato dai developer dalla Raspberry Pi Foundation.

Raspberry Pi Imager

A questo punto eseguiamo il download di Raspberry Pi OS, poi quello di Raspberry Pi Imager e successivamente avviamo tale utility. Il suo funzionamento è davvero lineare. Con "Choose OS" si seleziona il file ISO della distribuzione, da "Choose Storage" impostiamo invece la microSD da utilizzare ed infine avviamo il processo di flash cliccando su "Write".

Dopo che il programma ha terminato il processo spostiamo la microSD dal computer al Raspberry Pi e connettiamo il device alla corrente per eseguire l'avvio del wizard d'installazione del sistema operativo. Ovviamente per il primo setting connettiamo anche mouse, tastiera e display.

Installazione e configurazione del Cloudflare Tunnel

Terminata l'installazione di Raspberry Pi OS posizioniamoci all'interno del Desktop e apriamo una finestra del terminale. Per questa guida opteremo per il servizio di tunneling offerto da Cloudflare. Andiamo quindi ad installare il software necessario con APT:

sudo apt install curl lsb-release

Ora aggiungiamo il repository di Cloudflare:

curl -L https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-archive-keyring.gpg >/dev/null

echo "deb [signed-by=/usr/share/keyrings/cloudflare-archive-keyring.gpg] https://pkg.cloudflare.com/cloudflared $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflared.list

sudo apt update

E successivamente installiamo il pacchetto per il tunneling:

sudo apt install cloudflared

Passiamo quindi al login con le nostre credenziali dei servizi Cloudflare:

cloudflared tunnel login

Dopo l'ultimo comando bash dovrebbe essere restituito un messaggio del genere:

Please open the following URL and log in with your Cloudflare account: https://dash.cloudflare.com/argotunnel?callback=https%3A%2F%2Flogin.cloudflareaccess.org%2F123356789 Leave cloudflared running to download the cert automatically.

Dobbiamo poi usare il browser per connetterci tramite il link riportato dal programma ed eseguire il login usando username e password con cui ci siamo registrati sul sito di Cloudflare. Dopo aver inserito i dati richiesti nella pagina Web nella shell dovrebbe comparire tale messaggio:

You have successfully logged in. If you wish to copy your credentials to a server, they have been saved to: /home/pi/.cloudflared/cert.pem

Ora possiamo procedere alla fase di creazione del tunneling:

cloudflared tunnel create tunnelingditest

Se l'operazione è andata bene dovremmo visualizzare tale messaggio:

2023-06-01T04:54:54Z INF Added CNAME DOMAINNAME which will route to this tunnel tunnelID=123356789

Configurare il forwarding su Raspberry Pi

Ora che il tunneling è operativo dobbiamo fare in modo che Raspberry Pi lo sfrutti a dovere:

cloudflared tunnel run --url localhost:80 tunnelingditest

Con il commando appena scritto in bash abbiamo indicato al sistema di sfruttare il nostro tunneling, chiamato tunnelingditest, sulla porta 80 usata dai Web server HTTP. Non appena il servizio si attiva dovremmo poter vedere questo output nella shell:

2023-06-01T09:34:40Z INF Starting tunnel tunnelID=123456789

Il tunneling è quindi operativo e possiamo chiuderlo con la combinazione di tasti CTRL+C per poi passare alla configurazione del Web server, come Apache o NGINX, in modo tale che l'accesso venga eseguito sempre tramite il tunneling.

Impostare il tunneling per l'esecuzione al boot

Ora che il servizio è stato configurato a dovere possiamo impostarlo perché si attivi al boot del device. Per farlo dobbiamo modificare tale file:

sudo nano ~/.cloudflared/config.yml

con questi parametri

tunnel: [tunnelingditest]
credentials-file: /home/pi/.cloudflared/550e8400-e29b-41d4-a716-446655440000.json
ingress:
- hostname: iltuohostname.com
service: http://localhost:80
- service: http_status:404

Salviamo le modifiche con CTRL+O e chiudiamo il file con CTRL+X. Ricordiamoci di modificare la stringa alfanumerica finale con il nostro UUID. Inoltre nella path abbiamo lasciato il nome utente "pi", che è quello usato di base da Raspberry Pi OS. Quindi se stiamo utilizzando un utente diverso dobbiamo modificare la voce con la dicitura corretta.

In questo esempio abbiamo scelto di utilizzare come prima la porta 80 ma possiamo impostare il tutto su un'altra porta. Ecco una configurazione per HTTPS:

tunnel: [tunnelingditest]
credentials-file: /home/pi/.cloudflared/550e8400-e29b-41d4-a716-446655440000.json
ingress:
- hostname: iltuohostname.com
service: https://localhost:8080
- service: https_status:404

oppure con SSH:

tunnel: [tunnelingditest]
credentials-file: /home/pi/.cloudflared/550e8400-e29b-41d4-a716-446655440000.json
ingress:
- hostname: iltuohostname.com
service: ssh://localhost:22

Adesso lanciamo i seguenti comandi da terminale per rendere effettiva la configurazione:

sudo cloudflared --config ~/.cloudflared/config.yml service install

sudo systemctl enable cloudflared

sudo systemctl start cloudflared

Abbiamo così indicato a Raspberry Pi OS di eseguire sempre il demone cloudflared al boot con i setting del tunneling inseriti in precedenza.

Ti consigliamo anche