bundles/wide-dhcp6c: introduce, add to home.router
This commit is contained in:
parent
6b4eae842b
commit
fa224a9939
7 changed files with 132 additions and 0 deletions
17
bundles/wide-dhcp6c/files/dhcp6c.conf
Normal file
17
bundles/wide-dhcp6c/files/dhcp6c.conf
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
interface ${source} {
|
||||||
|
send ia-pd 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
id-assoc pd 0 {
|
||||||
|
% for iface, subnet_id in sorted(targets.items()):
|
||||||
|
prefix-interface ${iface} {
|
||||||
|
sla-len ${subnet_len};
|
||||||
|
sla-id ${subnet_id};
|
||||||
|
ifid ${subnet_id};
|
||||||
|
};
|
||||||
|
% endfor
|
||||||
|
};
|
||||||
|
|
||||||
|
profile default {
|
||||||
|
information-only;
|
||||||
|
};
|
10
bundles/wide-dhcp6c/files/ip-down
Normal file
10
bundles/wide-dhcp6c/files/ip-down
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
systemctl stop wide-dhcpv6-client
|
||||||
|
|
||||||
|
% for interface, subnet_id in sorted(targets.items()):
|
||||||
|
for IP in $(ip -6 addr show dev ${interface} | grep inet6 | awk '{print $2}' | grep -vF 'fe80::')
|
||||||
|
do
|
||||||
|
ip -6 addr del $IP dev ${interface}
|
||||||
|
done
|
||||||
|
% endfor
|
11
bundles/wide-dhcp6c/files/ip-up
Normal file
11
bundles/wide-dhcp6c/files/ip-up
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
INTERFACE=$1
|
||||||
|
|
||||||
|
if [[ "$INTERFACE" != "${source}" ]]
|
||||||
|
then
|
||||||
|
echo "wide-dhcp6c is not configured to work on $INTERFACE"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
systemctl start wide-dhcpv6-client
|
10
bundles/wide-dhcp6c/files/wide-dhcpv6-client.service
Normal file
10
bundles/wide-dhcp6c/files/wide-dhcpv6-client.service
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
[Unit]
|
||||||
|
Description=WIDE-DHCPv6-Client
|
||||||
|
After=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
PIDFile=/run/dhcp6c.pid
|
||||||
|
ExecStart=/usr/sbin/dhcp6c -c /etc/wide-dhcpv6/dhcp6c.conf -p /run/dhcp6c.pid -f ${source}
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
58
bundles/wide-dhcp6c/items.py
Normal file
58
bundles/wide-dhcp6c/items.py
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
if node.metadata.get('wide-dhcp6c', {}).get('integrate-with-pppd', False):
|
||||||
|
files['/etc/ppp/ip-up.d/wide-dhcp6c'] = {
|
||||||
|
'source': 'ip-up',
|
||||||
|
'content_type': 'mako',
|
||||||
|
'context': {
|
||||||
|
'source': node.metadata['wide-dhcp6c']['source'],
|
||||||
|
},
|
||||||
|
'mode': '0755',
|
||||||
|
}
|
||||||
|
files['/etc/ppp/ip-down.d/wide-dhcp6c'] = {
|
||||||
|
'source': 'ip-down',
|
||||||
|
'content_type': 'mako',
|
||||||
|
'context': {
|
||||||
|
'targets': node.metadata['wide-dhcp6c']['targets'],
|
||||||
|
},
|
||||||
|
'mode': '0755',
|
||||||
|
}
|
||||||
|
|
||||||
|
# Will be started and stopped by pppd.
|
||||||
|
should_be_running = None
|
||||||
|
should_be_enabled = False
|
||||||
|
else:
|
||||||
|
should_be_running = True
|
||||||
|
should_be_enabled = True
|
||||||
|
|
||||||
|
files['/etc/wide-dhcpv6/dhcp6c.conf'] = {
|
||||||
|
'content_type': 'mako',
|
||||||
|
'context': {
|
||||||
|
'source': node.metadata['wide-dhcp6c']['source'],
|
||||||
|
'targets': node.metadata['wide-dhcp6c']['targets'],
|
||||||
|
'subnet_len': node.metadata['wide-dhcp6c']['subnet_len'],
|
||||||
|
},
|
||||||
|
'triggers': {
|
||||||
|
'svc_systemd:wide-dhcpv6-client:restart',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
files['/etc/systemd/system/wide-dhcpv6-client.service'] = {
|
||||||
|
'content_type': 'mako',
|
||||||
|
'context': {
|
||||||
|
'source': node.metadata['wide-dhcp6c']['source'],
|
||||||
|
},
|
||||||
|
'triggers': {
|
||||||
|
'action:systemd-reload',
|
||||||
|
'svc_systemd:wide-dhcpv6-client:restart',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
svc_systemd = {
|
||||||
|
'wide-dhcpv6-client': {
|
||||||
|
'running': should_be_running,
|
||||||
|
'enabled': should_be_enabled,
|
||||||
|
'needs': {
|
||||||
|
'file:/etc/systemd/system/wide-dhcpv6-client.service',
|
||||||
|
'file:/etc/wide-dhcpv6/dhcp6c.conf',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
18
bundles/wide-dhcp6c/metadata.py
Normal file
18
bundles/wide-dhcp6c/metadata.py
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
defaults = {
|
||||||
|
'apt': {
|
||||||
|
'packages': {
|
||||||
|
'wide-dhcpv6-client': {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'iptables': {
|
||||||
|
'bundle_rules': {
|
||||||
|
'wide-dhcp6c': [
|
||||||
|
'ip6tables -A INPUT -p udp -s ff00::/12 -j ACCEPT',
|
||||||
|
'ip6tables -A INPUT -p udp -s fe80::/10 -j ACCEPT',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'wide-dhcp6c': {
|
||||||
|
'subnet_len': '8',
|
||||||
|
},
|
||||||
|
}
|
|
@ -6,6 +6,7 @@ nodes['home.router'] = {
|
||||||
'iptables',
|
'iptables',
|
||||||
'pppd',
|
'pppd',
|
||||||
'dhcpd',
|
'dhcpd',
|
||||||
|
'wide-dhcp6c',
|
||||||
},
|
},
|
||||||
'groups': set(),
|
'groups': set(),
|
||||||
'metadata': {
|
'metadata': {
|
||||||
|
@ -74,6 +75,13 @@ nodes['home.router'] = {
|
||||||
'cpu': 2,
|
'cpu': 2,
|
||||||
'ram': 2,
|
'ram': 2,
|
||||||
},
|
},
|
||||||
|
'wide-dhcp6c': {
|
||||||
|
'integrate-with-pppd': True,
|
||||||
|
'source': 'ppp0',
|
||||||
|
'targets': {
|
||||||
|
'enp1s0.42': '1',
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
'os': 'debian',
|
'os': 'debian',
|
||||||
'os_version': (10,),
|
'os_version': (10,),
|
||||||
|
|
Loading…
Reference in a new issue