Ricerca nel sito web

Come configurare WireGuard VPN su Ubuntu 20.04


Questo tutorial esiste per queste versioni del sistema operativo

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 20.04 (Focal Fossa)

Su questa pagina

  1. Prerequisiti
  2. Per iniziare
  3. Installa WireGuard VPN Server
  4. Configura il server WireGuard
  5. Abilita inoltro IP
  6. Installa e configura il client WireGuard
  7. Conclusione

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 che eseguono il server Ubuntu 20.04.
  • Su entrambi i server è configurata una password di root.

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, è possibile procedere al passaggio successivo.

Installa WireGuard VPN Server

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 ogni dispositivo nella rete WireGuard. Quindi dovrai creare una chiave pubblica e 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 usando il seguente comando:

wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey

Una volta create entrambe le chiavi, puoi controllarle con il seguente comando:

ls /etc/wireguard

Dovresti vedere il seguente output:

privatekey  publickey

È possibile visualizzare il contenuto della chiave privata con il seguente comando:

cat /etc/wireguard/privatekey

Dovresti vedere il seguente output:

4M1l65NIaoR2+fQ6xVnIdwj6iVjsSPDkEMuzVnbFh3A=

È possibile 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.
  • ListenPort: specifica la porta di ascolto di WireGuard.
  • PrivateKey: una chiave privata memorizzata nel file /etc/wireguard/privatekey.
  • PostUp: specificare il comando che consente al traffico di lasciare il server e fornire ai client VPN l'accesso a Internet. Sostituisci anche eth0 con il nome della tua interfaccia di rete.

Quindi, imposta i permessi appropriati per la chiave privata e il file wg0.

chmod 600 /etc/wireguard/{privatekey,wg0.conf}

Successivamente, abilita l'interfaccia wg0 eseguendo il seguente comando:

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 

Successivamente, abilitare il servizio WireGuard per l'avvio al riavvio del sistema con il seguente comando:

systemctl enable 

Successivamente, verifica lo stato del servizio WireGuard con il seguente comando:

systemctl status 

Dovresti ottenere il seguente output:

?  - WireGuard via wg-quick(8) for wg0
     Loaded: loaded (/lib/systemd/system/; 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 ubunt4 systemd[1]: Starting WireGuard via wg-quick(8) for wg0...
Dec 10 11:42:14 ubunt4 wg-quick[2173]: [#] ip link add wg0 type wireguard
Dec 10 11:42:14 ubunt4 wg-quick[2173]: [#] wg setconf wg0 /dev/fd/63
Dec 10 11:42:14 ubunt4 wg-quick[2173]: [#] ip -4 address add 10.0.0.1/24 dev wg0
Dec 10 11:42:14 ubunt4 wg-quick[2173]: [#] ip link set mtu 1420 up dev wg0
Dec 10 11:42:14 ubunt4 wg-quick[2173]: [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Dec 10 11:42:14 ubunt4 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 riga seguente:

net.ipv4.ip_forward=1

Salva e chiudi il file, quindi esegui il seguente comando 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 sul computer 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, sarà necessario 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.
  • PrivateKey: specificare la chiave privata sulla macchina client.
  • PublicKey: specifica la chiave pubblica sulla macchina server.
  • Endpoint: specificare l'indirizzo IP del server.
  • AllowedIPs: specifica l'elenco degli indirizzi IP consentiti.

Successivamente, sarà necessario aggiungere la chiave pubblica del client e l'indirizzo IP sulla macchina server.

Sulla macchina server, eseguire il seguente comando per aggiungere entrambi:

wg set wg0 peer client-public-key allowed-ips 10.0.0.2

Successivamente, sarà necessario visualizzare l'interfaccia wg0 sulla macchina client.

Sul computer client, eseguire 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 i tuoi dati privati. Dai un'occhiata alla nostra guida ai comandi tee di Linux.