diff --git a/content/post/wireguard-vps-android.md b/content/post/wireguard-vps-android.md index 9efc258..f25dad8 100644 --- a/content/post/wireguard-vps-android.md +++ b/content/post/wireguard-vps-android.md @@ -8,3 +8,111 @@ description = "Setup Wireguard Server and connet" showFullContent = false draft = true +++ + +install +https://www.wireguard.com/install/ + +look at +https://www.wireguard.com/quickstart/ + +use config from ct (heise) +https://www.heise.de/select/ct/2019/5/1551091519824850 + + +VPN-Server aufsetzen + +Die WireGuard-Schnittstelle auf dem VPN-Gateway gibt die in ihren Tunneln verwendeten IP-Adressen vor. Diese dürfen sich wie üblich nicht mit lokal verwendeten, privaten IPv4-Blöcken (RFC 1918) überschneiden. In den folgenden Beispielen nutzen wir die für Carrier-Grade-NAT reservierten privaten IPv4-Adressen (100.64.0.0/10, RFC 6598). So können die Tunnel-IPs nie mit Adressbereichen kollidieren, die ein mobiler Peer beispielsweise in fremden WLANs zugeteilt bekommt (meist 192.168.x.y). + + + echo "Address = 100.64.0.1/10" >>: + + + ./etc/wireguard/wg0.conf + +Der öffentliche Schlüssel jedes Clients kommt zusammen mit seiner vom Admin festgelegten individuellen Tunnel-IP-Adresse in einen [Peer]-Abschnitt der Konfigurationsdatei: + + + cat << EOF >> /etc/wireguard/wg0.conf + + + [Peer] + + + PublicKey = + + + AllowedIPs = 100.64.0.101/32 + + + EOF + +Nachdem alle Peers angelegt sind, ist die Server-Konfiguration komplett. Entfernen Sie die Schnittstelle wg0 und starten Sie sie wieder mit wg-quick, damit die neuen Einstellungen greifen: + + + ip link del wg0 + + + wg-quick up wg0 + + + wg show + +Wenn Clients über den Tunnel auch ins Internet gelangen können sollen, muss der VPN-Server Masquerading-NAT anwenden, wofür bei iptables-Firewalls eine zusätzliche Zeile genügt: + + + iptables -t nat -A POSTROUTING -s : + + + .100.64.0.0/10 -o eth0 -j MASQUERADE + +Die Entsprechung für firewalld könnte so aussehen: + + + firewall-cmd --zone=external --add-: + + + .masquerade --permanent + + + firewall-cmd --reload +Client-Seite + +WireGuard-Peers erhalten ihre Tunneladresse, den öffentlichen Schlüssel des Gegenüber – hier der VPN-Server – und weitere Netzwerkparameter (im Tunnel erlaubte Adressbereiche, DNS-Name oder IP-Adresse des Peers, verwendeter UDP-Port) aus ihrer wie folgt erweiterten Konfigurationsdatei: + + + cat << EOF >> /etc/wireguard/wg0.conf + + + Address = 100.64.0.101/32 + + + [Peer] + + + PublicKey = + + + AllowedIPs = 0.0.0.0/0 + + + Endpoint = wg.example.org: + + + EOF + +Damit ist die Peer-Konfiguration vollständig. Entfernen Sie die Schnittstelle und starten Sie sie neu: + + + ip link del wg0 + + + wg-quick up wg0 + + + wg show + +Können die Peers übers Internet kommunizieren, dann zeigt der letzte Befehl die bestehende WireGuard-Verbindung an. Sie können sie mit wg-quick [up|down] wg0 ad-hoc auf- und abbauen. + +Für permanente Verbindungen lässt sich WireGuard bei den meisten Distributionen ins Startup-System einbinden. Ist der Tunnel heruntergefahren, erreichen Sie das bei einem SystemD-Linux mit systemctl enable --now wg-quick@wg0. Ob es geklappt hat, zeigt systemctl status wg-quick@wg0. + +WireGuard ist noch jung. Aber seine Popularität lässt sich schon jetzt an der Unterstützung anderer Betriebssysteme ablesen. Die Portierung fällt leicht, weil es das Protokoll neben der Kernel-Version auch in einer Go-Implementierung gibt, die das TUN/TAP-Interface anderer Betriebssysteme nutzt und als normales Programm läuft. Sie ist so zwar langsamer und energieintensiver als die native Linux-Kernel-Version, taugt aber auf Smartphones und Tablets problemlos zum Testen von WireGuard.