Visualizzazione post con etichetta Raspberry. Mostra tutti i post
Visualizzazione post con etichetta Raspberry. Mostra tutti i post

29 ottobre 2020

VPN Wireguard

 A volte anche per gli informatici è difficile stare al passo con l'evoluzione tecnologica. Ma quando una novità, che non è una novità, inizia a diventare diffusa e dirompente, non può passare inosservata.

Oggi vi segnalo WireGuard, che sta diventando lo standard per le Reti Virtuali Private o VPN.

Qui trovate una descrizione su Wikipedia, e qui il sito ufficiale.

Una VPN serve per creare un canale di comunicazione protetto tra il nostro PC e un server su Internet. In questi tempi di smartworking, di furti e ricatti informatici e importanza della privacy, la VPN diventa uno strumento indispensabile per accedere a dati e informazioni che non vogliamo condividere con il mondo intero.

Alla ricerca di una soluzione che sostituisse la vecchia VPN aziendale, ho scoperto Wireguard, un progetto nato nel 2016, ma che ha cominciato a diffondersi seriamente a partire dal 2018.


Logo of WireGuard

Il solo dato della quantità ridotta di codice scritto, mi è bastato per capire che si tratta di un progetto veramente innovativo e moderno. A detta del creatore, Jason A. Donenfeld, Wireguard contiene circa 4mila righe di codice, contro le 400mila e passa del suo predecessore Open Source più diffuso, cioè OpenVPN.

La sua disponibilità su tutti i sistemi operativi più diffusi, Windows, Linux, MacOS, IOS e Android, mi ha ulteriormente convinto che si trattasse di una valida alternativa.

Il tempo materiale per installare un server e un paio di client per le prove, cioè meno di un'ora, hanno sancito il suo ingresso definitivo nell'arsenale degli strumenti informatici personali e aziendali che raccomanderei a tutti.

Quasi dimenticavo: il server di prova gira su un Raspberry!

27 febbraio 2019

Raspberry Pi: avviare un servizio all'accensione

Un appunto veloce per spiegare la soluzione che ho scelto per avviare un servizio all'avvio del Raspberry, soprattutto pensando ai miei lettori italiani, che non hanno sempre voglia di tradurre o farsi tradurre le pagine in inglese.

L'obiettivo: far partire uno script in Python che funziona da servizio, cioè parte in automatico e gira all'infinito o fin quando non viene interrotto manualmente. Nel mio caso si tratta di un programma scritto da me che per ora non ha neanche una interfaccia grafica, e forse non l'avrà mai.

Cinque soluzioni

Ci sono diversi modi per arrivare al risultato, come ho potuto verificare nelle mie ricerche.
In un articolo del sito Dexter Industries, vengono elencati 5, dico cinque modi diversi:
  • rc.local
  • .bashrc
  • init.d
  • systemd
  • crontab

rc.local

Ho provato il metodo rc.local, ma ho trovato subito delle difficoltà perché lo script in Python non trovava le librerie (import) e neanche i file locali che doveva aprire.

Per vedere gli errori ho eseguito da terminale il comando inserito nel file rc.local:

sudo python /home/pi/sample.py 

In pratica il sistema operativo non aveva finito di caricare l'ambiente, o io non ero stato in grado di dargli il contesto corretto in cui far girare lo script.

init.d

Il metodo init.d perché, nell'articolo citato, mi proponeva di copiare il programma nella cartella init.d.

sudo cp /home/pi/sample.py /etc/init.d/ 

A me questo metodo non piace, perché sto facendo lo sviluppo nella mia home, e vorrei lasciare tutto lì. Non vorrei cartelle duplicate e programmi duplicati.

systemd

Questo metodo sembra un po' più lungo e complesso, perché richiede
  1. di scrivere un file di istruzioni, detto "Unit File" o "Service File" e 
  2. di inserirlo tra i servizi di sistema
In realtà è proprio il sito del Raspberry a fornire delle indicazioni dettagliate corredate da un esempio per creare il file e i comandi necessari per avviare il servizio.

Queste istruzioni hanno funzionato per me al primo colpo ed è stato il metodo che ho preferito, per diverse ragioni:
  1. ho un file di descrizione del servizio separato dallo script/programma/servizio vero e proprio
  2. la granularità del controllo, o in parole semplici, la possibilità di definire diversi parametri come la "Working Directory"e definire eventuali dipendenze (es. avvia solo dopo aver avviato la rete)
  3. poter continuare a sviluppare e fare i test in una directory a piacimento,
  4. poter arrestare e riavviare il servizio con i comandi standard di Linux (systemctl)
Buon divertimento con il Raspberry!