Na een boel geklooi ben ik tot de volgende werkende configuratie gekomen, omdat networkd helaas geen ondersteuning heeft voor pppoe moet dit met een extra service gebeuren.
Als moden heb ik van een vriend een oud Zyxel VMG8324-B10A modem gekregen die bij een Online internetverbinding hoorde en ze niet meer terug hoefde. Deze zijn eenvoudig in PTM-bridge modus te zetten en met een alternatieve firmware (GitHub - johnson442/custom-zyxel-firmware) is het mogelijk om mini jumbo frames te gebruiken met een MTU van 1508. Deze of vergelijkbare modems zijn voor een prikkie te krijgen op bijvoorbeeld marktplaats. Glasvezelklanten hebben het een stuk makkelijker
Hier de configuratie voor de geinteresseerde:
/etc/systemd/network/pppoe-vlan.netdev (vergeet niet VLAN= in te stellen op de hoofd interface)
[NetDev]
Name=pppoe-vlan
Kind=vlan
MTUBytes=1508
[VLAN]
Id=6
/etc/systemd/network/pppoe-vlan.network
[Match]
Name=pppoe-vlan
[Network]
DHCP=no
IPv6AcceptRA=no
LinkLocalAddressing=no
LLMNR=no
[Link]
ARP=false
/etc/ppp/peers/freedom
ifname wan
up_sdnotify
local
noauth
defaultroute
+ipv6
persist
mtu 1500
mru 1500
plugin pppoe.so
user "blaat@freedom.nl"
nic-pppoe-vlan
De defaultroute optie is nodig omdat networkd na het herstarten van pppd de default route niet zelf opnieuw aanmaakt, voor IPv6 werkt dit wel.
/etc/ppp/pap-secrets
"blaat@freedom.nl" * "kokosnoot"
/etc/systemd/system/pppoe-link.service
[Service]
ExecStart=/usr/sbin/pppd call freedom
Type=notify
Restart=on-failure
RestartSec=2s
# Hardening. Dit is misschien nog wel wat meer aan te scherpen, maar helaas heeft pppd flink wat privileges nodig.
ReadWritePaths=/run
ProtectHome=yes
PrivateMounts=yes
PrivateTmp=yes
ProtectSystem=strict
[Install]
WantedBy=multi-user.target
/etc/systemd/network/wan.network (om networkd de net aangemaakte interface van pppd te laten configureren)
[Match]
Name=wan
[Network]
DHCP=ipv6
IPv6AcceptRA=yes
LinkLocalAddressing=ipv6
KeepConfiguration=static
LLMNR=false
LLDP=false
IPv6DuplicateAddressDetection=0
DefaultRouteOnDevice=true
[IPv6AcceptRA]
UseDNS=false
UseOnLinkPrefix=no
UseAutonomousPrefix=no
DHCPv6Client=always
[DHCPv6]
ForceDHCPv6PDOtherInformation=yes
UseDNS=false
UseNTP=false
UseHostname=false
UseAddress=false
Om te zorgen dat networkd ook vraagt om een prefix delegation via DHCPv6 moet je op een downstream interface het volgende instellen, als je dit niet hebt kun je ook een dummy interface gebruiken. Zonder prefix delegation is IPv6 niet actief vanuit Freedom en werken statische adressen dus ook niet.
Een voorbeeld van een downstream/interne interface:
/etc/systemd/network/intern.network
[Match]
Name=intern
[Network]
Address=10.0.0.1/24
DHCP=no
IPv6AcceptRA=false
IPv6DuplicateAddressDetection=0
IPv6SendRA=true
DHCPv6PrefixDelegation=true
DHCPServer=true
[DHCPServer]
DNS=*IP van een recursive DNS server*
EmitDNS=true
[DHCPv6PrefixDelegation]
SubnetId=1
# Als je IPv6 subnet bijvoorbeeld 2a10:3781:beef::/48 is stelt dit het adres 2a10:3781:beef:1::1/64 in
Token=::1
[IPv6SendRA]
DNS=*IP van een recursive DNS server*
EmitDNS=true
DNSLifetimeSec=7200
RouterLifetimeSec=3600
[Link]
ARP=true
Dit kun je zo nodig herhalen voor meerdere interfaces.