Wireguard unter Linux einrichten
WireGuard ist ein modernes und einfach zu konfigurierendes VPN-Tool. In diesem Tutorial zeige ich Schritt für Schritt, wie WireGuard auf einem Linux-Server installiert und konfiguriert wird.
Vorbereitungen Link zu Überschrift
Zunächst müssen wir sicherstellen, dass das System aktuell ist und alle benötigten Pakete verfügbar sind:
sudo apt update && sudo apt upgrade
Ebenfalls sollte nftables und fail2ban bereits eingerichtet sein.
Installation von WireGuard Link zu Überschrift
WireGuard ist in den meisten Linux-Distributionen direkt über die Paketverwaltung verfügbar. Die Installation erfolgt einfach mit:
sudo apt install wireguard
Nun ist WireGuard auf dem System installiert und wir können mit der Konfiguration fortfahren.
Schlüssel erstellen Link zu Überschrift
WireGuard verwendet ein Schlüsselpaar (private und öffentliche Schlüssel) für die Authentifizierung. Die Erstellung erfolgt mit:
wg genkey | tee server_private_key | wg pubkey > server_public_key
Der private Schlüssel wird in der Datei server_private_key gespeichert und der öffentliche Schlüssel in server_public_key.
Konfiguration der wg0-Schnittstelle Link zu Überschrift
Die Hauptkonfiguration von WireGuard erfolgt in der Datei /etc/wireguard/wg0.conf. Diese Datei enthält die Einstellungen für das Interface, die IP-Adressen und die Schlüssel:
sudo vim /etc/wireguard/wg0.conf
Die Datei sollte folgenden Inhalt haben:
[Interface]
Address = 10.10.10.1/24
ListenPort = 51820
PrivateKey = <<privatekey>>
Ersetze «privatekey» durch den Inhalt der Datei server_private_key, den du zuvor erstellt hast.
Firewall-Konfiguration mit nftables Link zu Überschrift
Um sicherzustellen, dass der Traffic korrekt geroutet und gesichert wird, passen wir die nftables-Konfiguration an. Erstelle oder bearbeite die Datei /etc/nftables.conf:
sudo vim /etc/nftables.conf
Die Konfiguration könnte wie folgt aussehen:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority filter; policy drop;
ct state { established, related } counter accept
ct state invalid drop
iifname "lo" counter accept
ip protocol icmp counter accept
tcp dport { 443, 80 } counter accept comment "HTTP/S"
tcp dport {22} counter accept comment "SSH"
udp dport {51820} counter accept comment "Allow VPN"
}
chain forward {
type filter hook forward priority filter; policy drop;
iifname "wg0" oifname "eth0" ct state { established, related, new } counter accept
iifname "eth0" oifname "wg0" ct state { established, related } counter accept
}
chain output {
type filter hook output priority filter; policy accept;
tcp dport 25 counter drop comment "Drop SMTP over port 25"
}
}
table inet nat {
chain POSTROUTING {
type nat hook postrouting priority srcnat; policy accept;
oifname "eth0" ip saddr 10.10.10.0/24 counter masquerade comment "Masquerade VPN traffic"
}
}
Diese Regeln ermöglichen den VPN-Traffic und leiten ihn korrekt über das Interface eth0. Bei dieser Config handelt es sich um eine Erweiterung der Konfiguration aus einem bestehenden Tutorial, nicht alle Einstellungen sind zwigend notwendig.
Aktivieren und Starten des WireGuard-Dienstes Link zu Überschrift
Um sicherzustellen, dass WireGuard bei jedem Systemstart aktiviert wird, aktivieren wir den Dienst:
sudo systemctl enable wg-quick@wg0.service
Starte den Dienst anschließend:
sudo systemctl start wg-quick@wg0.service
IP-Forwarding aktivieren Link zu Überschrift
Damit der Traffic von WireGuard über das Netzwerk weitergeleitet wird, muss IP-Forwarding aktiviert sein. Dies wird in der Datei /etc/sysctl.conf konfiguriert:
sudo vim /etc/sysctl.conf
Füge die folgende Zeile hinzu oder entferne das Kommentarzeichen, falls die Zeile bereits existiert:
net.ipv4.ip_forward=1
Anschließend laden wir die geänderte Konfiguration:
sudo sysctl -p
Neustarten der Firewall Link zu Überschrift
Um die Änderungen an nftables wirksam zu machen, starten wir die Firewall neu:
sudo systemctl restart nftables
Einrichten eines neuen Peers Link zu Überschrift
Um ein Gerät mit dem Server zu verbinden, muss WireGuard auch auf dem Server und Client installiert werden und ein Peer in beiden Configs hinterlegt werden.
Zu Beginn muss WireGuard angehalten werden:
sudo systemctl stop wg-quick@wg0.service
Jetzt kann die Config bearbeitet werden:
sudo vim /etc/wireguard/wg0.conf
Das Interface muss um einen Peer erweitert werden Es können so viele Peers hinzugefügt werden, wie der IP-Bereich ermöglicht.
[Interface]
Address = 10.10.10.1/24
ListenPort = 51820
PrivateKey = <<private_key>>
[Peer]
PublicKey = <<client_public_key>>
AllowedIPs = 10.10.10.2/32
Auf der Client-Seite sieht die Config folgendermaßen aus:
[Interface]
PrivateKey = <<client_private_key>>
Address = 10.10.10.2/24
DNS = 1.1.1.1
[Peer]
PublicKey = <<server_public_key>>
AllowedIPs = 10.10.10.1/32, 0.0.0.0/0
Endpoint = <<server_ip:port>>
PersistentKeepalive = 25
Nun kann der Dienst wieder gestartet werden:
sudo systemctl start wg-quick@wg0.service
Mit diesen Schritten ist WireGuard auf einem Linux-Server eingerichtet und konfiguriert.