WireGuard-Heimzugriff: Server, Peer, Firewall und Tunnelprüfung
Diese Seite prüft:
- das Erstellen einer WireGuard-Server-Schnittstelle
wg0unter OpenWrt; - das Hinzufügen eines Client-Peers;
- das Einordnen von
wg0in die LAN-Firewall-Zone; - Handshake, Ping auf die Tunnel-IP und LuCI über den Tunnel.
Sie prüft nicht:
- öffentliche UDP-Portweiterleitung/Firewall am WAN;
- DDNS/Domain;
- Roaming mit Smartphone-/Windows-Clients;
- Weiterleitung/NAT in das gesamte LAN.
Diese Punkte hängen von der Einsatzumgebung ab; dieser LAN-Test ersetzt sie nicht.
Topologie
Abschnitt betitelt „Topologie“Client 192.168.1.251 │ vmbr5 (Test-LAN) ▼OpenWrt VM 200 192.168.1.2 wg0 10.10.0.1/24, UDP 51820 │ └── Tunnel 10.10.0.0/24 Client wg0 10.10.0.2/24Beim echten Heimzugriff befindet sich der Client im Internet; am OpenWrt-WAN muss UDP 51820 weitergeleitet/erlaubt sein. Dieser Test findet nur auf der LAN-Seite statt.
Vorbereitung
Abschnitt betitelt „Vorbereitung“apk add wireguard-tools kmod-wireguardwg --versioncat /proc/modules | grep wireguardIm Test: wireguard-tools v1.0.20260223; Modul wireguard geladen.
Erwartetwg ist vorhanden und das Modul wireguard ist geladen.
umask 077wg genkey > /tmp/wg-server.keywg pubkey < /tmp/wg-server.key > /tmp/wg-server.pubcat /tmp/wg-server.pub # only the public key goes to the clientDer Client erzeugt ebenfalls sein eigenes Schlüsselpaar; senden Sie dessen privaten Schlüssel niemals an den Server. Der Server benötigt nur den öffentlichen Schlüssel des Clients.
ErwartetDer private Schlüssel bleibt auf dem Gerät; der öffentliche Schlüssel geht an den Client.
Server konfigurieren
Abschnitt betitelt „Server konfigurieren“uci set network.wg0=interfaceuci set network.wg0.proto='wireguard'uci set network.wg0.private_key='<server-private-key>'uci set network.wg0.listen_port='51820'uci set network.wg0.addresses='10.10.0.1/24'uci set network.wg0.auto='1'
uci set network.wg0_client=wireguard_wg0uci set network.wg0_client.public_key='<client-public-key>'uci set network.wg0_client.allowed_ips='10.10.0.2/32'uci set network.wg0_client.persistent_keepalive='25'
uci commit network/etc/init.d/network restartDie Benennung ist wichtig:
- Schnittstellenabschnitt
wg0, Peer-Typwireguard_wg0; die Suffixe müssen übereinstimmen; - im Test führte die Benennung der Schnittstelle als
wgdazu, dass netifdproto: nonemeldete und das Gerätwg0fehlte; nach der Umbenennung inwg0funktionierte es. Verwenden Sie wg0.
Prüfen:
wg showip -4 addr show wg0ubus call network.interface.wg0 statusErwartetnetifd erkennt proto=wireguard und wg0 hat seine Adresse.
uci show firewall | grep -E "zone.*name|zone.*network"uci add_list firewall.@zone[0].network='wg0'uci commit firewall/etc/init.d/firewall reload@zone[0] war im Test die LAN-Zone; Ihr Index kann abweichen – suchen Sie den Abschnitt mit name='lan'.
Nach dem Hinzufügen von wg0 zum LAN konnte der Client 10.10.0.1 pingen und LuCI erreichen.
ErwartetUDP 51820 ist erreichbar und Tunnel-IPs können kommunizieren.
Minimale Client-Prüfung
Abschnitt betitelt „Minimale Client-Prüfung“Die Client-Konfiguration steht in 022. Auf dem Server:
wg showNachdem der Client den Handshake durchgeführt hat, sollte der Server Folgendes anzeigen:
peer: <client-public-key> endpoint: 192.168.1.251:44421 allowed ips: 10.10.0.2/32 latest handshake: ... transfer: ...Dieser Test-Client:
- Handshake vor 3 Sekunden;
transfer 124 B received, 180 B sent;- Ping auf
10.10.0.14/4; - HTTP
http://10.10.0.1/lieferte LuCI.
Was für ein echtes WAN noch fehlt
Abschnitt betitelt „Was für ein echtes WAN noch fehlt“- Öffentliche IP/Portweiterleitung: WAN-UDP 51820 → OpenWrt;
- die WAN-Eingangs-Firewall erlaubt dieses UDP;
- DDNS/fester Hostname;
- der
Endpointdes Clients verwendet die öffentliche Adresse, nicht 192.168.1.2; - für den Zugriff auf das gesamte LAN müssen
allowed_ipsdes Server-Peers undAllowedIPsdes Clients das LAN-Präfix enthalten, dazu Rückrouting/NAT; - machen Sie aus „Tunnel-IP antwortet auf Ping“ nicht „das gesamte Heim-LAN ist erreichbar“.
Häufige Fehler
Abschnitt betitelt „Häufige Fehler“wg0 fehlt / proto none
Abschnitt betitelt „wg0 fehlt / proto none“- Name des Schnittstellenabschnitts und Suffix des Peer-Typs stimmen nicht überein;
wireguard-tools/kmod-wireguardfehlen;- das Netzwerk wurde nicht neu gestartet;
- prüfen Sie
wg show,ubus status,logread.
Kein Handshake
Abschnitt betitelt „Kein Handshake“- öffentliche Schlüssel von Client und Server vertauscht;
- falscher Endpoint/Port;
- die Firewall erlaubt UDP nicht;
- Berechtigungen/Inhalt des privaten Schlüssels falsch;
- WireGuard benötigt für Handshakes keine Zeitsynchronisation, aber ein falscher Schlüssel schlägt trotzdem fehl.
Tunnel-Ping schlägt fehl
Abschnitt betitelt „Tunnel-Ping schlägt fehl“allowed_ipsenthält die Tunnel-IP des Peers nicht;- die Schnittstelle hat keine Adresse / ist down;
- Firewall-Zone;
- die Client-Route leitet den Endpoint selbst in den Tunnel (Schleife).
Tunnel-IP antwortet, LAN nicht erreichbar
Abschnitt betitelt „Tunnel-IP antwortet, LAN nicht erreichbar“- dem Client-AllowedIPs fehlt das LAN-Präfix;
- dem Server fehlen Weiterleitung/NAT/Rückroute;
- Firewall-Weiterleitung nicht erlaubt;
- setzen Sie einen funktionierenden Tunnel nicht mit einem funktionierenden LAN gleich.
E2-Testlauf (2026-10-20)
Abschnitt betitelt „E2-Testlauf (2026-10-20)“- Umgebung: OpenWrt 25.12.6 x86 VM 200;
wg010.10.0.1/24, UDP 51820; PVE-netns-Client10.10.0.2/24. - Server:
wg showlistete den Peer auf, der Handshake gelang, Transfer 1,47 KiB/1,90 KiB;wg0aktiv. - Client: Handshake, Tunnel-Ping 4/4, HTTP 200 (LuCI).
- Nicht getestet: WAN-Portweiterleitung/-Firewall, DDNS, Smartphone/Windows, LAN-Weiterleitung, NAT/Rückroute.
- Rezept:
tests/recipes/wireguard-server-25.12.md.
Quellen und Review
Abschnitt betitelt „Quellen und Review“- Dies ist E2 partiell: LAN-seitiger Server und Tunnel wurden getestet; echtes WAN, mobile Clients und LAN-Weiterleitung nicht.
- Private Schlüssel bleiben auf den Geräten; legen Sie sie niemals im Repository, in Screenshots oder im Chat ab.
- Es gab keinen unabhängigen Reviewer; die Schlussfolgerungen gelten nur für diese VM-/netns-Umgebung.
Quellen
Unabhängige OpenWrt-Notizen. Jede Seite nennt Firmware, Gerät, Paketmanager und den Rückweg.
Symbole: Solar by 480 Design, CC BY 4.0