Freedom Internet met Debian 13, systemd-networkd, PPPoE en native IPv6
Inleiding
Deze noot beschrijft mijn werkende configuratie voor Freedom Internet op een eigen Debian-router/server. Doel was een native dual-stack verbinding zonder FRITZ!Box: IPv4 via PPPoE/NAT en IPv6 via DHCPv6 Prefix Delegation.
De configuratie is geen universele handleiding, maar een praktijkverslag. Het heeft best moeite gekost om alle stukjes van de puzzel te plaatsen en daarom publiceer ik: mogelijk helpt dit anderen met een vergelijkbare Freedom/AON-opstelling enerzijds en levert het wat waardevolle input op anderzijds.
Voorbeeld-data:
- IPv4: 203.0.113.41 (TEST-NET-3)
- LAN IPv4: 192.0.2.1/24 (TEST-NET-1)
- IPv6-prefix: 2001:db8:1234::/48
- LAN: 2001:db8:1234::1/64
Topologie
Hardware en software
- Debian 13
- systemd-networkd (ver. 257)
- PPPoE via pppd
- UFW
- Unbound
- Intel X550 dual NIC
Interfaces:
- enp10s0f0 WAN fysiek
- vlan6 VLAN 6 voor Freedom
- ppp-freedom PPPoE WAN-interface
- enp10s0f1 LAN
PPPoE
Belangrijk is een vaste PPP-interfacenaam. Niet vertrouwen op ppp0, want dat maakt firewall- en networkd-configuratie kwetsbaar.
In /etc/ppp/peers/freedom:
ifname ppp-freedom
De rest van de PPPoE-configuratie hangt af van de lokale Freedom-instellingen.
systemd-networkd
Bestanden in /etc/systemd/network/:
10-enp10s0f0.network
20-vlan6.netdev
30-vlan6.network
40-ppp-freedom.network
50-enp10s0f1.network
WAN-interface
10-enp10s0f0.network:
[Match]
Name=enp10s0f0
[Network]
VLAN=vlan6
VLAN 6
20-vlan6.netdev:
[NetDev]
Name=vlan6
Kind=vlan
[VLAN]
Id=6
30-vlan6.network:
[Match]
Name=vlan6
[Network]
PPP-interface en DHCPv6 Prefix Delegation
40-ppp-freedom.network:
[Match]
Name=ppp-freedom
[Network]
DHCP=ipv6
IPv6AcceptRA=yes
KeepConfiguration=static
DefaultRouteOnDevice=true
[IPv6AcceptRA]
DHCPv6Client=always
Hiermee ontvangt de router de IPv6-prefix van Freedom. Voorbeeld:
2001:db8:1234::/48
LAN-interface
50-enp10s0f1.network:
[Match]
Name=enp10s0f1
[Network]
Address=192.0.2.1/24
DHCPServer=yes
DHCPPrefixDelegation=yes
IPv6SendRA=yes
[DHCPPrefixDelegation]
SubnetId=0x0
Token=::1
[DHCPServer]
DNS=92.0.2.1
EmitDNS=yes
Resultaat op de router:
2001:db8:1234::1/64
Clients krijgen via SLAAC automatisch een IPv6-adres en default route.
IPv6 forwarding
IPv6 forwarding moet expliciet aan.
/etc/sysctl.d/90-ipv6-router.conf:
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.default.forwarding=1
Activeren in bash:
# sysctl --system
UFW en NAT
IPv4 gebruikt NAT. IPv6 gebruikt geen NAT.
In /etc/ufw/before.rules:
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.0.2.0/24 -o ppp-freedom -j MASQUERADE
COMMIT
Forwarding-regel, bash:
# ufw route allow in on enp10s0f1 out on ppp-freedom
Met IPV6=yes in /etc/default/ufw geldt deze regel zowel voor IPv4 als IPv6.
TCP MSS clamping
Na het werkend krijgen van IPv6 bleek IPv4 vanaf LAN-clients traag en onbetrouwbaar. De router zelf had dit probleem niet. Symptomen:
apt updateop de router snelapt updateop een LAN-client traag- IPv6 snel
- IPv4 traag
- browsers met meerdere tabbladen: half geladen pagina's en time-outs
Oorzaak: forwarded IPv4 TCP over PPPoE zonder MSS-clamping.
Toegevoegd in /etc/ufw/before.rules:
*mangle
:FORWARD ACCEPT [0:0]
-A FORWARD -o ppp-freedom -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
COMMIT
Daarna:
# ufw reload
Controle:
# iptables-save | grep TCPMSS
Na deze wijziging was IPv4 vanaf LAN-clients weer snel en stabiel.
Controles
WAN:
# networkctl status ppp-freedom
# ip -6 route
Verwachte aanwijzing:
DHCP: received delegated prefix .../48
LAN-router:
# ip -6 addr show dev enp10s0f1
Verwacht:
inet6 2001:db8:1234::1/64
Client:
$ ip -6 addr
$ ip -6 route
$ ping6 2001:db8:1234::1
$ ping6 2606:4700:4700::1111
Valkuilen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| PPP-interface wisselt | ppp0 is niet stabiel | ifname ppp-freedom |
| Geen IPv6-prefix op LAN | PD niet gekoppeld aan LAN | DHCPPrefixDelegation=yes |
| Geen Router Advertisements | RA niet actief | IPv6SendRA=yes |
| IPv6-routering werkt niet | forwarding uit | sysctl forwarding aan |
| IPv4 vanaf LAN traag | MSS-probleem over PPPoE | TCPMSS clamp |
| UFW NAT stuk na hernoemen | regels wezen nog naar ppp0 | alles naar ppp-freedom |
Open punt
Freedom ondersteunt mogelijk RFC4638 met PPPoE MTU 1500 via een onderliggende MTU van 1508. Dat heb ik nog niet getest. De huidige configuratie gebruikt klassieke PPPoE MTU 1492 met MSS-clamping voor forwarded IPv4.
Conclusie
De uiteindelijke configuratie is stabiel:
- IPv4 via PPPoE en NAT
- native IPv6 via DHCPv6 Prefix Delegation
/48ontvangen van Freedom/64op LAN- SLAAC voor clients
- UFW actief
- TCP MSS clamping voor IPv4-forwarding
De grootste hobbel: het IPv4-probleem bleek uiteindelijk niets met IPv6 te maken te hebben. IPv6 werkte goed; forwarded IPv4 over PPPoE had MSS-clamping nodig.
Bijlagen
digraph topologie:
digraph G {
graph [rankdir=TB];
node [shape=box, fontname="sans-serif"];
internet [label="Internet"];
freedom [label="Freedom AON"];
ont [label="ONT / glasvezel-NT"];
wan [label="WAN NIC enp10s0f0"];
vlan [label="vlan6"];
ppp [label="ppp-freedom\nPPPoE"];
router [label="bit\nDebian 13 router"];
lan [label="LAN NIC enp10s0f1\n192.0.2.1/24\n2001:db8:1234::1/64"];
client [label="LAN clients"];
internet -> freedom -> ont -> wan -> vlan -> ppp -> router -> lan -> client;
}