1
Vraag
2
Reacties
gertvdijk

Level 3
  • 20Posts
  • 1Oplossingen
  • 4Likes

ConnectBox heeft geen route naar mijn eigen router voor IPv6 via DHCPv6 prefix delegation (opnieuw)

 

Helaas is IPv6 met DHCPv6-PD weer stuk gegaan bij mij en ik kom er niet uit. Volgens mij is het nu echt een defect aan de Ziggo-zijde. Wellicht kan iemand zijn ervaring in een werkende situatie vergelijken met de mijne om dit definitief te bepalen.

 

Hoe ik het heb ingericht heb ik uitgebreid op mijn blog beschreven, toen werkte het destijds goed: https://blog.g3rt.nl/systemd-networkd-dhcpv6-pd-configuration.html 

Zie ook mijn vorige topic uit 2021 - ik kan er niet meer op reageren, weet niet waarom.

Het was plots weer stuk gegaan in de maanden erna en inmiddels krijg ik het met wat nieuwe systemd-networkd versies ook niet meer aan de praat.

 

Op mijn Debian/Linux server als router draai ik systemd-networkd, die hangt direct aan mijn Ziggo Compal ConnectBox met dual-stack IPv6 in fZiggo gebied (Delft), in router mode (niet bridge). IPv6 firewall op de ConnectBox staat uit.

 

Veel gaat er eigenlijk al goed - wat gebeurt er?

  • systemd-networkd doet DHCPv4 en configureert mijn IPv4 routing. 
  • systemd-networkd doet SLAAC en configureert een global address en zet een default route naar de ConnectBox. 
    $ ip -6 route show
    [...]
    default via fe80::5667:51ff:fee3:3713 dev wan0 proto ra metric 1024 expires 1748sec mtu 1500 pref high
  • mijn router kan zelf prima bij het IPv6-deel van het internet. 
    $ ping ipv6.google.com
    PING ipv6.google.com(ams15s42-in-x0e.1e100.net (2a00:1450:400e:803::200e)) 56 data bytes
    64 bytes from ams15s42-in-x0e.1e100.net (2a00:1450:400e:803::200e): icmp_seq=1 ttl=118 time=14.7 ms
  • systemd-networkd doet een DHCPv6 solicit in rapid commit met optie 25 (IA_PD). 
  • van Ziggo krijg ik een DHCPv6 reply, met optie 25, en één /60 prefix delegated. 
  • systemd-networkd gebruikt dit bericht en logt netjes deze prefix. 
    DHCP: received delegated prefix 2001:1c00:b19:4360::/60
  • systemd-networkd wijst een /64-subnet toe aan een downstream interface, mijn thuisnetwerk, en announcet zichzelf als router. 
    (2001:1c00:b19:4361::/64 = SubnetId=1)
    Received new foreign route (configured): dst: 2001:1c00:b19:4361::/64, src: n/a, gw: n/a, prefsrc: n/a, scope: global, table: main(254), proto: kernel, type: unicast, nexthop: 0, priority: 256, flags: n/a
    RADV: Added prefix 2001:1c00:b19:4361::/64
    RADV: Sent Router Advertisement for added/updated prefix 2001:1c00:b19:4361::/64.
    Requesting DHCP-PD address (n/a): 2001:1c00:b19:4361:e6b9:7aff:fef9:b28d/64 (valid for 1w 6d 23h 59min 59s, preferred for 6d 23h 59min 59s), flags: tentative,manage-temporary-address, scope: global
    Assigned prefix 2001:1c00:b19:4361::/64
  • apparaat vanaf dat thuisnetwerk zet een eigen global address via SLAAC en heeft mijn router als default route. 
  • apparaat vanaf dat thuisnetwerk stuurt IPv6 pakketje naar het internet via mijn router. 
  • mijn router forward dit pakketje naar de interface verbonden met de ConnectBox, source IP = global address van de /64 uit de delegated prefix, destination MAC = ConnectBox. 
  • op mijn router verwacht ik nu dat ook pakketten terug kunnen komen door de ConnectBox, omdat die een route zou moeten hebben naar mijn router voor de hele /60. In plaats van dat ik pakketjes terug zie komen vraagt de ConnectBox wie eigenlijk dat global address van mijn apparaat heeft via neighbour discovery. 
    source IP = global address van ConnectBox (buiten de PD-range /60, maar binnen de /56 van mijn aansluiting), destination IP = uit reeks multicastadres 'Solicited-node multicast address, ff02::1:ff00:0/104', source MAC = ConnectBox,  
    2001:1c00:b19:4300:5667:51ff:fee3:3713 ff02::1:ff96:2eb8 ICMPv6 86 Neighbor Solicitation for 2001:1c00:b19:4361:1457:147d:4a96:2eb8
  • Mijn router laat (volgens mij terecht) deze neighbour discovery onbeantwoord; op deze interface is het geen neigbour. 

 

Volgens mij is het helemaal niet de bedoeling dat er een neighbour discovery solicitation wordt gedaan door de ConnectBox voor een global adres binnen de delegated prefix die hij net zelf heeft gegeven aan mijn router. Zo'n adres is per definitie niet lokaal op die interface, maar routed (want delegated). Wat ik verwacht is een standaard routering van de hele /60 naar het MAC-adres waarvan de DHCPv6 request kwam (middels link-local adres).

 

Hier een PCAP (download: pcap-all-ip6-20230410-1.pcap, kon helaas niet als bijlage hier, foutmelding over bestandstype). Je ziet de hele conversatie van de router en een aantal pogingen van een apparaat in mijn thuisnetwerk (een Chromecast) die nooit antwoord krijgt van de ConnectBox. Deze is gemaakt met tcpdump op de interface die direct aan de ConnectBox hangt, met een IPv6-only filter.
$ tcpdump -i wan0 -w /tmp/pcap-all-ip6-20230410-1.pcap 'ip6'

Volgens mij doet mijn router echt alles goed hier en faalt de ConnectBox vervolgens het naar mij te routeren. 😕

 

Of heb ik dit mis? Hoe ziet zo'n packet dump er bij jullie uit als het wel werkt?

 

Wat ik verder nog heb geprobeerd:

  • ConnectBox reboot / power cycle.
  • ConnectBox DHCPv6 setting veranderd van Stateless naar Stateful
  • systemd-networkd configuratie veranderd zodat mijn wan interface óók een subnet krijgt uit de delegated prefix, naast die hij via SLAAC al heeft gekregen.
  • systemd-networkd configuratie veranderd zodat mijn wan interface alleen een subnet krijgt uit de delegated prefix, zonder SLAAC. -> Gaat om andere reden mis; een default route opzetten op mijn router naar de ConnectBox kan zo niet, aangezien DHCPv6 die informatie niet geeft.
  • Op de ConnectBox zelf een traceroute en ping doen naar dit adres binnen de delegated prefix. Het gaat allemaal nergens heen, 100% packet loss. Maar dit gebeurde volgens mij ook wanneer het wel werkte in 2021, dus onduidelijk of dit een goede indicatie is.
  • Een neighbour discovery proxy configuratie opzetten (manpage systemd.network IPv6ProxyNDPAddress). Maar dit is volgens mij helemaal niet de bedoeling, want dat is alleen nodig indien je geen routed prefix krijgt en moet echt per adres static.
26 Reacties 26
caesar

Level 17
Expert
  • 3638Posts
  • 65Oplossingen
  • 1012Likes

@efok 

Door dat NAT gehannes kan ik mij voorstellen dat IPv4 wat lastig gaat, maar ik zou verwachten dat het wel goed gaat met IPv6.

efok

Level 17
Expert
  • 3869Posts
  • 215Oplossingen
  • 1482Likes

Ik zal het nog eens proberen over IPv6, als ik weer 2 routers heb.

tobiastheebe

Level 20
Super Expert
  • 20131Posts
  • 1344Oplossingen
  • 9581Likes

Als er geen telefonie wordt afgenomen bij Ziggo, dan hoeft de eMTA niet te worden aangesproken door de boot file en hoeft deze geen IP-adres aan te vragen. In principe komt daarmee een CPE vrij voor een tweede router.

 

Bij de F3896LG-ZG is docsDevMaxCpe = 3 i.p.v. 2 nog een workaround t.b.v. de eerdere problemen met bridge mode met dit type modem.

Guido64

Level 15
Expert
  • 1269Posts
  • 54Oplossingen
  • 594Likes

@tobiastheebe 

Paar weken terug heb ik eens een bridge gemaakt op mijn (pfSense) wan met 2 interfaces. Toen kreeg ik 2 verschillende IPv4 adressen (IPv6 niet getest). Die werkten ook.

Toen had ik ook nog vast bellen van Ziggo dat ik daarna heb afgezegd.

 

Waar kan je "docsDevMaxCpe = 3" zien?

 

tobiastheebe

Level 20
Super Expert
  • 20131Posts
  • 1344Oplossingen
  • 9581Likes

@Guido64 Interessant. Bij de UBC1318ZG wordt dit helaas niet getoond.

gertvdijk
Topicstarter
Level 3
  • 20Posts
  • 1Oplossingen
  • 4Likes

Na nog wat uren getuurd te hebben naar de PCAPs, collega-experts ernaar te laten kijken en gespeeld met instellingen zoals het toevoegen van een expliciete prefix hint ::/60, IA_NA optie erbij aan/uit te zetten, bridge-modus geen fijne optie vindt met maar 1 poort beschikbaar, en wat al nog meer, heb ik de figuurlijke handdoek in de ring gegooid. Voor 150 euro heb ik een Fritz!Box 6660 op de kop getikt en de "Eigen modem"-procedure gevolgd in de Mijn Ziggo app.

 

Die Fritz!Box deed niet gelijk antwoorden op een IA_PD verzoek, moest even zoeken naar de juiste instelling hier verborgen achter een knopje:

Screenshot_20230413_004803.png

 

En het werkt nu allemaal helemaal fantastisch! 😍

 

Uit de /56 kan ik helemaal vrij kleinere netwerken 'gedelegate' krijgen zoals het hoort. OpenWRT doosje in factory default en een homelab server hier beide delegated:

Screenshot_20230413_012730.png

 

En de routering gaat nu beide kanten op, waardoor ik het internet ook daadwerkelijk kan bereiken vanuit die delegated prefixes. 

 

Screenshot_20230413_005316.png

 

Conclusie: de ConnectBox is prutszooi met IPv6 DHCPv6-PD (in elk geval in router mode).

Ziggo, get your *bliep* together, please!

 

Werkende systemd-networkd config met de Fritz!Box ter referentie:

# wan0.network 
[Match]
Name=wan0

[Network]
Description=Ziggo WAN interface to modem
LinkLocalAddressing=ipv6
LLDP=no
EmitLLDP=no
# SLAAC on this interface. DHCPv6-PD prefixes are for downstream and not used on
# this interface here.
IPv6AcceptRA=yes
# 'yes' enables both DHCPv4 and DHCPv6 if IPv6AcceptRA.DHCPv6Client is also enabled.
DHCP=yes

[DHCPv4]
# Minimal DHCPv4, will use my own DNS. Only need IP + default gateway basically.
Hostname=myhostname
UseHostname=no
UseDNS=no
UseNTP=no
UseSIP=no
UseRoutes=no
UseGateway=yes

[IPv6AcceptRA]
# Minimal IPv6 SLAAC, will use my own DNS. Only need IP/prefix + default route
# basically.
UseDNS=no
UseDomains=no
# 'always' means:
# > DHCPv6 client will be started in "solicit" mode when an RA is received, even
# > if neither the "managed" nor the "other configuration" flag is set in the RA.
DHCPv6Client=always

[DHCPv6]
UseHostname=no
UseDNS=no
UseNTP=no
# Disable IA_NA, only enable IA_PD, or else the Fritz!Box will reply with an
# error in IA_PD-only mode.
UseAddress=no
# Since the managed flag is not set in route announces in this IA_PD-only mode
# on the Fritz!Box, we need to hint systemd-networkd to start in solicit mode.
# Seems redundant with IPv6AcceptRA.DHCPv6Client=always, but 🤷.
WithoutRA=solicit
# Set UseDelegatedPrefix to 'yes' to request a delegated prefix (IA_PD).
UseDelegatedPrefix=yes
# Leave the network unspecified, but only supply a size like this: '::/60' for
# only sending a size hint and be happy with whatever dynamic network prefix is
# available / given by Ziggo.
PrefixDelegationHint=::/60

 

# clients0.network 
[Match]
Name=clients0

[Network]
Description=LAN for home network clients
LinkLocalAddressing=ipv6
LLDP=no
EmitLLDP=no
# This is a router, do not accept route announces from misbehaving clients.
IPv6AcceptRA=no
# Announces a DHCPv6-PD prefix (see DHCPPrefixDelegation section below) and assigns
# one to this network.
DHCPPrefixDelegation=yes
IPv6SendRA=yes

[Address]
# IPv4 addressing. DHCP server running externally.
# TODO: also run the DHCP server using systemd-networkd.
Address=10.123.0.1/24

[IPv6SendRA]
# DNS server and domain config only via IPv4/DHCPv4 for now.
EmitDNS=no
EmitDomains=no

[DHCPPrefixDelegation]
# Takes a /64 with index 1 from the pool of addresses available via wan0/Ziggo.
UplinkInterface=wan0
SubnetId=1
Announce=yes

 

caesar

Level 17
Expert
  • 3638Posts
  • 65Oplossingen
  • 1012Likes

@gertvdijk 

ISP's zijn vaak geneigd goedkope prutsrouters te leveren, Ziggo is daar een heel goed voorbeeld van. Het Fraunhofer instituut (Duitse TNO) heeft laatst routers op hun veiligheid getest. Routers van ISP's namen ze niet eens mee in de test, omdat het altijd goedkope rotzooi is die ook niet onderhouden wordt.

 

Dat heb je nu ervaren, koop dus altijd een eigen router, en vertrouw nooit op prutsrouters van ISP's. Dat gezegd hebbende, er zijn in Nederland ook verstandige kabel ISP's, en die leveren Fritz!boxen.

E-mail notificaties
Aan Uit

Ontvang een update bij nieuwe reacties in dit topic.