Come configurare Wireguard VPN su Linux

Wireguard è un potente demone di rete privata virtuale (VPN) open source che può funzionare sia su dispositivi desktop che mobili. Fornisce un’alternativa veloce e leggera alle soluzioni VPN tradizionali come IPsec e OpenVPN. Qui ti mostriamo come installare Wireguard e creare una semplice configurazione VPN utilizzando tre macchine Linux.
Indice dei contenuti
- Perché usare Wireguard come soluzione VPN?
- Ottenere Wireguard
- Configurare il server Wireguard
- Configurare e connettere il client Wireguard
- Aggiungere un secondo client al server
- Testare la rete Wireguard
Perché usare Wireguard come soluzione VPN?
Uno dei principali punti di forza di Wireguard è che è un demone VPN veloce e leggero. A differenza delle soluzioni tradizionali, Wireguard non aggiunge molto overhead alla tua rete. Questo si traduce in una latenza inferiore e un alto tasso di throughput complessivo tra i tuoi nodi.

Un’altra caratteristica chiave di Wireguard è che è un modulo all’interno del kernel Linux. Questo consente di funzionare senza occupare risorse di sistema aggiuntive dal tuo computer, rendendolo una scelta ideale per il deployment su dispositivi a bassa potenza e SOC.

Infine, Wireguard sfrutta anche standard crittografici moderni e pratiche di sviluppo. Ha anche subito molte verifiche formali, che confermano la correttezza del codice di Wireguard, le garanzie di sicurezza e la capacità di resistere agli attacchi.
Nota a margine: non sei ancora convinto di Wireguard? Scopri come Wireguard si confronta con OpenVPN.
Ottenere Wireguard
Il primo passo per configurare Wireguard su Linux è scaricare i suoi strumenti principali dal repository della tua distribuzione. Questo ti consente di controllare il modulo del kernel Wireguard integrato utilizzando comandi in userspace.
Per installare gli strumenti principali su Ubuntu e Debian, esegui il seguente comando:
sudo apt install wireguard wireguard-toolsIn Fedora, puoi utilizzare il gestore pacchetti dnf:
sudo dnf install wireguard-toolsPer Arch Linux, puoi eseguire pacman per ottenere gli strumenti principali di Wireguard:
sudo pacman -S wireguard-toolsConferma di aver installato correttamente gli strumenti Wireguard caricando il suo schermo di aiuto:
wg -h
Configurare il server Wireguard
Assunzione: Questo articolo presume che tu stia installando il server Wireguard su un sistema Linux con un indirizzo IPv4 accessibile pubblicamente. Le istruzioni funzioneranno comunque su un server dietro un NAT, ma non troverà nodi al di fuori della sua subnet.
Con il toolkit principale di Wireguard sulle tue macchine Linux, puoi ora configurare il nodo server della tua VPN. Questo servirà come gateway internet per i tuoi nodi client nella rete.
Inizia navigando nella directory di configurazione di Wireguard e imposta le sue autorizzazioni predefinite su “solo root:”
cd/etc/wireguard
sudo umask 077Nota: alcuni sistemi potrebbero impedirti di entrare nella cartella “/etc/wireguard” come utente normale. Per risolvere, passa all’utente root utilizzando sudo -s.
Genera la chiave pubblica e privata per il tuo server Wireguard:
sudo sh -c 'wg genkey | tee /etc/wireguard/server-private-key | wg pubkey > /etc/wireguard/server-public-key'Crea il file di configurazione del tuo server utilizzando il tuo editor di testo preferito:
sudo nano /etc/wireguard/wg0.confIncolla il seguente blocco di codice all’interno del file di configurazione del tuo server:
[Interface]
PrivateKey= INCOLLA-LA-TUA-CHIAVE-PRIVATA-SERVER-QUI
Address= 10.0.0.1/32
ListenPort= 60101
PostUp= iptables -t nat -I POSTROUTING -o INTERFACCIA-NETWORK-QUI -j MASQUERADE
PostDown= iptables -t nat -D POSTROUTING -o INTERFACCIA-NETWORK-QUI -j MASQUERADEApri una nuova sessione del terminale, quindi stampa la chiave privata del tuo server Wireguard:
sudo cat /etc/wireguard/server-private-keyCopia la chiave privata del tuo server negli appunti.

Sostituisci il valore della variabile PrivateKey con la chiave negli appunti.

Trova l’interfaccia di rete che ha accesso a internet utilizzando il comando ip:
ip route get 8.8.8.8Imposta il valore del flag -o su entrambe le variabili PostUp e PostDown sull’interfaccia con accesso a internet, quindi salva il tuo file di configurazione.

Apri il file “/etc/sysctl.conf” del server utilizzando il tuo editor di testo preferito:
sudo nano /etc/sysctl.confScorri verso il basso fino alla riga che contiene net.ipv4.ip_forward=1, quindi rimuovi il simbolo di cancelletto (#) davanti ad essa.

Ricarica la tua nuova configurazione sysctl eseguendo: sudo sysctl -p.
FYI: Wireguard non è l’unica soluzione VPN che puoi eseguire su Linux. Scopri come creare la tua VPN utilizzando OpenVPN.
Configurare e connettere il client Wireguard
A questo punto, hai ora un server Wireguard configurato correttamente senza alcun peer. Per utilizzarlo, devi configurare e connettere il tuo primo client Wireguard.
Naviga nella directory di configurazione Wireguard del tuo sistema client e imposta le sue autorizzazioni predefinite:
cd/etc/wireguard
sudo umask 077Genera la coppia di chiavi Wireguard del tuo client utilizzando il seguente comando:
sudo sh -c 'wg genkey | tee /etc/wireguard/client1-private-key | wg pubkey > /etc/wireguard/client1-public-key'Crea il file di configurazione Wireguard del client utilizzando il tuo editor di testo preferito:
sudo nano /etc/wireguard/wg0.confIncolla il seguente blocco di codice all’interno del file di configurazione del tuo client:
[Interface]
PrivateKey= INCOLLA-LA-TUA-CHIAVE-PRIVATA-CLIENT1-QUI
Address= 10.0.0.2/32
ListenPort= 60101
[Peer]
PublicKey= INCOLLA-LA-TUA-CHIAVE-PUBBLICA-SERVER-QUI
AllowedIPs= 0.0.0.0/0
Endpoint= INCOLLA-L'INDIRIZZO-IP-DELLA-TUA-SERVER-QUI:60101
PersistentKeepalive= 25Sostituisci la variabile PrivateKey con la chiave privata del tuo client.

Apri la sessione del terminale del tuo server Wireguard, quindi stampa la sua chiave pubblica:
sudo cat /etc/wireguard/server-public-keyImposta il valore della variabile PublicKey sulla chiave pubblica del tuo server.

Cambia la variabile Endpoint con l’indirizzo IP del tuo server Wireguard.

Salva il tuo file di configurazione, quindi utilizza il comando wg-quick per avviare il client Wireguard:
sudo wg-quick up wg0
Nota: questo comando disabiliterà la connettività di rete del tuo client fino a quando non avvii il server Wireguard. Per tornare alla tua rete originale, esegui sudo wg-quick down wg0.
Collegare il server Wireguard al client
Vai alla sessione del terminale del tuo server Wireguard, quindi apri il suo file di configurazione:
sudo nano /etc/wireguard/wg0.confIncolla il seguente blocco di codice dopo la sezione [Interface]:
[Peer]
PublicKey= INCOLLA-LA-TUA-CHIAVE-PUBBLICA-CLIENT1-QUI
AllowedIPs= 10.0.0.2/32
PersistentKeepalive= 25Imposta la variabile PublicKey sulla chiave pubblica del tuo client Wireguard.
![Un terminale che mostra la posizione del blocco [Peer] e evidenzia la chiave pubblica del client.](https://www.maketecheasier.com/assets/uploads/2024/07/set-up-wireguard-linux-vpn-13-highlight-client1-public-key.png)
Nota: puoi ottenere la chiave pubblica eseguendo sudo cat /etc/wireguard/client1-public-key sulla tua macchina client.
Salva il file di configurazione, quindi esegui il seguente comando per avviare il servizio Wireguard sul tuo server:
sudo wg-quick up wg0Aggiungere un secondo client al server
Una caratteristica chiave di ogni servizio VPN è che può collegare insieme più macchine provenienti da reti diverse. Questo è utile se hai computer in diverse posizioni o vuoi ospitare un server di gioco privato per i tuoi amici.
Per fare questo in Wireguard, devi creare un file di configurazione per una nuova interfaccia VPN sul tuo server. Il modo più semplice per farlo è copiare la tua attuale configurazione del server e dare alla copia un nuovo nome:
sudo cp /etc/wireguard/wg0.conf /etc/wireguard/wg1.confApri il tuo nuovo file di configurazione utilizzando il tuo editor di testo preferito:
sudo nano /etc/wireguard/wg1.confImposta la variabile ListenPort su 60102. Fare ciò impedirà eventuali collisioni di porta tra le interfacce VPN wg0 e wg1.

Vai alla sezione [Peer] e cambia la variabile AllowedIPs da “10.0.0.2/32” a “10.0.0.3/32”, quindi salva il tuo file di configurazione.

Configurare il secondo client Wireguard
Accedi alla tua seconda macchina, quindi prepara la tua directory di configurazione Wireguard:
cd/etc/wireguard
sudo umask 077Genera una nuova coppia di chiavi Wireguard utilizzando il seguente comando:
sudo sh -c 'wg genkey | tee /etc/wireguard/client2-private-key | wg pubkey > /etc/wireguard/client2-public-key'Crea un nuovo file di configurazione utilizzando il tuo editor di testo preferito:
sudo nano /etc/wireguard/wg0.confIncolla il seguente blocco di codice all’interno del tuo nuovo file di configurazione:
[Interface]
PrivateKey= INCOLLA-LA-TUA-CHIAVE-PRIVATA-CLIENT2-QUI
Address= 10.0.0.3/32
ListenPort= 60102
[Peer]
PublicKey= INCOLLA-LA-TUA-CHIAVE-PUBBLICA-SERVER-QUI
AllowedIPs= 0.0.0.0/0
Endpoint= INCOLLA-L'INDIRIZZO-IP-DELLA-TUA-SERVER-QUI:60102
PersistentKeepalive= 25Imposta la variabile PrivateKey sulla chiave privata della tua seconda macchina, quindi cambia la variabile PublicKey sulla chiave pubblica del tuo server.
Sostituisci la variabile Endpoint con l’indirizzo IP del tuo server, seguito da “:60102.”
Salva il tuo file di configurazione, quindi avvia il client Wireguard della seconda macchina:
sudo wg-quick up wg0Collegare il secondo client al server Wireguard
Accedi di nuovo al tuo server Wireguard, quindi apri la configurazione dell’interfaccia VPN per il tuo secondo client:
sudo nano /etc/wireguard/wg1.confScorri verso il basso fino alla sezione [Peer], quindi sostituisci la variabile PublicKey con la chiave pubblica del tuo secondo client.

Salva il tuo file di configurazione, quindi avvia la seconda interfaccia VPN utilizzando il comando wg-quick:
sudo wg-quick up wg1Conferma che i tuoi primi e secondi client Wireguard appaiano correttamente sul tuo server eseguendo wg.

Testare la rete Wireguard
Con sia il tuo server che i client sulla rete Wireguard, puoi ora testare la connettività e la latenza tra i tuoi nodi. Per fare ciò, assicurati di avere installati gli strumenti di diagnostica di rete sul tuo sistema:
sudo apt install net-tools curlIn Fedora, devi solo installare curl poiché viene già fornito con gli strumenti di rete pronti all’uso:
sudo dnf install curlPer Arch Linux, puoi usare pacman per installare gli strumenti di rete e curl:
sudo pacman -S traceroute curlInizia tracciando il percorso di un pacchetto tra due client. Il seguente mostrerà come un pacchetto IP va da “10.0.0.2” a “10.0.0.3:”
traceroute 10.0.0.3Controlla se uno dei tuoi nodi può accedere a internet pubblico pingando un indirizzo IP comune:
ping -c 5 8.8.8.8
Infine, conferma che i tuoi nodi condividano lo stesso indirizzo IP pubblico con il tuo server Wireguard:
curl ipinfo.io/ip
Imparare a configurare una rete Wireguard su Linux è il primo passo per esplorare il mondo affascinante delle VPN. Fai un tuffo profondo e guarda le nostre scelte per i migliori fornitori di VPN focalizzati sulla sicurezza che puoi ottenere oggi.
Crediti immagine: Kari Shea tramite Unsplash e Wikimedia Commons. Tutte le modifiche e gli screenshot di Ramces Red.