Wireguard Server for Roadwarrior: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(→Server) |
|||
| (15 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | =Configuration= | + | = Ziel des Setups = |
| − | ==Schlüsselgenerierung== | + | |
| + | * Der Roadwarrior-Client (z. B. Android) soll per WireGuard mit dem Server verbunden werden. | ||
| + | * Es sollen **ausschließlich die beiden internen Netze** '''172.16.1xx.0/24''' und '''172.17.1xx.0/24''' über das VPN erreichbar sein. | ||
| + | * Kein Full Tunnel! Internetverkehr des Clients soll **nicht** über das VPN geleitet werden. | ||
| + | |||
| + | = IP-Adressübersicht = | ||
| + | |||
| + | {| class="wikitable" | ||
| + | ! Komponente !! Rolle !! IP-Adresse / Netz !! Beschreibung | ||
| + | |- | ||
| + | | '''WireGuard-Server''' || VPN-Endpunkt || 192.168.hs.2xx || Öffentliche IP (oder private bei NAT) des Servers, über die sich der Client verbindet | ||
| + | |- | ||
| + | | '''WireGuard-Interface (Server)''' || Transit-IP || 10.79.254.1/24 || Interne Tunneladresse des Servers (wg0) | ||
| + | |- | ||
| + | | '''WireGuard-Interface (Client)''' || Transit-IP || 10.79.254.11/24 || Tunneladresse des Roadwarrior-Clients | ||
| + | |- | ||
| + | | '''Clientnetz A''' || Internes Zielnetz || 172.16.1xx.0/24 || Netz, auf das der Client über VPN zugreifen darf | ||
| + | |- | ||
| + | | '''Clientnetz B''' || Internes Zielnetz || 172.17.1xx.0/24 || Zweites Netz, auf das der Client Zugriff benötigt | ||
| + | |- | ||
| + | | '''DNS (optional)''' || Resolver || 8.8.8.8 || Öffentlicher DNS, den der Client über VPN nutzen kann | ||
| + | |} | ||
| + | |||
| + | = Configuration = | ||
| + | *PORT = 44711 | ||
| + | *VPNSERVER = 192.168.y.2xx | ||
| + | *SERVER = 172.17.2xx.0/24 | ||
| + | *LAN = 172.16.2xx.0/24 | ||
| + | *TRANSIT = 10.79.254.1/24 | ||
| + | |||
| + | == Schlüsselgenerierung == | ||
*S_PRIVKEY=$(wg genkey) | *S_PRIVKEY=$(wg genkey) | ||
| − | *S_PUBKEY=$(echo $ | + | *S_PUBKEY=$(echo $S_PRIVKEY | wg pubkey) |
*C_PRIVKEY=$(wg genkey) | *C_PRIVKEY=$(wg genkey) | ||
| − | *C_PUBKEY=$(echo $ | + | *C_PUBKEY=$(echo $C_PRIVKEY | wg pubkey) |
| + | *PSK=$(wg genpsk) | ||
| − | == | + | == VPNServer == |
| − | *cat /etc/wireguard/ | + | *cat <<HERE > /etc/wireguard/wg0.conf |
<pre> | <pre> | ||
[Interface] | [Interface] | ||
| − | Address = | + | Address = 10.79.254.1/24 |
| + | ListenPort = 44711 | ||
PrivateKey = $S_PRIVKEY | PrivateKey = $S_PRIVKEY | ||
| − | |||
| − | |||
[Peer] | [Peer] | ||
PublicKey = $C_PUBKEY | PublicKey = $C_PUBKEY | ||
| − | + | PresharedKey = $PSK | |
AllowedIPs = 10.79.254.11/32 | AllowedIPs = 10.79.254.11/32 | ||
HERE | HERE | ||
</pre> | </pre> | ||
| − | =Clients= | + | = Clients = |
| − | ==Android== | + | |
| − | ==On server== | + | == Android == |
| − | ; | + | ; Installiere die App ''WireGuard'' und nutze den folgenden QR-Code |
| − | *mkdir /etc/wireguard/client1 | + | |
| + | == On server == | ||
| + | ; Generiere die Konfigurationsdatei des Clients direkt auf dem Server | ||
| + | |||
| + | *mkdir -p /etc/wireguard/client1 | ||
*cd /etc/wireguard/client1 | *cd /etc/wireguard/client1 | ||
| − | * | + | *cat <<HERE > client1.conf |
| − | |||
| − | |||
<pre> | <pre> | ||
[Interface] | [Interface] | ||
Address = 10.79.254.11/24 | Address = 10.79.254.11/24 | ||
| − | PrivateKey = | + | PrivateKey = $C_PRIVKEY |
DNS = 8.8.8.8 | DNS = 8.8.8.8 | ||
[Peer] | [Peer] | ||
| − | PublicKey = | + | PublicKey = $S_PUBKEY |
| − | AllowedIPs = | + | PresharedKey = $PSK |
| − | Endpoint = | + | AllowedIPs = 172.16.2xx.0/24, 172.17.2xx.0/24 |
| + | Endpoint = 192.168.y.1xx:44711 | ||
| + | PersistentKeepalive = 25 | ||
| + | HERE | ||
</pre> | </pre> | ||
| − | ; | + | |
| + | = Hier geht es mit QR Code = | ||
| + | ; Generiere den QR-Code | ||
*qrencode -t utf8 < client1.conf | *qrencode -t utf8 < client1.conf | ||
| − | =Links= | + | = Weiterleitung und Zugriff auf interne Netze = |
| + | ; Auf dem Server Routing aktivieren | ||
| + | *echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf | ||
| + | *sysctl -p | ||
| + | |||
| + | ; Zugriff auf interne Netze erlauben (iptables) | ||
| + | *iptables -A FORWARD -i wg0 -s 10.79.254.11 -d 172.16.2xx.0/24 -j ACCEPT | ||
| + | *iptables -A FORWARD -i wg0 -s 10.79.254.11 -d 172.17.2xx.0/24 -j ACCEPT | ||
| + | |||
| + | = Hinweis zur Routing-Konfiguration im Zielnetz = | ||
| + | * Die internen Gateways der Netze '''172.16.2xx.0/24''' und '''172.17.2xx.0/24''' müssen wissen, dass der Rückweg zu '''10.79.254.0/24''' über den WireGuard-Server läuft. | ||
| + | * Entweder über: | ||
| + | ** Statische Route | ||
| + | ** Oder indem der WG-Server Default Gateway für diese Netze ist | ||
| + | =Rebootfähig machen= | ||
| + | *systemctl enable wg-quick@wg0 | ||
| + | |||
| + | = Links = | ||
*https://blog.oxplot.com/wireguard-vpn-on-android/ | *https://blog.oxplot.com/wireguard-vpn-on-android/ | ||
*https://wiki.debian.org/Wireguard | *https://wiki.debian.org/Wireguard | ||
Aktuelle Version vom 30. Juni 2025, 14:25 Uhr
Ziel des Setups
- Der Roadwarrior-Client (z. B. Android) soll per WireGuard mit dem Server verbunden werden.
- Es sollen **ausschließlich die beiden internen Netze** 172.16.1xx.0/24 und 172.17.1xx.0/24 über das VPN erreichbar sein.
- Kein Full Tunnel! Internetverkehr des Clients soll **nicht** über das VPN geleitet werden.
IP-Adressübersicht
| Komponente | Rolle | IP-Adresse / Netz | Beschreibung |
|---|---|---|---|
| WireGuard-Server | VPN-Endpunkt | 192.168.hs.2xx | Öffentliche IP (oder private bei NAT) des Servers, über die sich der Client verbindet |
| WireGuard-Interface (Server) | Transit-IP | 10.79.254.1/24 | Interne Tunneladresse des Servers (wg0) |
| WireGuard-Interface (Client) | Transit-IP | 10.79.254.11/24 | Tunneladresse des Roadwarrior-Clients |
| Clientnetz A | Internes Zielnetz | 172.16.1xx.0/24 | Netz, auf das der Client über VPN zugreifen darf |
| Clientnetz B | Internes Zielnetz | 172.17.1xx.0/24 | Zweites Netz, auf das der Client Zugriff benötigt |
| DNS (optional) | Resolver | 8.8.8.8 | Öffentlicher DNS, den der Client über VPN nutzen kann |
Configuration
- PORT = 44711
- VPNSERVER = 192.168.y.2xx
- SERVER = 172.17.2xx.0/24
- LAN = 172.16.2xx.0/24
- TRANSIT = 10.79.254.1/24
Schlüsselgenerierung
- S_PRIVKEY=$(wg genkey)
- S_PUBKEY=$(echo $S_PRIVKEY | wg pubkey)
- C_PRIVKEY=$(wg genkey)
- C_PUBKEY=$(echo $C_PRIVKEY | wg pubkey)
- PSK=$(wg genpsk)
VPNServer
- cat <<HERE > /etc/wireguard/wg0.conf
[Interface] Address = 10.79.254.1/24 ListenPort = 44711 PrivateKey = $S_PRIVKEY [Peer] PublicKey = $C_PUBKEY PresharedKey = $PSK AllowedIPs = 10.79.254.11/32 HERE
Clients
Android
- Installiere die App WireGuard und nutze den folgenden QR-Code
On server
- Generiere die Konfigurationsdatei des Clients direkt auf dem Server
- mkdir -p /etc/wireguard/client1
- cd /etc/wireguard/client1
- cat <<HERE > client1.conf
[Interface] Address = 10.79.254.11/24 PrivateKey = $C_PRIVKEY DNS = 8.8.8.8 [Peer] PublicKey = $S_PUBKEY PresharedKey = $PSK AllowedIPs = 172.16.2xx.0/24, 172.17.2xx.0/24 Endpoint = 192.168.y.1xx:44711 PersistentKeepalive = 25 HERE
Hier geht es mit QR Code
- Generiere den QR-Code
- qrencode -t utf8 < client1.conf
Weiterleitung und Zugriff auf interne Netze
- Auf dem Server Routing aktivieren
- echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
- sysctl -p
- Zugriff auf interne Netze erlauben (iptables)
- iptables -A FORWARD -i wg0 -s 10.79.254.11 -d 172.16.2xx.0/24 -j ACCEPT
- iptables -A FORWARD -i wg0 -s 10.79.254.11 -d 172.17.2xx.0/24 -j ACCEPT
Hinweis zur Routing-Konfiguration im Zielnetz
- Die internen Gateways der Netze 172.16.2xx.0/24 und 172.17.2xx.0/24 müssen wissen, dass der Rückweg zu 10.79.254.0/24 über den WireGuard-Server läuft.
- Entweder über:
- Statische Route
- Oder indem der WG-Server Default Gateway für diese Netze ist
Rebootfähig machen
- systemctl enable wg-quick@wg0