fix(wireguard): resolve endpoint hostname to IP before adding route

ip route does not accept hostnames. Use dig to resolve
vpn.leeworks.dev to an IP address in postUp/preDown hooks.
This commit is contained in:
2026-04-15 19:00:00 -04:00
parent 3aab755e37
commit b4e4036c41
+6 -2
View File
@@ -181,10 +181,14 @@
privateKeyFile = "/etc/wireguard/private.key";
postUp = ''
${pkgs.iproute2}/bin/ip route add vpn.leeworks.dev via $(${pkgs.iproute2}/bin/ip route show default | ${pkgs.gawk}/bin/awk '{print $3}') dev $(${pkgs.iproute2}/bin/ip route show default | ${pkgs.gawk}/bin/awk '{print $5}')
ENDPOINT_IP=$(${pkgs.dig}/bin/dig +short vpn.leeworks.dev | head -1)
GATEWAY=$(${pkgs.iproute2}/bin/ip route show default | ${pkgs.gawk}/bin/awk '{print $3}')
DEV=$(${pkgs.iproute2}/bin/ip route show default | ${pkgs.gawk}/bin/awk '{print $5}')
${pkgs.iproute2}/bin/ip route add "$ENDPOINT_IP" via "$GATEWAY" dev "$DEV"
'';
preDown = ''
${pkgs.iproute2}/bin/ip route del vpn.leeworks.dev || true
ENDPOINT_IP=$(${pkgs.dig}/bin/dig +short vpn.leeworks.dev | head -1)
${pkgs.iproute2}/bin/ip route del "$ENDPOINT_IP" || true
'';
peers = [{