GNU/Linux >> Linux Esercitazione >  >> Debian

Come configurare WireGuard VPN su Debian 10

WireGuard è una VPN (Virtual Private Network) generica che utilizza una crittografia all'avanguardia. Rispetto ad altre soluzioni VPN popolari, come IPsec e OpenVPN, WireGuard è generalmente più veloce, più facile da configurare e ha un ingombro ridotto. È multipiattaforma e può essere eseguito praticamente ovunque, inclusi Linux, Windows, Android e macOS.

Wireguard è una VPN peer-to-peer; non utilizza il modello client-server. A seconda della configurazione, un peer può fungere da server o client tradizionale. Funziona creando un'interfaccia di rete su ogni dispositivo peer che funge da tunnel. I peer si autenticano a vicenda scambiandosi e convalidando le chiavi pubbliche, imitando il modello SSH. Le chiavi pubbliche vengono mappate con un elenco di indirizzi IP consentiti nel tunnel. Il traffico VPN è incapsulato in UDP.

Questo articolo spiega come installare e configurare WireGuard su Debian 10 che fungerà da server VPN. Ti mostreremo anche come configurare WireGuard come client su Linux, Windows e macOS. Il traffico del client verrà instradato attraverso il server Debian 10.

Questa configurazione può essere utilizzata come protezione dagli attacchi Man in the Middle, navigando sul Web in modo anonimo, aggirando i contenuti con restrizioni geografiche o consentendo ai tuoi colleghi che lavorano da casa di connettersi in modo sicuro alla rete aziendale.

Prerequisiti #

Per seguire questa guida, avrai bisogno di una macchina con Debian 10 installato. Hai anche bisogno di root o [sudo access](https://linuxize.com/post/how-to-create-a-sudo-user-on-debian/ per installare i pacchetti e apportare modifiche al sistema.

Configurazione del server WireGuard #

Inizieremo installando il pacchetto WireGuard sulla macchina Debian e configurandolo per fungere da server. Inoltre configureremo il sistema per instradare il traffico dei clienti attraverso di esso.

Installa WireGuard su Debian 10 #

WireGuard è disponibile nei repository dei backport di Debian. Per aggiungere il repository al tuo sistema, esegui:

echo 'deb http://ftp.debian.org/debian buster-backports main' | sudo tee /etc/apt/sources.list.d/buster-backports.list

Una volta abilitato il repository, aggiorna la cache apt e installa il modulo e gli strumenti WireGuard:

sudo apt updatesudo apt install wireguard
WireGuard funziona come un modulo del kernel.

Configurazione WireGuard #

Puoi configurare e gestire le interfacce WireGuard con il wg e wg-quick strumenti da riga di comando.

Ogni dispositivo nella rete WireGuard VPN deve disporre di una chiave privata e pubblica. Esegui il comando seguente per generare la coppia di chiavi:

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

I file sono generati nel /etc/wireguard directory. Usa il cat o less comandi per visualizzare il contenuto dei file. La chiave privata non dovrebbe mai essere condivisa con nessuno e dovrebbe essere sempre tenuta al sicuro.

Wireguard supporta anche una chiave precondivisa, che aggiunge un ulteriore livello di crittografia a chiave simmetrica. Questa chiave è facoltativa e deve essere univoca per ogni coppia di peer.

Il passaggio successivo consiste nel configurare il dispositivo tunnel che indirizzerà il traffico VPN.

Il dispositivo può essere configurato sia dalla riga di comando utilizzando il ip e wg comandi o creando manualmente il file di configurazione. Creeremo la configurazione con un editor di testo.

Apri il tuo editor e crea un nuovo file chiamato wg0.conf con i seguenti contenuti:

sudo nano /etc/wireguard/wg0.conf
/etc/wireguard/wg0.conf
[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 ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE

Puoi nominare l'interfaccia come preferisci. Tuttavia si consiglia di utilizzare qualcosa come wg0 o wgvpn0 .

Le impostazioni nella sezione dell'interfaccia hanno il seguente significato:

  • Indirizzo:un elenco separato da virgole di indirizzi IP v4 o v6 per wg0 interfaccia. Puoi ottenere un indirizzo IP da un intervallo riservato alle reti private (10.0.0.0/8, 172.16.0.0/12 o 192.168.0.0/16).

  • ListenPort:la porta di ascolto.

  • PrivateKey - Una chiave privata generata da wg genkey comando. (Per vedere il contenuto del tipo di file:sudo cat /etc/wireguard/privatekey )

  • SaveConfig:se impostato su true, lo stato corrente dell'interfaccia viene salvato nel file di configurazione all'arresto.

  • PostUp - Comando o script che viene eseguito prima di aprire l'interfaccia. In questo esempio, utilizziamo iptables per abilitare il masquerading. Ciò consente al traffico di lasciare il server, fornendo ai client VPN l'accesso a Internet.

    Assicurati di sostituire ens3 dopo -A POSTROUTING in modo che corrisponda al nome dell'interfaccia di rete pubblica. Puoi facilmente trovare l'interfaccia con:

    ip -o -4 route show to default | awk '{print $5}'
  • PostDown - Un comando o uno script che viene eseguito prima di abbassare l'interfaccia. Le regole di iptables verranno rimosse una volta che l'interfaccia è inattiva.

Il wg0.conf e privatekey i file non dovrebbero essere leggibili agli utenti normali. Usa chmod per impostare i permessi dei file su 600 :

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

Una volta fatto, porta il wg0 interfaccia utilizzando gli attributi specificati nel file di configurazione:

sudo wg-quick up wg0

L'output sarà simile a questo:

[#] 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 ens3 -j MASQUERADE

Per verificare lo stato e la configurazione dell'interfaccia, eseguire:

sudo wg show wg0
interface: wg0
  public key: +Vpyku+gjVJuXGR/OXXt6cmBKPdc06Qnm3hpRhMBtxs=
  private key: (hidden)
  listening port: 51820

Puoi anche verificare lo stato dell'interfaccia con ip a show wg0 :

ip a show wg0
4: 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

WireGuard può essere gestito con Systemd. Per portare l'interfaccia WireGuard all'avvio, esegui il seguente comando:

sudo systemctl enable wg-quick@wg0

Rete del server e configurazione del firewall #

L'inoltro IP deve essere abilitato affinché NAT funzioni. Apri il /etc/sysctl.conf file e aggiungi o decommenta la seguente riga:

sudo nano /etc/sysctl.conf
/etc/sysctl.conf
net.ipv4.ip_forward=1

Salva il file e applica la modifica:

sudo sysctl -p
net.ipv4.ip_forward = 1

Se stai usando UFW per gestire il tuo firewall, devi aprire il traffico UDP sulla porta 51820 :

sudo ufw allow 51820/udp

Questo è tutto. Il peer Debian che fungerà da server è stato impostato.

Installazione client Linux e macOS #

Le istruzioni di installazione per tutte le piattaforme supportate sono disponibili su https://wireguard.com/install/. Sui sistemi Linux, puoi installare il pacchetto utilizzando il gestore dei pacchetti di distribuzione e su macOS con brew .

Una volta installato, segui i passaggi seguenti per configurare il dispositivo client.

Il processo per configurare un client Linux e macOS è praticamente lo stesso che hai fatto per il server. Innanzitutto, genera le chiavi pubbliche e private:

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

Crea il file wg0.conf e aggiungi i seguenti contenuti:

sudo nano /etc/wireguard/wg0.conf
/etc/wireguard/wg0.conf
[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

Le impostazioni nella sezione dell'interfaccia hanno lo stesso significato di quando si configura il server:

  • Indirizzo:un elenco separato da virgole di indirizzi IP v4 o v6 per il wg0 interfaccia.
  • PrivateKey - Per vedere il contenuto del file sulla macchina client, eseguire:sudo cat /etc/wireguard/privatekey

La sezione peer contiene i seguenti campi:

  • PublicKey - Una chiave pubblica del peer a cui vuoi connetterti. (Il contenuto del /etc/wireguard/publickey del server file).
  • Endpoint:un IP o un nome host del peer a cui desideri connetterti, seguito da due punti e quindi un numero di porta su cui è in ascolto il peer remoto.
  • AllowedIPs:un elenco separato da virgole di indirizzi IP v4 o v6 da cui è consentito il traffico in entrata per il peer e a cui è diretto il traffico in uscita per questo peer. Stiamo utilizzando 0.0.0.0/0 perché stiamo instradando il traffico e vogliamo che il peer del server invii pacchetti con qualsiasi IP di origine.

Se devi configurare client aggiuntivi, ripeti gli stessi passaggi utilizzando un indirizzo IP privato diverso.

Installazione client Windows #

Scarica e installa il pacchetto Windows msi dal sito Web WireGuard.

Una volta installato, apri l'applicazione WireGuard e fai clic su "Aggiungi tunnel" -> "Aggiungi tunnel vuoto..." come mostrato nell'immagine seguente:

Una coppia di chiavi pubbliche viene creata automaticamente e visualizzata sullo schermo.

Immettere un nome per il tunnel e modificare la configurazione come segue:

[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

Nella sezione dell'interfaccia, aggiungi una nuova riga per definire l'indirizzo del tunnel del client.

Nella sezione peer, aggiungi i seguenti campi:

  • PublicKey - La chiave pubblica del server Debian (/etc/wireguard/publickey file).
  • Endpoint:l'indirizzo IP del server Debian seguito da due punti e da una porta WireGuard (51820).
  • IP consentiti - 0.0.0.0/0

Al termine, fai clic sul pulsante "Salva".

Aggiungi il client peer al server #

L'ultimo passaggio consiste nell'aggiungere la chiave pubblica e l'indirizzo IP del client al server. Per farlo, esegui il seguente comando sul server Debian:

sudo wg set wg0 peer CLIENT_PUBLIC_KEY allowed-ips 10.0.0.2

Assicurati di modificare il CLIENT_PUBLIC_KEY con la chiave pubblica che hai generato sulla macchina client (sudo cat /etc/wireguard/publickey ) e modificare l'indirizzo IP del client se è diverso. Gli utenti Windows possono copiare la chiave pubblica dall'applicazione WireGuard.

Una volta terminato, torna alla macchina client e apri l'interfaccia di tunneling.

Client Linux e macOS #

Esegui il seguente comando per visualizzare l'interfaccia:

sudo wg-quick up wg0

Ora dovresti essere connesso al server Debian e il traffico dalla tua macchina client dovrebbe essere instradato attraverso di esso. Puoi verificare la connessione con:

sudo wg
interface: wg0
  public key: gFeK6A16ncnT1FG6fJhOCMPMeY4hZa97cZCNWis7cSo=
  private key: (hidden)
  listening port: 53527
  fwmark: 0xca6c

peer: r3imyh3MCYggaZACmkx+CxlD6uAmICI8pe/PGq8+qCg=
  endpoint: XXX.XXX.XXX.XXX:51820
  allowed ips: 0.0.0.0/0
  latest handshake: 53 seconds ago
  transfer: 3.23 KiB received, 3.50 KiB sent

Puoi anche aprire il browser, digitare "qual è il mio ip" e dovresti vedere l'indirizzo IP del tuo server Debian.

Per interrompere il tunneling, abbassa il wg0 interfaccia:

sudo wg-quick down wg0

Client Windows #

Se hai installato WireGuard su Windows, fai clic sul pulsante "Attiva". Una volta che i peer sono connessi, lo stato del tunnel cambierà in Attivo:


Debian
  1. Come configurare Wireguard VPN su CentOS 8

  2. Come configurare WireGuard VPN su Ubuntu 20.04

  3. Come configurare WireGuard VPN su Ubuntu (una guida passo passo)

  4. Impostare un IP statico su Debian 11 - Come farlo?

  5. Come configurare un server SFTP su Debian 11 Server

Configura il tuo server VPN WireGuard su Debian 11 e Debian 10

Come modificare il nome host su Debian 10

Come installare Wireguard su Debian 10

Come installare Wireguard su Debian 11

Come configurare WireGuard VPN su Debian 11

Come configurare WireGuard VPN su Linux