Compare commits

..

2 commits

Author SHA1 Message Date
mwiegand
c9eef4fc79 wip 2021-10-10 14:31:05 +02:00
mwiegand
1c9c4e0902 wip 2021-10-10 03:46:43 +02:00
5 changed files with 15 additions and 21 deletions

View file

@ -9,12 +9,8 @@ repo.libs.wireguard.repo = repo
defaults = { defaults = {
'apt': { 'apt': {
'packages': { 'packages': {
# 'linux-headers-amd64': {},
'wireguard': { 'wireguard': {
'backports': node.os_version < (11,), 'backports': node.os_version < (11,),
# 'needs': [
# 'pkg_apt:linux-headers-amd64',
# ],
'triggers': [ 'triggers': [
'svc_systemd:systemd-networkd:restart', 'svc_systemd:systemd-networkd:restart',
], ],
@ -39,6 +35,9 @@ def s2s_peer_specific(metadata):
'id': repo.get_node(peer).metadata.get(f'id'), 'id': repo.get_node(peer).metadata.get(f'id'),
'ip': repo.get_node(peer).metadata.get(f'wireguard/my_ip'), 'ip': repo.get_node(peer).metadata.get(f'wireguard/my_ip'),
'endpoint': f'{repo.get_node(peer).hostname}:51820', 'endpoint': f'{repo.get_node(peer).hostname}:51820',
'route': [
str(ip_interface(repo.get_node(peer).metadata.get(f'wireguard/my_ip')).network),
],
} }
for peer in metadata.get('wireguard/peers') for peer in metadata.get('wireguard/peers')
}, },
@ -55,8 +54,11 @@ def client_peer_specific(metadata):
'clients': { 'clients': {
client: { client: {
'id': client, 'id': client,
'route': [
str(ip_interface(conf['ip']).network),
]
} }
for client in metadata.get('wireguard/clients') for client, conf in metadata.get('wireguard/clients').items()
}, },
}, },
} }
@ -73,11 +75,6 @@ def systemd_networkd_networks(metadata):
'Address': { 'Address': {
'Address': metadata.get('wireguard/my_ip'), 'Address': metadata.get('wireguard/my_ip'),
}, },
'Route': {
'Destination': str(ip_interface(metadata.get('wireguard/my_ip')).network),
'GatewayOnlink': 'yes',
'PreferredSource': str(ip_interface(metadata.get('network/internal/ipv4')).ip),
},
'Network': { 'Network': {
'DHCP': 'no', 'DHCP': 'no',
'IPForward': 'yes', 'IPForward': 'yes',
@ -87,15 +84,12 @@ def systemd_networkd_networks(metadata):
for peer, config in { for peer, config in {
**metadata.get('wireguard/peers'), **metadata.get('wireguard/peers'),
**metadata.get('wireguard/clients'),
}.items(): }.items():
for route in config.get('route', []): for route in config.get('route', []):
network.update({ network.update({
f'Route#{peer}_{route}': { f'Route#{peer}_{route}': {
'Destination': route, 'Destination': route,
'Gateway': str(ip_interface(config['ip']).ip), 'Gateway': str(ip_interface(metadata.get('wireguard/my_ip')).ip),
'GatewayOnlink': 'yes',
'PreferredSource': str(ip_interface(metadata.get('network/internal/ipv4')).ip),
} }
}) })
@ -133,7 +127,7 @@ def systemd_networkd_netdevs(metadata):
'PublicKey': repo.libs.wireguard.pubkey(config['id']), 'PublicKey': repo.libs.wireguard.pubkey(config['id']),
'PresharedKey': repo.libs.wireguard.psk(config['id'], metadata.get('id')), 'PresharedKey': repo.libs.wireguard.psk(config['id'], metadata.get('id')),
'AllowedIPs': ', '.join([ 'AllowedIPs': ', '.join([
str(ip_interface(config['ip']).ip), # '172.30.0.0/24', # FIXME
*config.get('route', []), *config.get('route', []),
]), # FIXME ]), # FIXME
'PersistentKeepalive': 30, 'PersistentKeepalive': 30,

View file

@ -58,7 +58,7 @@
'ram': 16192, 'ram': 16192,
}, },
'wireguard': { 'wireguard': {
'my_ip': '172.30.0.2/24', 'my_ip': '172.30.0.2/32',
'peers': { 'peers': {
'htz.mails': { 'htz.mails': {
'route': [ 'route': [

View file

@ -162,13 +162,13 @@
}, },
'clients': { 'clients': {
'macbook': { 'macbook': {
'ip': '172.30.0.100/24', 'ip': '172.30.0.100/32',
}, },
'phone': { 'phone': {
'ip': '172.30.0.101/24', 'ip': '172.30.0.101/32',
}, },
'ipad': { 'ipad': {
'ip': '172.30.0.102/24', 'ip': '172.30.0.102/32',
}, },
}, },
}, },

View file

@ -31,7 +31,7 @@
# 'hostname': 'mail2.sublimity.de', # 'hostname': 'mail2.sublimity.de',
# }, # },
'wireguard': { 'wireguard': {
'my_ip': '172.30.0.3/24', 'my_ip': '172.30.0.3/32',
'peers': { 'peers': {
'htz.mails': { 'htz.mails': {
'route': [ 'route': [

View file

@ -22,7 +22,7 @@
}, },
}, },
'wireguard': { 'wireguard': {
'my_ip': '172.30.0.4/24', 'my_ip': '172.30.0.4/32',
'peers': { 'peers': {
'htz.mails': { 'htz.mails': {
'route': [ 'route': [