Mit Ubuntu LTS 20.04 wird das Kernel Modul für Wireguard ausgeliefert. Eigentlich ist Wiregaurd erst in Kernel 5.6 enthalten, jedoch verwendet Ubuntu 20.04 den Long Term Kernel 5.4. Das Kernel Modul für Wireguard wurde extra von Kernel 5.6 in 5.4 zurück portiert und ist somit sofort nutzbar.
In diesem Artikel beschreibe ich die Einrichtung von Wireguard für den Client und Server.
Wir installieren die Wiregard Tools und einen Programm zur Erzeugung von QR-Codes.
sudo apt-get install wireguard-tools qrencode
Für die Konfiguration legen wir zwei Verzeichnisse an.
sudo mkdir -p /etc/wireguard /root/wireguard
1. Öffentlichen- und Privaten-Schlüssel erstellen
Wir erzeugen den Privaten- und Öffentlichen-Schlüssel für den Client und Server.
sudo sh -c 'wg genkey | tee /root/wireguard/server-private.key | wg pubkey > /root/wireguard/server-public.key' sudo sh -c 'wg genkey | tee /root/wireguard/client-private.key | wg pubkey > /root/wireguard/client-public.key' |
2. Konfigurationsdateien erstellen
Für den Client und Server brauchen wir zwei Konfigurationsdateien.
sudo vim /root/wireguard/wg0-client.conf
[Interface] Address = 10.200.200.2/32,fd42:42:42::2/64 PrivateKey = $(cat /root/wireguard/client-private.key) DNS = 1.1.1.1, 8.8.8.8, 2606:4700:4700::1111, 2001:4860:4860::8888 [Peer] PublicKey = $(cat /root/wireguard/server-public.key) Endpoint = $(hostname):51820 AllowedIPs = 0.0.0.0/0,::/0 PersistentKeepalive = 20 |
sudo vim /root/wireguard/wg0-server.conf
[Interface] Address = 10.200.200.1/24,fd42:42:42::1/64 ListenPort = 51820 SaveConfig = true PrivateKey = $(cat /root/wireguard/server-private.key) PostUp = sysctl -qw net.ipv4.ip_forward=1 PostUp = sysctl -qw net.ipv6.conf.all.forwarding=1 PostUp = iptables -t nat -A POSTROUTING -j MASQUERADE -o e+ PostUp = ip6tables -t nat -A POSTROUTING -j MASQUERADE -o e+ PostDown = iptables -t nat -D POSTROUTING -j MASQUERADE -o e+ PostDown = ip6tables -t nat -D POSTROUTING -j MASQUERADE -o e+ PostDown = sysctl -qw net.ipv4.ip_forward=0 PostDown = sysctl -qw net.ipv6.conf.all.forwarding=0 [Peer] PublicKey = $(cat /root/wireguard/client-public.key) AllowedIPs = 10.200.200.2/32,fd42:42:42::/64 |
Die Werte für den PublicKey und PrivateKey, sowie Endpoint werden im nächsten Schritt durch die Werte aus den Keys von Schritt #1 ersetzt.
sudo bash -c 'eval "echo \"$(< /root/wireguard/wg0-client.conf)\"" > /root/wireguard/client.conf' sudo bash -c 'eval "echo \"$(< /root/wireguard/wg0-server.conf)\"" > /etc/wireguard/wg0.conf' |
Die Server Konfiguration enthält den Private Key und sollte nur für den Root sichtbar sein.
sudo chmod 0600 /etc/wireguard/wg0.conf
3. VPN einrichten
Im letzten Schritt wird das VPN von Wiregard eingerichtet und aktiviert.
Mit dem QR-Code kann man die Konfiguration für den Client auf ein anderes Gerät (z.B. Smartphone) übertragen. Die Wireguard App findet man im jeweiligen App Store unter Wireguard.
sudo sh -c 'qrencode -t ansiutf8 < /root/wireguard/client.conf'
Jetzt laden wir noch das Kernel Modul von Wireguard.
sudo modprobe wireguard
Das Wireguard Modul sollte jetzt geladen sein.
lsmod |grep wireguard
Damit nach einem Neustart das Modul automatisch geladen wird, fügen wir es der Konfiguration hinzu.
echo "wireguard"|sudo tee -a /etc/modules-load.d/wireguard.conf
Die Schnittstelle (wg0) wird mit dem wg-quick Tool eingerichtet und
sudo wg-quick up wg0
Die VPN Verbindung kann auch getrennt werden.
sudo wg-quick down wg0
Wenn das Kernel Modul nicht mehr notwendig ist, kann es entladen werden.
sudo rmmod --force wireguard
Wenn man ein VPN zwischen zwei Server aufbauen möchte, dann wird die Datei /root/wireguard/client.conf in Verzeichnis /etc/wiregurd/ vom Client kopiert.
Wenn man über den VPN Tunnel eine Verbindung in andere Netze aufbauen möchte, muss die Portweiterleitung (IP Forwarding) eingeschaltet sein. Die Werte sind in der Konfiguration von Wireguard schon gesetzt.
echo "net.ipv4.ip_forward=1"|sudo tee -a /etc/sysctl.d/wireguard.conf
echo "net.ipv6.conf.all.forwarding=1"|sudo tee -a /etc/sysctl.d/wireguard.conf
Die Einstellungen können im Kernel sofort aktiviert werden.
sudo sysctl -p /etc/sysctl.d/wireguard.conf
Damit der Tunnel automatisch nach einem Neustart aktiviert wird, müssen wir ihn in Systemd aktivieren.
sudo systemctl enable wg-quick@wg0
sudo systemctl status wg-quick@wg0
11. Januar 2021 — 22:45
Wonderful post! We will be linking to this particularly great content on our site. Keep up the great writing. Nerta Ricky Okubo
12. März 2021 — 20:12
Hallo Super Arbeit
wie bekomme ich mehrer verbindungen z.b iphone und ipad ??