Dynamisk DNS och Wireguard

2020-10-24 13:18 Wireguard

När Wireguard startar slår den upp domännamnet som den ska ansluta mot. Detta händer bara en gång vilket gör att om man har en peer med dynamisk DNS som byter IP-nummer kommer inte Wireguard att börja arbeta mot det nya IP-nummret.

För att komma runt detta följer det med ett script i wireguard-tools som finns på både debian-baserade system och centos-liknande system. Scriptet heter reresolve-dns.sh och körs med ett interfacenamn som argument.

/usr/share/doc/wireguard-tools/examples/reresolve-dns/reresolve-dns.sh wg0

Med hjälp av timers i Systemd så kan vi köra detta script så ofta som det passar.

# /etc/systemd/system/wireguard_reresolve-dns.service
[Unit]
Description=Reresolve DNS of all WireGuard endpoints
Wants=network-online.target
After=network-online.target

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'for i in /etc/wireguard/*.conf; do /usr/share/doc/wireguard-tools/examples/reresolve-dns/reresolve-dns.sh "$i"; done'
# /etc/systemd/system/wireguard_reresolve-dns.timer
[Unit]
Description=Periodically reresolve DNS of all WireGuard endpoints

[Timer]
OnCalendar=daily

[Install]
WantedBy=timers.target

Sedan behöver du aktivera timern

[root@workstation ~]# systemctl enable wireguard_reresolve-dns.timer
Created symlink /etc/systemd/system/timers.target.wants/wireguard_reresolve-dns.timer → /etc/systemd/system/wireguard_reresolve-dns.timer.