GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

Installieren Sie den Wireguard VPN-Server mit Docker

Übersicht

Dieser Artikel zeigt das Verfahren zur Installation des Wireguard VPN-Servers mit Docker. Wireguard ist neben OpenVPN eine weitere gute VPN-Option. Wireguard hat noch kein offizielles Docker-Image, daher verwenden wir das Wireguard Docker-Image von linuxserver.io – Genau dieses Image, das in diesem Beitrag verwendet wird:Docker Hub (und Github-Seite)

Auch dieses Verfahren wird mit OpenVPN abgedeckt. Sie können es in diesem Beitrag nachlesen.

Anforderungen:

  • Docker installiert und ausgeführt.

Informationen zur Docker-Installation finden Sie in diesem Beitrag oder in der offiziellen Dokumentation.

Wenn Sie Distributionen wie – Ubuntu, Debian, Raspbian ausführen, können Sie das offizielle Docker-Schnellinstallationsskript verwenden:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Fügen Sie dann Benutzer zur Docker-Gruppe hinzu, wenn Sie möchten. Das heißt, wenn Sie Docker-Befehle ohne sudo ausführen möchten.

sudo usermod -aG docker <username>

Firewall-Konfiguration

Wenn Sie eine Firewall ausführen (was dringend empfohlen wird), müssen offene Ports für Wireguard vorhanden sein, da Sie sonst keine Verbindung mit dem Wireguard-Server herstellen können.

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

Installieren Sie das Docker-Image und führen Sie es aus

Unten ist der Docker-Befehl mit gesetzten Umgebungsvariablen aufgeführt (dies sind Beispiele und werden ebenfalls erklärt):

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

Erklärung der Umgebungsvariablen:

Name Wireguard – das ist der Name, den wir für den Wireguard-Container festgelegt haben
cap-add=NET_ADMIN  &cap-add=SYS_MODULE – Diese Variable stellt dem Container erhöhte Berechtigungen auf dem Hostserver bereit und ermöglicht ihm, den Kernel des Hosts zu verwalten und mit den Netzwerkschnittstellen des Hosts zu interagieren (die erforderlich sind, wenn wir die Kommunikation mit unserem VPN herstellen möchten).
e PUID=1000 -e PGID=1000 – Variable zur Angabe des Benutzers und der Berechtigungsgruppe (dieselbe Gruppe wie ein sudo-Benutzer)
e TZ=Europe/London – Zeitzone des Servers (entsprechend einstellen)
e SERVERURL=vpn.yourdomain.com – Domänenname (FQDN) des Servers. Die Domäne ist optional, aber mindestens die öffentliche IP-Adresse des Servers MUSS festgelegt werden (dies ist erforderlich, damit unser Client-Gerät den Server finden und mit ihm kommunizieren kann). Sie können die Konfiguration auch auf auto.
e PEERS=laptop,tablet,phone setzen – Variable zum Konfigurieren der Client-Verbindung zum VPN für Client-Geräte (im Wesentlichen die Anzahl der Client-Geräte)
e PEERDNS=auto – Variable zur Konfiguration des Domain-Resolvers
p 51820:51820/udp – Port, der auf dem Container verfügbar gemacht werden soll, und welcher Port auf dem Hostserver überwacht werden soll, um ihn für VPN-Verkehr zu verwenden.
v wireguard_config:/config &v /lib/modules:/lib/modules – Volume-Verzeichnisse zum Mounten auf dem Hostserver und zum Speichern der Wireguard-Konfiguration und -Dateien
sysctl=”net.ipv4.conf.all.src_valid_mark=1″ – Eine weitere wichtige Variable. Es soll einen Kernel-Parameter auf Netzwerkebene aktivieren, damit der Container mit Netzwerken außerhalb des Containers kommunizieren kann. Das bedeutet, dass der Container Zugriff auf das Internet erhalten kann.
restart=unless-stopped – um den Container jedes Mal neu zu starten, wenn er
linuxserver/wireguard gestoppt hat – Zu verwendendes Docker-Image

Composer-Version

Hinweis – Dazu muss docker-compose installiert sein und ausgeführt werden

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

Clients verbinden

Überprüfen der Peer-Konfiguration

Sobald Sie den Wireguard-Container starten, erstellt Wireguard alle Client-Verbindungskonfigurationen. Sie können die Konfiguration mit dem Befehl überprüfen:

docker logs wireguard

oder

docker exec -it wireguard /app/show-peer peer-number

Diese Ausgabe druckt auch die QR-Codes für einen einfachen und schnellen Verbindungsaufbau. Dies ist am bequemsten für intelligente Geräte, die die QR-Codes über die Wireguard-App scannen können. Laden Sie also für Smart-Geräte einfach die Wireguard-App herunter, scannen Sie den QR-Code und Sie sollten sofort eine Verbindung herstellen können.

Installieren des Wireguard-Clients und Abrufen der Peer-Konfiguration

Auf Linux-Geräten (PCs und Laptops) ist die Client-Einrichtung etwas anders. Die Installation und Konfiguration des Clients erfolgt ausschließlich über das Terminal. Zuerst Wireguard installieren:

sudo apt install wireguard

Der Wireguard-Client ist auch für andere Distributionen und auch für Windows verfügbar. Wenn Sie einen Client für andere Clients benötigen, sehen Sie sich die Dokumentation an.

Erstellen Sie als Nächstes die Wireguard-Schnittstelle:

ip link add dev wg0 type wireguard

und überprüfen Sie, ob es mit dem Befehl vorhanden ist:ip -a. Wenn Sie damit auf Probleme stoßen, bietet die Wireguard-Dokumentation auch andere Methoden und behandelt die Fehlerbehebung.

Es sollte etwa so aussehen:

Lassen Sie es jetzt so wie es ist und bewegen Sie sich auf den Server. Wir müssen zuerst die Peer-Konfiguration direkt vom Server abrufen, die Konfiguration kopieren und auf unserem Linux-Client-Gerät einfügen.

Der Standardspeicherort der Peer-Konfiguration befindet sich unter:

/var/lib/docker/volumes/wireguard_config/_data/

Sie können es (falls erforderlich) kopieren, um es zu sichern, oder direkt auf die Peer-Konfiguration zugreifen:

sudo cp /var/lib/docker/volumes/wireguard_config/_data/peer*/*.conf ~

Dadurch werden alle Peer-Konfigurationen in das Home-Verzeichnis kopiert und dann im Home-Verzeichnis die Datei mit cat:

gedruckt
sudo cat peer_laptop.conf

or

sudo nano peer_laptop.conf

oder greifen Sie direkt auf die Peer-Konfiguration zu:

sudo cat /var/lib/docker/volumes/wireguard_config/_data/peer_laptop/peer_laptop.conf

Wenn Sie auch mit dem Befehl sudo den Fehler Berechtigung verweigert erhalten, bedeutet dies, dass auf die Konfiguration nur als Root zugegriffen werden kann. Wenn das der Fall ist, melden Sie sich einfach als Root mit – sudo su an und führen Sie einen der vorherigen Befehle ohne sudo erneut aus.

Konfigurieren der Client-Schnittstelle und Herstellen der Verbindung

Nachdem Sie die Konfiguration kopiert haben, kehren Sie zu Ihrem Linux-Gerät zurück und erstellen Sie die Peer-Konfigurationsdatei (nur für das Beispiel werden wir die Konfiguration im Home-Verzeichnis erstellen):

sudo nano wireguard-vpn.conf

und fügen Sie die Peer-Konfiguration ein, speichern und beenden Sie.

Führen Sie zuletzt diesen Befehl aus, um die Wireguard-Schnittstelle automatisch zu konfigurieren, zu aktivieren und danach sollte sie sich automatisch mit Ihrem Server verbinden:

sudo wg-quick up wireguard-vpn.conf

Sie können es mit – ip a und mit ping an den VPN-Server oder mit einem what’s my ip service überprüfen.

Um die Verbindung zu trennen, führen Sie einfach denselben Befehl erneut aus, jedoch mit dem Down-Argument:

sudo wg-quick down wireguard-vpn.conf

Zusammenfassung

Was wir in diesem Beitrag behandelt haben, sind die Schritte zur Installation des Wireguard VPN-Servers mit Docker. Diese Methode ist ziemlich schnell einzurichten und lässt sich leicht anpassen, wenn Sie Clients hinzufügen oder entfernen möchten. Wenn Sie jedoch eher die Lösung mit OpenVPN bevorzugen, gibt es das gleiche Verfahren mit OpenVPN unter diesem Link

Vielen Dank für Ihre Zeit…


Docker
  1. Installieren Sie ModSecurity mit Apache in einem Docker-Container

  2. MySQL-Server mit Nagios 3.4 überwachen

  3. So installieren und hosten Sie einen OpenVPN-Server mit Docker

  4. So installieren Sie Jenkins mit Docker

  5. So installieren Sie Nextcloud mit Docker auf Ihrem Linux-Server

So installieren Sie Sentry mit Docker unter Ubuntu 20.04

So installieren Sie Mailtrain auf Ubuntu 18.04 mit Docker

Portainer mit Docker auf Ubuntu installieren

Installieren Sie Portainer mit Docker auf Centos8

So installieren Sie Wireguard unter CentOS 8

Installieren Sie WordPress mit Docker auf Ubuntu 20.04