diff --git a/bundles/wireguard/files/wg.netdev b/bundles/wireguard/files/wg.netdev index 493db88..375bada 100644 --- a/bundles/wireguard/files/wg.netdev +++ b/bundles/wireguard/files/wg.netdev @@ -14,4 +14,6 @@ PresharedKey=${psk} % if endpoint: Endpoint=${endpoint} % endif +% if specials.get('persistent_keepalive', True): PersistentKeepalive=30 +% endif diff --git a/bundles/wireguard/items.py b/bundles/wireguard/items.py index 5bbd7d3..6d4461a 100644 --- a/bundles/wireguard/items.py +++ b/bundles/wireguard/items.py @@ -27,6 +27,7 @@ for peer, config in sorted(node.metadata.get('wireguard/peers', {}).items()): 'privatekey': node.metadata.get('wireguard/privatekey'), 'psk': config['psk'], 'pubkey': config['pubkey'], + 'specials': repo.libs.s2s.WG_AUTOGEN_SETTINGS.get(peer, {}), }, 'needs': deps, 'triggers': { diff --git a/libs/s2s.py b/libs/s2s.py index a490e15..0da6d41 100644 --- a/libs/s2s.py +++ b/libs/s2s.py @@ -20,6 +20,13 @@ WG_AUTOGEN_NODES = [ 'daisy', ] +WG_AUTOGEN_SETTINGS = { + # special settings to apply when peering with a specific node + 'home.router': { + 'persistent_keepalive': False, + }, +} + def get_subnet_for_connection(repo, peer_a, peer_b): assert peer_a in WG_AUTOGEN_NODES assert peer_b in WG_AUTOGEN_NODES