WireGuard è una rete privata virtuale open source e incentrata sulla sicurezza progettata per semplicità e facilità d'uso. Supporta diversi sistemi operativi tra cui Linux, macOS, Windows, BSD e Android. È una VPN semplice e generica che può essere facilmente implementata su piccoli dispositivi su server di fascia alta. È un server VPN punto a punto anziché un modello client-server. Utilizza un meccanismo di scambio di chiavi pubbliche per autenticare il client.
Se stai cercando una VPN leggera e veloce, WireGuard VPN è la scelta migliore per te. In questo tutorial, ti mostreremo come installare il server e il client VPN WireGuard su Ubuntu 20.04.
Prerequisiti
- Due server con server Ubuntu 20.04.
- Una password di root è configurata su entrambi i server.
Per iniziare
Innanzitutto, si consiglia di aggiornare i pacchetti di sistema all'ultima versione. Puoi aggiornarli con il seguente comando:
apt-get update -y
Una volta aggiornati tutti i pacchetti, dovrai installare Iptables nel tuo sistema. Puoi installarlo con il seguente comando:
apt-get install iptables -y
Al termine dell'installazione, puoi procedere al passaggio successivo.
Installa il server VPN WireGuard
Per impostazione predefinita, il pacchetto WireGuard è disponibile nel repository predefinito di Ubuntu 20.04. Puoi installarlo eseguendo il seguente comando:
apt-get install wireguard -y
Una volta installato il pacchetto WireGuard, puoi procedere al passaggio successivo.
Configura il server WireGuard
WireGuard funziona scambiando chiavi pubbliche tra ciascun dispositivo nella rete WireGuard. Quindi dovrai creare una chiave pubblica e una privata nel server.
WireGuard fornisce l'utilità della riga di comando wg e wg-quick per creare una chiave e gestire le interfacce.
Puoi creare sia la chiave pubblica che quella privata utilizzando il seguente comando:
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
Una volta create entrambe le chiavi, puoi verificarle con il seguente comando:
ls /etc/wireguard
Dovresti vedere il seguente output:
privatekey publickey
Puoi visualizzare il contenuto della chiave privata con il seguente comando:
cat /etc/wireguard/privatekey
Dovresti vedere il seguente output:
4M1l65NIaoR2+fQ6xVnIdwj6iVjsSPDkEMuzVnbFh3A=
Puoi visualizzare il contenuto della chiave pubblica con il seguente comando:
cat /etc/wireguard/publickey
Dovresti vedere il seguente output:
00Jsbppv/gVMy6oHMfFZ+T/eEFBAWVbiZo33HjQBSU4=
Successivamente, dovrai creare un'interfaccia di rete per WireGuard. Puoi crearlo con il seguente comando:
nano /etc/wireguard/wg0.conf
Aggiungi le seguenti righe:
[Interface] Address = 10.0.0.1/24 SaveConfig = true ListenPort = 51820 PrivateKey = server-private-key PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Salva e chiudi il file quando hai finito.
Dove :
- Indirizzo : Un indirizzo IP privato per l'interfaccia wg0.
- Ascolta Porta: Specifica la porta di ascolto di WireGuard.
- Chiave privata: Una chiave privata memorizzata nel file /etc/wireguard/privatekey.
- PostUp : Specificare il comando che consente al traffico di lasciare il server e concedere ai client VPN l'accesso a Internet. Sostituisci anche eth0 con il nome della tua interfaccia di rete.
Quindi, imposta l'autorizzazione corretta per la chiave privata e il file wg0.
chmod 600 /etc/wireguard/{privatekey,wg0.conf}
Quindi, abilita l'interfaccia wg0 eseguendo il comando seguente:
wg-quick up wg0
Dovresti ottenere il seguente output:
[#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.0.0.1/24 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Puoi anche avviare il servizio WireGuard utilizzando systemd come mostrato di seguito:
systemctl start [email protected]
Quindi, abilita l'avvio del servizio WireGuard al riavvio del sistema con il seguente comando:
systemctl enable [email protected]
Successivamente, verifica lo stato del servizio WireGuard con il seguente comando:
systemctl status [email protected]
Dovresti ottenere il seguente output:
? [email protected] - WireGuard via wg-quick(8) for wg0 Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled) Active: active (exited) since Thu 2020-12-10 11:42:14 UTC; 7s ago Docs: man:wg-quick(8) man:wg(8) https://www.wireguard.com/ https://www.wireguard.com/quickstart/ https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8 https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8 Process: 2173 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS) Main PID: 2173 (code=exited, status=0/SUCCESS) Dec 10 11:42:14 ubuntu2004 systemd[1]: Starting WireGuard via wg-quick(8) for wg0... Dec 10 11:42:14 ubuntu2004 wg-quick[2173]: [#] ip link add wg0 type wireguard Dec 10 11:42:14 ubuntu2004 wg-quick[2173]: [#] wg setconf wg0 /dev/fd/63 Dec 10 11:42:14 ubuntu2004 wg-quick[2173]: [#] ip -4 address add 10.0.0.1/24 dev wg0 Dec 10 11:42:14 ubuntu2004 wg-quick[2173]: [#] ip link set mtu 1420 up dev wg0 Dec 10 11:42:14 ubuntu2004 wg-quick[2173]: [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE Dec 10 11:42:14 ubuntu2004 systemd[1]: Finished WireGuard via wg-quick(8) for wg0.
Puoi anche controllare lo stato dell'interfaccia wg0 con il seguente comando:
wg show wg0
Dovresti ottenere il seguente output:
interface: wg0 public key: 00Jsbppv/gVMy6oHMfFZ+T/eEFBAWVbiZo33HjQBSU4= private key: (hidden) listening port: 51820
È possibile ottenere lo stato dell'indirizzo IP dell'interfaccia wg0 con il seguente comando:
ip a show wg0
Dovresti ottenere il seguente output:
13: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000 link/none inet 10.0.0.1/24 scope global wg0 valid_lft forever preferred_lft forever
Una volta terminato, puoi procedere al passaggio successivo.
Abilita inoltro IP
Successivamente, dovrai abilitare l'inoltro IP nel tuo server per instradare i pacchetti tra i client VPN e Internet. Puoi abilitarlo modificando il file /etc/sysctl.conf:
nano /etc/sysctl.conf
Modifica la seguente riga:
net.ipv4.ip_forward=1
Salva e chiudi il file, quindi esegui il comando seguente per applicare le modifiche alla configurazione:
sysctl -p
Una volta terminato, puoi procedere al passaggio successivo.
Installa e configura il client WireGuard
Innanzitutto, dovrai installare il pacchetto WireGuard sulla macchina client. Puoi installarlo con il seguente comando:
apt-get install wireguard -y
Dopo aver installato il pacchetto WireGuard, crea una chiave privata e una chiave pubblica con il seguente comando:
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
Una volta create entrambe le chiavi, dovrai creare un nuovo file di configurazione.
Puoi crearlo con il seguente comando:
nano /etc/wireguard/wg0.conf
Aggiungi le seguenti righe:
[Interface] PrivateKey = client-private-key Address = 10.0.0.2/24 [Peer] PublicKey = server-public-key Endpoint = server-ip-address:51820 AllowedIPs = 0.0.0.0/0
Salva e chiudi il file quando hai finito.
Dove :
- Indirizzo : Un indirizzo IP privato per l'interfaccia wg0.
- Chiave privata: Specificare la chiave privata sulla macchina client.
- Chiave pubblica: Specificare la chiave pubblica sulla macchina server.
- Punto finale: Specificare l'indirizzo IP del server.
- IP consentiti: Specificare l'elenco degli indirizzi IP consentiti.
Successivamente, dovrai aggiungere la chiave pubblica del client e l'indirizzo IP sulla macchina server.
Sulla macchina server, esegui il comando seguente per aggiungere entrambi:
wg set wg0 peer client-public-key allowed-ips 10.0.0.2
Successivamente, dovrai visualizzare l'interfaccia wg0 sul computer client.
Sul computer client, esegui il comando seguente per visualizzare l'interfaccia:
wg-quick up wg0
Dovresti ottenere il seguente output:
[#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.0.0.2/24 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] wg set wg0 fwmark 51820
A questo punto, la tua macchina client è connessa al server VPN WireGuard. Puoi controllare lo stato della connessione con il seguente comando:
wg
Dovresti ottenere il seguente output:
interface: wg0 public key: 3FXBDpAO4Vado1tDjLtVQt+JnOCa+W2piLeFYQ8KyB4= private key: (hidden) listening port: 38830 fwmark: 0xca6c peer: 00Jsbppv/gVMy6oHMfFZ+T/eEFBAWVbiZo33HjQBSU4= endpoint: 69.87.216.36:51820 allowed ips: 0.0.0.0/0 latest handshake: 41 seconds ago transfer: 5.27 KiB received, 12.97 KiB sent
Conclusione
Congratulazioni! hai installato e configurato correttamente il server e il client VPN WireGuard sul server Ubuntu 20.04. Ora, il traffico dalla tua macchina client dovrebbe essere instradato attraverso la tua macchina server. Ora puoi navigare in Internet in modo anonimo e mantenere privati i tuoi dati.