Panoramica
Questo articolo mostrerà la procedura su come installare il server VPN Wireguard con Docker. Wireguard è un'altra buona opzione VPN oltre a OpenVPN. Wireguard non ha ancora un'immagine Docker ufficiale, quindi utilizzeremo l'immagine Docker di Wireguard da linuxserver.io – Questa immagine esatta utilizzata in questo post:Docker Hub (e pagina Github)
Questa procedura è anche coperta da OpenVPN. Puoi verificarlo in questo post.
Requisiti:
- Docker installato e funzionante.
Per l'installazione della finestra mobile, puoi fare riferimento a questo post o consultare la documentazione ufficiale.
Se esegui distribuzioni come Ubuntu, Debian, Raspbian, puoi utilizzare lo script di installazione rapida Docker ufficiale:
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
Quindi aggiungi l'utente al gruppo Docker, se lo desideri. Cioè se vuoi eseguire i comandi della finestra mobile senza sudo.
sudo usermod -aG docker <username>
Configurazione firewall
Se hai un firewall in esecuzione (che è altamente raccomandato), è necessario avere porte aperte per Wireguard, altrimenti non sarai in grado di stabilire la connessione con il server Wireguard.
UFW
sudo ufw allow 51820
IPTABLES
sudo iptables -I INPUT -p tcp -m tcp --dport 51820 -j ACCEPT or sudo iptables -A INPUT -p tcp -m tcp --dport 51820 -j ACCEPT
Installa ed esegui l'immagine Docker
Di seguito è elencato il comando Docker con le variabili di ambiente impostate (questi sono esempi e sono anche spiegati):
docker run -d \ --name wireguard \ --cap-add=NET_ADMIN \ --cap-add=SYS_MODULE \ -e PUID=1000 -e PGID=1000 \ -e TZ=Europe/London \ -e SERVERURL=wireguard.yourdomain.com \ -e PEERS=laptop,tablet,phone \ -e PEERDNS=auto \ -p 51820:51820/udp \ -v wireguard_config:/config \ -v /lib/modules:/lib/modules \ --sysctl="net.ipv4.conf.all.src_valid_mark=1" \ --restart=unless-stopped \ linuxserver/wireguard
Spiegazione delle variabili d'ambiente:
nome del paracavo – questo è il nome che abbiamo impostato per il contenitore wireguard
cap-add=NET_ADMIN &cap-add=SYS_MODULE – questa variabile fornirà al contenitore autorizzazioni elevate sul server host e gli consentirà di gestire il kernel dell'host e interagire con le interfacce di rete dell'host (che sono necessarie se vogliamo stabilire la comunicazione con la nostra VPN).
e PUID=1000 -e PGID=1000 – variabile per specificare l'utente e il gruppo di autorizzazioni (lo stesso gruppo di un utente sudo)
e TZ=Europe/London – Fuso orario del server (impostalo di conseguenza)
e SERVERURL=vpn.yourdomain.com – Nome di dominio (FQDN) del server. Il dominio è facoltativo ma DEVE essere impostato almeno l'indirizzo IP pubblico del server (questo necessario, in modo che il nostro dispositivo client possa individuare il server e comunicare con esso). Puoi anche impostare la configurazione su auto.
e PEERS=laptop,tablet,phone – variabile per configurare la connessione client alla VPN per i dispositivi client (essenzialmente il numero di dispositivi client)
e PEERDNS=auto – Variabile per configurare il risolutore di dominio
p 51820:51820/udp – porta da esporre sul container e quale porta ascoltare sul server host da utilizzare per il traffico VPN.
v wireguard_config:/config &v /lib/modules:/lib/modules – directory di volume da montare sul server host e da utilizzare per salvare la configurazione ei file di Wireguard
sysctl="net.ipv4.conf.all.src_valid_mark=1″ – Un'altra variabile importante. Serve per abilitare un parametro del kernel a livello di rete in modo che il container possa comunicare con le reti esterne al container. Ciò significa che il contenitore può ottenere l'accesso a Internet.
restart=unless-stopped – per riavviare il container ogni volta che si è fermato
linuxserver/wireguard – Immagine Docker da utilizzare
Versione del compositore
Nota – questo richiede che docker-compose sia installato e in esecuzione
version: "2.1" services: wireguard: image: linuxserver/wireguard container_name: wireguard cap_add: - NET_ADMIN - SYS_MODULE environment: - PUID=1000 - PGID=1000 - TZ=Europe/London - SERVERURL=vpn.domain.com # domain optional, public IP is required at least - SERVERPORT=51820 - PEERS=3 # number of peers - PEERDNS=auto #optional volumes: - /lib/config:/config - /lib/modules:/lib/modules ports: - 51820:51820/udp sysctls: - net.ipv4.conf.all.src_valid_mark=1 restart: unless-stopped
Connettere i client
Revisione della configurazione peer
Non appena avvii il contenitore Wireguard, Wireguard creerà tutta la configurazione della connessione client. Puoi rivedere la configurazione con il comando:
docker logs wireguard
o
docker exec -it wireguard /app/show-peer peer-number
Questo output stamperà anche i codici QR per una configurazione della connessione facile e veloce. Questo è più conveniente per i dispositivi intelligenti che possono scansionare i codici QR tramite l'app Wireguard. Quindi, per i dispositivi smart, scarica l'app Wireguard, scansiona il codice QR e dovresti essere subito connesso.
Installazione del client Wireguard e ottenimento della configurazione peer
Sui dispositivi Linux (PC e laptop), la configurazione del client è leggermente diversa. L'installazione e la configurazione del client avviene tramite terminale. Innanzitutto, installa Wireguard:
sudo apt install wireguard
Il client Wireguard è disponibile anche per altre distribuzioni e anche per Windows. Se hai bisogno di un client per altri client, controlla i documenti.
Quindi, crea l'interfaccia Wireguard:
ip link add dev wg0 type wireguard
e ricontrolla se è presente tramite il comando:ip -a. Se riscontri problemi con questo, Wireguard Docs ha anche altri metodi e ha coperto la risoluzione dei problemi.
Dovrebbe assomigliare a questo:
Lascialo così com'è per ora e spostati sul server. Dobbiamo prima acquisire la configurazione peer direttamente dal server, copiare la configurazione e incollarla sul nostro dispositivo client Linux.
La posizione predefinita della configurazione peer si trova in:
/var/lib/docker/volumes/wireguard_config/_data/
Puoi copiarlo (se necessario) per eseguirne il backup o accedere direttamente alla configurazione del peer:
sudo cp /var/lib/docker/volumes/wireguard_config/_data/peer*/*.conf ~
Questo copierà tutte le configurazioni del peer nella home directory e quindi nella home directory stamperà il file con cat:
sudo cat peer_laptop.conf or sudo nano peer_laptop.conf
oppure accedi direttamente alla configurazione peer:
sudo cat /var/lib/docker/volumes/wireguard_config/_data/peer_laptop/peer_laptop.conf
Se ottieni l'errore di autorizzazione negata anche con il comando sudo, significa che è possibile accedere alla configurazione solo come root. In tal caso, accedi semplicemente come root con – sudo su ed esegui di nuovo uno dei comandi precedenti senza sudo.
Configurazione dell'interfaccia client e creazione della connessione
Dopo aver copiato la configurazione, torna sul tuo dispositivo linux, crea il file di configurazione peer (solo per esempio creeremo la config at home directory):
sudo nano wireguard-vpn.conf
e incolla nella configurazione del peer, salva ed esci.
Infine esegui questo comando per autoconfigurare l'interfaccia wireguard, per attivarla e, successivamente, dovrebbe connettersi automaticamente al tuo server:
sudo wg-quick up wireguard-vpn.conf
Puoi ricontrollarlo con - ip a e con ping al server VPN o con un servizio what's my ip.
Per disconnettersi, esegui di nuovo lo stesso comando ma con argomento down:
sudo wg-quick down wireguard-vpn.conf
Riepilogo
Ciò che abbiamo trattato in questo post sono i passaggi su come installare il server VPN Wireguard con Docker. Questo metodo è piuttosto veloce da configurare ed è facilmente regolabile, se vuoi aggiungere o rimuovere client. Ma, se preferisci di più la soluzione con OpenVPN, c'è la stessa procedura con OpenVPN su questo link
Grazie mille per il tuo tempo...