homepage/content/post/wireguard-vps-android.md
2019-07-07 02:21:24 +02:00

82 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

+++
title = "Wireguard with Android & VPS"
date = 2019-07-07T02:02:05+02:00
author = "MH"
cover = ""
tags = ["VPN", "Wireguard", "Android", "Setup"]
description = "Setup Wireguard Server and connet with Android"
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
Gateway gibt die in ihren Tunneln verwendeten IP-Adressen vor.
Diese nicht 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).
echo '[Interface]' > /etc/wireguard/wg0.conf
echo "PrivateKey = $(wg genkey)" >> /etc/wireguard/wg0.conf
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 = <Client-Key>
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
# 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 = <Pub-Key-des-VPN-Servers>
AllowedIPs = 0.0.0.0/0
Endpoint = wg.example.org:<Port>
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.