Voorbeeldconfiguratie dualstack router met systemd-networkd

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 :wink:

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.

3 likes

Hoezo? Die moeten weer op Marktplaats zoeken naar een ZTE ZXHN F3100 (in het geval van KPN), of zelf een koppelbus, kabel, SFP en mediaconverter aanschaffen (bij de andere netwerken).

Dus ja, dat deel is altijd wel lastig. Ik vind het ook wel jammer dat Freedom zelf geen modems (dus echt modems, en niet wat mensen “modems” noemen) en mediaconverters verkoopt eigenlijk.

1 like

Dit vind ik overigens ook best interessant. Een aantal vrienden van me wil binnenkort ook overstappen naar Freedom met een eigen router. Vooralsnog raad ik ze dan aan om een DrayTek Vigor 165 als modem te gebruiken, maar dit klinkt eigenlijk nog beter.

Heb je wellicht ergens gedocumenteerd hoe je deze firmware hebt geïnstalleerd en geconfigureerd? Een beetje vergelijkbaar met wat ik hier heb gedaan bijvoorbeeld? Dat zou ook zeker veel mensen kunnen helpen denk ik zo.

Zelf overweeg ik een Mikrotik CRS305-1G-4S+IN, of een MikroTik CRS106-1C-5S in RouterOS modus uiteraard.

Moet me eerst nog eens een keer goed inlezen, maar deze lijken op zich geschikt voor het configureren van diverse soorten verkeer over een specifiek WAN. Bijvoorbeeld TV en telefoon via Freedom, latency gevoelig verkeer als VoIP (discord/TeamSpeak etc) en gaming via Freedom, vanwege de lagere latency door goede peering. En Downloads en generiek internet verkeer als Netflix via bijvoorbeeld Caiway over de Delta Fiber aansluiting.

Eea moet met static routes en iptable filters te realiseren zijn. Maar heb nog tijd, aansluiting via Delta Fiber komt op z’n vroegst Januari 2022. En misschien niet eens nodig als Delta Fiber PPPoE weet te realiseren in Q3 dit jaar, dan koop ik Caiway af en gaat Freedom over de glasvezel.

Dit was een boel gedoe. Het modem is door online dichtgezet en het is niet mogelijk om de firmware te updaten via de webinterface. Het echter wel mogelijk om het modem in PTM-bridge te zetten. Dus als je genoeg hebt aan een MTU van 1492 ben je snel klaar.

Om de firmware toch de flashen heb ik een raspberry pi aangesloten op de seriele poort van het modem, de header is hiervoor al geinstalleerd dus er hoeft niet gesoldeert te worden. Na het bootproces onderbroken te hebben kan de firmware worden geflasht met xmodem.

Ok, en die header is dan gewoon een RS232 met een baudrate van 115200? En het ding zal U-Boot als bootloader hebben neem ik aan?

Nee, het is CMOS serial. Dus op 3.3v, de snelheid is inderdaad 115200.

Een raspberry pi is dus waarschijnlijk het gemakkelijkste omdat iedereen er vast wel ergens eentje heeft :wink: . En anders zul je een losse adapter moeten kopen die CMOS serial doet.

Uboot weet ik niet meer zeker, het is al een tijdje geleden. Maar je krijgt tijdens het opstarten de vraag om op een knop te drukken om het opstarten te onderbreken.

Dat is een geinig hobby project, met 2 buffer ic’s 3.3V naar 5V omzetten en omgekeerd. Vroeger op school wel eens gemaakt :sunglasses: