GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Installa il server VPN Wireguard con Docker

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...


Docker
  1. Installa ModSecurity con Apache in un Docker Container

  2. Monitora il server MySQL con Nagios 3.4

  3. Come installare e ospitare il server OpenVPN con Docker

  4. Come installare Jenkins con Docker

  5. Come installare Nextcloud con Docker sul tuo server Linux

Come installare Sentry con Docker su Ubuntu 20.04

Come installare Mailtrain su Ubuntu 18.04 con Docker

Installa Portainer con Docker su Ubuntu

Installa Portainer con Docker su Centos8

Come installare Wireguard su CentOS 8

Installa WordPress con Docker su Ubuntu 20.04