Pi config
Wireguard Resolve DNS
[Bearbeiten | Quelltext bearbeiten]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 start 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
Damit der wireguard-reresolve-dns.service wg0 erfolgreich seine Aufgabe erfüllt, muss ein erreichbarer öffentlicher DNS (z.B. 8.8.4.4) vorhanden sein, damit der Endpoint in der wg0, z.B. apd.spdns.de:51194, aufgelöst werden kann.