Come configurare il server e il client WireGuard VPN su Ubuntu 20.04

Come configurare il server e il client WireGuard VPN su Ubuntu 20.04

Configura una VPN self-hosted utilizzando Wireguard

Una VPN (Virtual Private Network) consente all'utente di connettersi a una rete privata in remoto come se il computer dell'utente fosse connesso direttamente alla rete privata. La tecnologia è stata inizialmente sviluppata per consentire l'accesso remoto alla rete privata interna di un'azienda, per i dipendenti non effettivamente presenti nel luogo della rete interna.

Un server VPN viene distribuito nella posizione della rete interna. Questo server si trova sulla rete pubblica ed è possibile accedervi utilizzando un client VPN dal dipendente. L'autenticazione è necessaria per connettersi al server VPN. La comunicazione tra il server VPN e il client VPN è protetta utilizzando un protocollo di tunneling. Tieni presente che questa comunicazione può essere crittografata o meno, ma di solito nella maggior parte dei protocolli VPN è crittografata.

Un altro uso della VPN è quello di ottenere l'anonimato quando si accede a Internet o di aggirare le restrizioni geografiche imposte durante l'accesso ad alcuni siti web. In tali casi, la rete a cui l'utente desidera connettersi non è una rete privata, ma è Internet.

Nel corso degli anni sono stati sviluppati molti protocolli VPN. Questi protocolli utilizzano diversi protocolli di tunneling e algoritmi di crittografia per la comunicazione tra il server e il client.

Uno di questi protocolli, che sta guadagnando ampio uso di recente, è Wireguard . Wireguard è più leggero, più semplice e più performante rispetto ai noti protocolli VPN tradizionalmente utilizzati come OpenVPN, IPSec. È già implementato per Windows, Mac OS e un gran numero di distribuzioni Linux. In Linux, è implementato come modulo del kernel. È disponibile nei repository ufficiali di Ubuntu 20.04.

In questo articolo, vedremo come configurare un server e un client VPN Wireguard in Ubuntu 20.04.

Installazione

Per questo articolo, sto configurando un server Wireguard su un Ubuntu 20.04 Linode e un client Wireguard sul mio computer locale con Ubuntu 20.04.

Il pacchetto wireguardinstalla sia Wireguard Server che Client. Eseguire il comando seguente sia sul computer server che sul computer client.

sudo apt install wireguard

Configurazione del server

Chiavi di sicurezza

Abbiamo bisogno di generare una serie di coppie di chiavi pubbliche/private per autenticare e proteggere la connessione Wireguard. Questo può essere fatto usando i seguenti comandi:

sudo su
cd /etc/wireguard
umask 077
wg genkey | tee private_key | wg pubkey > public_key

Nota che stiamo eseguendo tutte le attività di configurazione come superutente. Il motivo è che l'accesso alla directory /etc/wireguardè impedito agli utenti normali e l'accesso alla directory non può essere ottenuto con i soli privilegi sudo per un utente normale.

Successivamente, impostiamo la maschera di creazione del file su077 . Ciò significa che ogni volta che un nuovo file viene creato in questa cartella da qualsiasi processo, i suoi permessi verranno automaticamente mascherati con 077. Ad es. se un file viene creato in questa cartella con autorizzazioni 777, viene automaticamente mascherato e le autorizzazioni diventano effettivamente 700. Questo viene fatto in modo che solo il proprietario del file abbia tutte le autorizzazioni sul file e tutti gli altri non abbiano autorizzazioni.

Nella riga successiva, generiamo la coppia di chiavi pubblica/privata per il server. Vengono salvati in file private_keye public_key. Per visualizzare le chiavi, eseguire:

cat private_key
cat public_key

Come configurare il server e il client WireGuard VPN su Ubuntu 20.04

Copia la chiave privata, ne abbiamo bisogno nel passaggio successivo.

Nota: non condividere mai pubblicamente la tua chiave privata!

File di configurazione

Creiamo un file di configurazione per il server Wireguard. Puoi scegliere qualsiasi nome per il file. Creeremo un file wg0.confin questo esempio.

vim wg0.conf

Aggiungi quanto segue al file.

[Interface]
Address = 10.20.43.1/24
SaveConfig = true
ListenPort = 51190
PrivateKey = 

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o  -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o  -j MASQUERADE

Incolla la chiave privata che abbiamo precedentemente copiato nella riga 5 del codice sopra.

Dobbiamo configurare Wireguard su una sottorete (virtuale) diversa dall'indirizzo IP del server. Qui, ho usato 10.20.43.1 per il server e userò 10.20.43.2 per il client. Qualsiasi sottorete può essere utilizzata qui. Per ottenere l'indirizzo IP del server e dell'interfaccia, eseguire:

ifconfig

Come configurare il server e il client WireGuard VPN su Ubuntu 20.04

La parte evidenziata è l'indirizzo IP

Prendere nota dell'indirizzo IP del server. Ciò è richiesto durante la configurazione del client.

L'interfaccia utilizzata dal server, come si vede nell'immagine sopra, è eth0. Il nome dell'interfaccia può variare in base alla rete dell'utente, può essere wlan0o wlp2s0nel caso in cui l'utente sia connesso a una rete WiFi tramite una scheda wireless.

Sostituisci in PostUpe PostDowncon la tua interfaccia; in questo esempio è eth0. PostUpe le PostDowndirettive vengono utilizzate per specificare quali comandi devono essere eseguiti rispettivamente all'avvio e all'arresto del server. Nel nostro esempio, utilizziamo il iptablescomando per impostare le regole IP in modo che l'indirizzo IP del server sia condiviso dai client. Le regole verranno eliminate una volta arrestato il server.

Salva ed esci dal file. Quando si utilizza vim, premere Esc , quindi digitare :wqe premere Invio per salvare ed uscire.

Se stai utilizzando un ufwfirewall sul server, dobbiamo consentire le connessioni UDP alla porta per il server VPN, 51190.

ufw allow 51190/udp

Avvio del servizio

Ora che la configurazione è terminata, possiamo avviare il servizio VPN Wireguard.

Per consentire l'avvio del servizio all'avvio, eseguire:

systemctl enable [email protected]

Nota che questo wg0è il nome del file di configurazione.

Per avviare il servizio eseguire:

service [email protected] start

Verifica che il servizio sia stato avviato correttamente:

service [email protected] status

Come configurare il server e il client WireGuard VPN su Ubuntu 20.04

Verificare che l'interfaccia che abbiamo creato nel file di configurazione sia stata avviata, utilizzando il comando IP.

ip a show wg0

Come configurare il server e il client WireGuard VPN su Ubuntu 20.04

Il server VPN Wireguard è ora configurato e funzionante. Configuriamo ora il client.

Configurazione del cliente

La configurazione del client per Wireguard è più o meno la stessa di una configurazione del server. Generiamo le chiavi per il client, quindi creiamo un file di configurazione.

Chiavi di sicurezza

Per generare la coppia di chiavi pubblica/privata per il client, eseguire:

sudo su
cd /etc/wireguard
umask 077
wg genkey | tee client_private_key | wg pubkey > client_public_key

Le chiavi pubblica e privata per il client sono ora generate rispettivamente in file client_private_keye client_public_key.

Verificare che siano stati creati, utilizzando il catcomando.

cat client_private_key
cat client_public_key

Copia la chiave privata visualizzata quando è necessario aggiungerla al file di configurazione per il client.

File di configurazione

Crea il file di configurazione con il nome che desideri. Lo creeremo con il nome wg0-clientper questo esempio.

vim wg0-client.conf

Aggiungi la seguente configurazione.

[Interface]
# IP Address and Private Key of the Client
Address = 10.20.43.2/24
PrivateKey = 

[Peer]
# Public key, IP Address and Port of the Server
PublicKey = 
Endpoint = :51190
AllowedIPs = 0.0.0.0/0, ::/0

Immettere l'indirizzo di sottorete per il client. Come descritto in precedenza, utilizziamo 10.20.43.2 per il client in questo esempio.

Aggiungi la chiave privata del client generata nel passaggio precedente nella riga 4 del codice di configurazione sopra.

In "Peer", aggiungiamo le informazioni sul server Wireguard VPN a cui vogliamo connetterci.

Inserisci la chiave pubblica del server. Inserisci l' indirizzo IP del server , che abbiamo notato in precedenza, e porta nel formato specificato su Endpoint . Questa è la porta che abbiamo specificato nel file di configurazione del server e su cui è stato avviato il servizio VPN sul server.

Gli IP consentiti devono essere inseriti come specificato (0.0.0.0/0) in modo che qualsiasi richiesta su un IP pubblico dinamico utilizzato dal client venga sempre inoltrata al server VPN.

Salva ed esci dal file. Quando si utilizza vim, premere Esc , quindi digitare :wqe premere Invio per salvare ed uscire.

Abilita l' esecuzione del servizio client ad ogni avvio e avvialo.

systemctl enable [email protected]
service [email protected] start

Verificare se il servizio è stato avviato.

service [email protected] status

Come configurare il server e il client WireGuard VPN su Ubuntu 20.04

Aggiunta di peer al server

Ora abbiamo il server e il client VPN attivi e funzionanti. Tuttavia, non viene stabilito un tunnel sicuro tra i due a meno che non stabiliamo una connessione peer-to-peer tra il server e il client.

Torna al server. Innanzitutto, interrompi il servizio VPN .

service [email protected] stop

Quindi, apri il file di configurazione per aggiungere la configurazione per il peer (client).

vim /etc/wireguard/wg0.conf

Aggiungi le seguenti righe al file.

[Peer]
PublicKey = 
AllowedIPs = 10.20.43.2/32

Ora riavvia il servizio VPN .

service [email protected] start

Questo è tutto! Questa è tutta la configurazione necessaria per la configurazione del client e del server Wireguard VPN. Ora testiamo la nostra VPN.

Testare la VPN

Innanzitutto, eseguiamo un semplice ping dal client al server, per assicurarci che la comunicazione del tunnel VPN funzioni. Eseguire quanto segue sul client :

ping 10.20.43.1

Come configurare il server e il client WireGuard VPN su Ubuntu 20.04

Quindi, apri un browser Web e apri qualsiasi sito Web per verificare se sei in grado di connetterti a Internet dal computer client. Puoi anche controllare la tua connettività Internet dalla riga di comando usando wget.

wget 

Come configurare il server e il client WireGuard VPN su Ubuntu 20.04

Ora abbiamo verificato la connettività del tunnel e la connettività Internet. Se entrambi funzionano, ora dobbiamo assicurarci che tutto il traffico Internet in arrivo al client passi attraverso il server.

Per questo, dobbiamo semplicemente controllare l'indirizzo IP del client come visto da Internet. Un modo per farlo è andare su whatsmyip.org . Oppure dalla riga di comando, possiamo interrogare un altro servizio simile chiamato info IP, usando Curl.

Esegui quanto segue sulla macchina client

curl https://ipinfo.io/ip

Come configurare il server e il client WireGuard VPN su Ubuntu 20.04

Sì. È l'indirizzo IP pubblico del Linode in cui è ospitato il server VPN. È così che si ottiene l'anonimato utilizzando VPN, poiché in tutta Internet ora si vede l'IP del server VPN e non del tuo computer.

Conclusione

La facilità di configurazione è uno dei vantaggi più importanti di Wireguard rispetto al software VPN tradizionale come OpenVPN, che richiede un livello più elevato di conoscenze di rete e di routing per essere configurato. Tuttavia, manca una documentazione ufficiale dettagliata per Wireguard che potrebbe causare problemi se la configurazione di Wireguard genera errori o non funziona come previsto.

Tuttavia, Wireguard è una scelta eccellente se desideri una VPN self-hosted per comunicazioni sicure su Internet. Per saperne di più su Wireguard e sui protocolli e sulle tecnologie che utilizza, puoi controllare il sito ufficiale .


Il Wi-Fi non funziona su Ubuntu? Ecco come risolverlo

Il Wi-Fi non funziona su Ubuntu? Ecco come risolverlo

Ubuntu è famoso per la sua robustezza e relativamente meno errori. Ma non è senza problemi, di sicuro. Uno di questi problemi è con il suo driver Wi-Fi. Potresti accendere il tuo sistema solo per scoprire che il tuo Wi-Fi non funziona.

Come spostare file Linux con il comando Mv

Come spostare file Linux con il comando Mv

Anche se probabilmente sai già come spostare un file in Linux utilizzando il browser di file della GUI, potresti chiederti se c'è un comando di spostamento nel terminale che ti consente di spostare rapidamente i file in directory diverse. Il comando mv è quello che desideri ed è facile da usare con la sua sintassi semplice e alcuni flag di sicurezza opzionali.

Le 10 migliori distribuzioni Linux basate su Debian

Le 10 migliori distribuzioni Linux basate su Debian

Lo standard Debian e la sua popolare derivazione Ubuntu sono ottime scelte a tutto tondo per un sistema Linux, ma se hai esigenze più specializzate, potresti volere un'alternativa Debian.

10 migliori distribuzioni Linux per sviluppatori

10 migliori distribuzioni Linux per sviluppatori

Anche se Linux potrebbe non essere il sistema operativo preferito dagli utenti occasionali, è la scelta giusta per la maggior parte degli sviluppatori e dei programmatori. Linux è un sistema operativo più pratico che è stato esplicitamente progettato pensando alla programmazione e agli sviluppatori.

Scopri come installare Npm e Node.js su Ubuntu

Scopri come installare Npm e Node.js su Ubuntu

Node.js è effettivamente un ambiente runtime JavaScript multipiattaforma open source. Con Node.js abilitato, puoi eseguire JavaScript sul tuo computer Ubuntu senza doversi preoccupare di aprire alcun browser. È basato sul motore JavaScript V8 di Chrome e può essere installato in diversi modi su Linux.

Come aggiornare Firefox da Terminale su PC Ubuntu Linux

Come aggiornare Firefox da Terminale su PC Ubuntu Linux

Scopri come aggiornare Firefox da Terminale su un PC Ubuntu Linux

Come disabilitare Ubuntu Dock su Ubuntu 20.04

Come disabilitare Ubuntu Dock su Ubuntu 20.04

A volte è meglio lasciare il molo e salpare!

Come installare Notepadqq su Ubuntu 20.04, una valida alternativa a Notepad++

Come installare Notepadqq su Ubuntu 20.04, una valida alternativa a Notepad++

Cerchi una valida alternativa a Notepad++ su Ubuntu? Non guardare oltre l'app gratuita Notepadqq

Come abilitare SSH su Ubuntu 20.04

Come abilitare SSH su Ubuntu 20.04

Accedi in modo sicuro alla tua macchina Ubuntu da qualsiasi luogo

Come installare Git su Ubuntu 20.04 LTS

Come installare Git su Ubuntu 20.04 LTS

Una delle prime cose che dovresti installare sulla tua macchina Linux

Come installare Google Chrome su Ubuntu 20.04

Come installare Google Chrome su Ubuntu 20.04

Guida rapida per installare Google Chrome dalla riga di comando su Ubuntu 20.04

Come cambiare la password di root su Ubuntu 20.04

Come cambiare la password di root su Ubuntu 20.04

Imposta, ripristina e modifica la password di root in Ubuntu 20.04

Come installare un server FTP su Ubuntu in 5 passaggi

Come installare un server FTP su Ubuntu in 5 passaggi

Se stai configurando un server Linux, avrai bisogno dell'accesso FTP. Ciò significa installare prima un server FTP su Linux. Dovrebbe essere una delle prime cose che fai dopo aver installato il sistema operativo del tuo server.

Come creare un utente Sudo su Ubuntu 20.04 LTS

Come creare un utente Sudo su Ubuntu 20.04 LTS

Assegna i privilegi di root a qualsiasi utente con sudo su Ubuntu 20.04 LTS

Come risolvere il make: comando non trovato Errore in Ubuntu

Come risolvere il make: comando non trovato Errore in Ubuntu

Il comando make è probabilmente uno dei comandi più utilizzati nell'ecosistema Linux. Questo comando viene utilizzato per creare e compilare programmi direttamente dal codice sorgente.

Come copiare e incollare su Chromebook

Come copiare e incollare su Chromebook

La prima cosa che potresti chiederti mentre passi a un Chromebook è come fare le cose di base, il tipo di cose che avevi sul palmo della tua mano nel tuo sistema operativo precedente. Copiare e incollare è una di queste funzioni fondamentali che devi usare prima o poi.

Come fare un test di digitazione su Linux con tt

Come fare un test di digitazione su Linux con tt

Nell'era moderna della tecnologia, la dattilografia è diventata una delle attività più comuni per molte professioni. Imparare a digitare più velocemente con precisione può aiutarti a fare più cose nello stesso lasso di tempo.

Il Wi-Fi non funziona su Ubuntu? Ecco come risolverlo

Il Wi-Fi non funziona su Ubuntu? Ecco come risolverlo

Ubuntu è famoso per la sua robustezza e relativamente meno errori. Ma non è senza problemi, di sicuro. Uno di questi problemi è con il suo driver Wi-Fi. Potresti accendere il tuo sistema solo per scoprire che il tuo Wi-Fi non funziona.

Come creare e scansionare codici QR su Chromebook

Come creare e scansionare codici QR su Chromebook

I codici di risposta rapida, o codici QR in breve, sono codici a barre avanzati che contengono più informazioni rispetto a un codice a barre tradizionale. Questi codici sono bidimensionali, consentendoti di scansionarli verticalmente o orizzontalmente.

Come installare e rimuovere i pacchetti in Arch Linux

Come installare e rimuovere i pacchetti in Arch Linux

Vuoi installare pacchetti su Arch Linux ma non sai come fare? Molte persone affrontano questo problema quando migrano per la prima volta dalle distribuzioni basate su Debian ad Arch. Tuttavia, puoi facilmente gestire i pacchetti sul tuo sistema basato su Arch utilizzando i gestori di pacchetti.

10+ migliori estensioni GNOME per Ubuntu 20.04

10+ migliori estensioni GNOME per Ubuntu 20.04

Molte delle estensioni popolari come Gno-Menu, Extended Gestures non funzionano con Ubuntu 20.04. Quindi, ecco un elenco delle migliori estensioni GNOME funzionanti

Come installare Spotify su Linux

Come installare Spotify su Linux

Spotify è uno dei più grandi servizi di streaming musicale in circolazione. Ha client nativi sia per dispositivi mobili (Android e iOS) che desktop (Mac e Windows).

9 comandi di base per iniziare con Linux

9 comandi di base per iniziare con Linux

Le guide pratiche di Linux spesso si aspettano che tu esegua determinate operazioni nel terminale, il che all'inizio può sembrare intimidatorio. Ma non preoccuparti; questo cheat sheet del comando Linux coprirà il processo di apertura di un terminale e l'emissione di alcuni comandi utili.

5 migliori app di trasferimento file Wi-Fi da Ubuntu ad Android

5 migliori app di trasferimento file Wi-Fi da Ubuntu ad Android

Un meccanismo come FTP, trasferimento file peer-to-peer, trasferimento Wi-Fi ti farà risparmiare tempo se condividi spesso file tra il tuo Android e Ubuntu.

Come spostare file Linux con il comando Mv

Come spostare file Linux con il comando Mv

Anche se probabilmente sai già come spostare un file in Linux utilizzando il browser di file della GUI, potresti chiederti se c'è un comando di spostamento nel terminale che ti consente di spostare rapidamente i file in directory diverse. Il comando mv è quello che desideri ed è facile da usare con la sua sintassi semplice e alcuni flag di sicurezza opzionali.