Seite wählen

NETWAYS Blog

Wireguard mit dynamischen DNS Namen

Seit einiger Zeit bin ich großer Fan von Wireguard als VPN Lösung um meine Server und Notebooks zu verbinden. Auch Patrick hatte schon mal über DNS Privacy mit Wireguard geschrieben.

Dabei ist mir ein kleines Problem begegnet, Wireguard hat kein automatisches Handling wenn sich Endpoint Adressen über DNS ändern. In meinem Fall verbinde ich:

  • Server im Rechenzentrum mit fester IP Adresse
  • Notebook irgendwo unterwegs, muss sich zu allen anderen Verbinden
  • Server zuhause, Verbindung nur über DynDNS möglich

Auf dem Bild kann man in etwa die aufgebauten Verbindungen erkennen, nun besteht das Hauptproblem darin, dass der Server zuhause nur über die Auflösung des dynamischen DNS Namens erreichbar ist. Wireguard löst DNS Namen nur beim laden der Konfiguration auf. Sollte sich die IP Adresse ändern funktioniert die Verbindung nicht mehr.

Ein Beispiel meiner Konfiguration:

[Interface]
# Notebook
Address = 10.99.0.3/24
PrivateKey = BASE64
ListenPort = 51820

[Peer]
# Server at home
PublicKey = BASE64
AllowedIPs = 10.99.0.1/32
Endpoint = home.example.com:51820

[Peer]
# hosted VM
PublicKey = BASE64
AllowedIPs = 10.99.0.2/32
Endpoint = server.example.com:51820

#[Peer]
## Notebook Entry on other nodes
#PublicKey = BASE64
#AllowedIPs = 10.99.0.3/32
## No endpoint defined for this peer

Nachdem Wireguard noch keine eingebaute Lösung dafür hat, braucht man ein Script, welches DNS Namen neu auflöst und dann anwendet. Ich verwende das Beispielskript reresolve-dns.sh aus den contrib Skripten.

Die Installation ist relativ einfach:

curl -LsS -o /usr/local/bin/wireguard-reresolve-dns https://github.com/WireGuard/wireguard-tools/raw/master/contrib/reresolve-dns/reresolve-dns.sh
chmod 0755 /usr/local/bin/wireguard-reresolve-dns

Im Anschluss kann das Skript manuell oder per Cron (als root) ausgeführt werden:

wireguard-reresolve-dns wg0

Oder was ich bevorzuge, als Systemd Service und Timer wie folgt.

/etc/systemd/system/wireguard-reresolve-dns.service

[Unit]
Description=Wireguard Re-Resolve DNS of endpoints

[Service]
Type=oneshot
ExecStart=/usr/local/bin/wireguard-reresolve-dns wg0

/etc/systemd/system/wireguard-reresolve-dns.timer

[Unit]
Description=Runs Wireguard Re-Resolve DNS every 5 Minutes

[Timer]
OnUnitActiveSec=300s
OnActiveSec=300s

[Install]
WantedBy=multi-user.target

Anschließend muss man den Timer nur aktivieren und kann den Status des Service jederzeit checken:

# systemctl daemon-reload
# systemctl enable wireguard-reresolve-dns.timer
# systemctl status wireguard-reresolve-dns.timer
* wireguard-reresolve-dns.timer - Runs Wireguard Re-Resolve DNS every 5 Minutes
Loaded: loaded (/etc/systemd/system/wireguard-reresolve-dns.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Thu 2021-12-30 15:40:09 CET; 6 days ago
Trigger: Wed 2022-01-05 15:50:48 CET; 3min 1s left
Triggers: * wireguard-reresolve-dns.service

Dec 30 15:40:09 notebook systemd[1]: Started Runs Wireguard Re-Resolve DNS every 5 Minutes.

# systemctl status wireguard-reresolve-dns.service
* wireguard-reresolve-dns.service - Wireguard Re-Resolve DNS of endpoints
Loaded: loaded (/etc/systemd/system/wireguard-reresolve-dns.service; static)
Active: inactive (dead) since Wed 2022-01-05 15:45:48 CET; 2min 1s ago
TriggeredBy: * wireguard-reresolve-dns.timer
Process: 3600033 ExecStart=/usr/local/bin/wireguard-reresolve-dns wg0 (code=exited, status=0/SUCCESS)
Main PID: 3600033 (code=exited, status=0/SUCCESS)
CPU: 17ms

Jan 05 15:45:48 notebook systemd[1]: Starting Wireguard Re-Resolve DNS of endpoints...
Jan 05 15:45:48 notebook systemd[1]: wireguard-reresolve-dns.service: Succeeded.
Jan 05 15:45:48 notebook systemd[1]: Finished Wireguard Re-Resolve DNS of endpoints.

Ich wünsche viel Spaß beim Ausprobieren.

Wer gerne automatisiert, dem kann ich die Ansible Rolle von githubixx empfehlen, so spart man sich das müssige Erstellen und Verteilen von Keys. Leider habe ich noch keine fertige Rolle für reresolve DNS. 😉️

Neu im NETWAYS-Online-Store: 2N UMTS Router

Kein DSL verfügbar? Die Problematik ist immer die gleiche: Einen Solarpark, ein Lager, ein Büro oder einfach nur ein Standort ohne kabelgebundenen Internetanschluss mit Internet zu versorgen  ist nicht immer einfach. Der Breitbandkabelausbau in Deutschland ist zwar in den letzten Jahren gut voran gekommen, jedoch sind noch lange nicht alle weißen Flecken auf der Karte abgedeckt.
Wir haben hierzu für unsere Kunden eine günstige und wirklich bequeme Lösung gefunden. Unsere 2N EasyRoute UMTS-Router.
Diese Router sind nicht abhängig von Breitbandkabelanschlüssen, das einzige was hierzu benötigt wird, ist eine SIM-Karte und ein entsprechenden Vertrag, welcher ein mobiles Internet bereitstellt.
Schon kann die Einrichtung los gehen: Karte rein, Router an Strom und Netzwerk anschließen und mittels Browser konfigurieren. Sobald der Router dann in das eigene Netzwerk eingebunden ist, können alle Geräte im Netzwerk über den Router auf das Internet zugreifen. Darüber hinaus ist der Zugriff via WLAN auf das Internet dann auch möglich.
Wer gerne am entfernten Standort auch noch ein Telefon und/oder Fax betreiben möchte, geht mit den 2N Routern auch nicht leer aus, unser Produkt 2N EasyRoute ‐ Quadband UMTS HSDPA 7,2 Mbps + HSUPA 5,76 Mbps inkl. FAX – UMTS-Router bringt genau diese Funktionen mit, als ob ein normaler Telefonanschluss vorhanden wäre.
Ein großer Vorteil dieser Geräte ist auch die Unterstützung von DynDNS-Diensten, sowie die Möglichkeit über das Webfrontend SMS zu verschicken.
Wir haben 3 dieser Router in unser Sortiment aufgenommen, diese Unterscheiden lediglich in der Funktionalität mit dem Fax bzw. der Dateiübertragung via HSDPA und HSUPA. Auf die 2N Geräte erhalten Sie in unserem Shop 2 Jahre Garantie.
Eine Liste der ausführlichen Fähigkeiten der 2N-Artikel finden Sie bei uns im Shop