IPv6: Verliere Verbindung bei M-Net (renew/rebind geht ins Leere)

Started by abulafia, October 10, 2024, 08:45:24 AM

Previous topic - Next topic
Servus,

ich habe ein schwerwiegendes Problem mit IPv6 & OPNsense's dhcp6c an meinem FTTH Anschluss (M-Net DualStack mit public IPv4). OPNsense 24.7.4-24.7.6 gleiches Problem.

Was läuft:

1. Eingerichtet wie empfohlen: igb0 -> vlan40 interface -> darauf das WAN mit IPv4 per PPPoE und IPv6 per DHCPv6 (Use IPv4 connectivity: CHECK, Configuration Mode: BASIC, Prefix delegation size:56, Request prefix only: CHECK, Send prefix hint: CHECK).
2. Beim Start erhalte ich eine 56er Prefix Delegation und die LAN interfaces erhalten alle eine öffentliche IPv6 per "track interface".
3. Für 2h alles prima. IPv6 läuft.

Dann kommt das Problem:

Nach 2h läuft die PD lease time ab (vltime=7200).   Alle bestehenden leases werden gekündigt.

DHCP6c versucht eine neue PD zu erhalten, bekommt aber keine Antwort. Das sieht dann so aus:


2024-10-08T11:58:08 Notice dhcp6c reset a timer on pppoe1, state=SOLICIT, timeo=1, retrans=2125
2024-10-08T11:58:08 Notice dhcp6c send solicit to ff02::1:2%pppoe1
2024-10-08T11:58:08 Notice dhcp6c set IA_PD
2024-10-08T11:58:08 Notice dhcp6c set IA_PD prefix
2024-10-08T11:58:08 Notice dhcp6c set option request (len 4)
2024-10-08T11:58:08 Notice dhcp6c set elapsed time (len 2)
2024-10-08T11:58:08 Notice dhcp6c set client ID (len 14)
2024-10-08T11:58:08 Notice dhcp6c Sending Solicit
2024-10-08T11:58:07 Notice dhcp6c reset a timer on pppoe1, state=SOLICIT, timeo=0, retrans=1052
2024-10-08T11:58:07 Notice dhcp6c send solicit to ff02::1:2%pppoe1
2024-10-08T11:58:07 Notice dhcp6c set IA_PD
2024-10-08T11:58:07 Notice dhcp6c set IA_PD prefix
2024-10-08T11:58:07 Notice dhcp6c set option request (len 4)
2024-10-08T11:58:07 Notice dhcp6c set elapsed time (len 2)
2024-10-08T11:58:07 Notice dhcp6c set client ID (len 14)
2024-10-08T11:58:07 Notice dhcp6c a new XID (6defee) is generated
2024-10-08T11:58:07 Notice dhcp6c Sending Solicit
2024-10-08T11:58:07 Notice dhcp6c reset a timer on pppoe1, state=INIT, timeo=0, retrans=144
2024-10-08T11:58:07 Notice dhcp6c remove an IA: PD-0
2024-10-08T11:58:07 Notice dhcp6c IA PD-0 is invalidated
2024-10-08T11:58:07 Notice dhcp6c remove an address 2001:a61:XXX:XX64:20c:29ff:fe62:7429/64 on vmx0
2024-10-08T11:58:07 Notice dhcp6c remove an address 2001:a61:XXX:XXfa:a236:9fff:fe1d:8b2/64 on vlan05
2024-10-08T11:58:07 Notice dhcp6c remove an address 2001:a61:XXX:XXde:a236:9fff:fe1d:8b2/64 on vlan02
2024-10-08T11:58:07 Notice dhcp6c remove an address 2001:a61:XXX:XXc8:a236:9fff:fe1d:8b2/64 on vlan01
2024-10-08T11:58:07 Notice dhcp6c remove an address 2001:a61:XXX:XX50:a236:9fff:fe1d:8b2/64 on vlan03
2024-10-08T11:58:07 Notice dhcp6c remove an address 2001:a61:XXX:XX29:a236:9fff:fe1d:8b2/64 on vlan02.41
2024-10-08T11:58:07 Notice dhcp6c remove an address 2001:a61:XXX:XX01:a236:9fff:fe1d:8b1/64 on igb1
2024-10-08T11:58:07 Notice dhcp6c remove a site prefix 2001:a61:XXX:XX00::/56
2024-10-08T11:58:07 Notice dhcp6c prefix timeout for 2001:a61:XXX:XX00::/56


Wie bekommt Ihr das denn zum laufen, speziell die M-Net Kollegen (@meyergru)?! Bitte helft :-)

Etwas ausführlicheres log (mit boot + lease) anbei:

Vorausgeschickt sei, dass manche Provider offenbar je nach Ausbaugebiet und Zugangstechnologie leicht unterschiedliches Verhalten aufweisen (DG ist ein gutes Beispiel). Obwohl meine IPv6-Konfiguration bei M-Net gut läuft, weiß ich, dass manche User damit immer noch Probleme haben. Es hat in letzter Zeit auch ein paar Änderungen daran gegeben.

Ich setze jetzt mal voraus, dass Du die "IPv4-Option" bei M-Net gebucht hast (ich habe sie und bin per Glasfaser mit Nokia-Technik angebunden).

Mein WAN ist pppoe0, welches sich auf ein VLAN 40 über eine Ethernet-Schnittstelle mit dem ONT verbindet. Die Einstellungen sind unten gezeigt. Ich setze die MTUs auf 1512 (für das VLAN), 1508 (ONT) und 1508 (WAN) - nur diese Einstellungen und ein Reboot ergeben bei mir eine echte 1500er MTU, warum auch immer.

Darüber hinaus habe ich das physische ONT-Interface mit der CIDR 192.168.1.2/24 versorgt, um Zugriff auf den ONT zu erhalten.

Ich benutze das neue Feature, um trotz fehlender IA_NA IPv6 bei M-Net ("request prefix only") das WAN mit einem Präfix (hier: 0x88) und einer EUI-64 (hier: 0x12345678) zu versorgen.

Intel N100, 4 x I226-V, 16 GByte, 256 GByte NVME, ZTE F6005

1100 down / 440 up, Bufferbloat A+

Die lokalen VLANs sind per "Track Interface" auf verschiedenen 8-Bit-Präfixen des zugewiesenen 56er IA_PD unterwegs. Router Advertisements wie gezeigt.
Intel N100, 4 x I226-V, 16 GByte, 256 GByte NVME, ZTE F6005

1100 down / 440 up, Bufferbloat A+

Ansonsten fällt mir noch auf, dass Du offenbar die OpnSense als VM laufen hast (vmx0). Das kann natürlich alle möglichen Effekte haben. Wir hatten neulich ein schönes Problem, dass bestimmte ICMPv6-Pakete nach einer gewissen Zeit nicht mehr "durchkommen", das dortige Setting könntest Du mal probieren.


Intel N100, 4 x I226-V, 16 GByte, 256 GByte NVME, ZTE F6005

1100 down / 440 up, Bufferbloat A+

Danke erstmal!

Konfiguration (ergänzt):
- IPv4 Option: Ja, habe ich gebucht --> full Dual Stack.
- Virtualisiert: Ja, aber - die WAN und LAN interfaces laufen auf durchgereichten physischen NICS (i350 passthrough).
- MTU habe ich nichts gesetzt; das und ICMP schaue ich mir im speziellen an.
- ONT ist bei mir ein Icotera i5208-20; mir ist nicht bekannt, ob/wie ich da Zugriff drauf hätte.
- Konfiguration der interfaces ist wie bei Dir (mit Ausnahme der MTU-Einstellungen; das habe ich jetzt nachgeholt. ping -f -l 1472 unter windows geht)

Ich vermute irgendein Problem beim ICMP / IPv6 Versand. An den existierenden firewall rules an sich sollte es nicht liegen, ich hatte es schonmal neu aufgesetzt auf ganz "basic". Allenfalls FEHLEN mir Regeln für IPv6, die ich hätte einrichten sollen ...? Aber die ersten zwei Stunden mit public PD prefix geht ja alles ...

Ich kann - ohne "public" IPv6 - mein LAN-interface an der OPNsense anpingen, aber das WAN-interface schon nicht mehr:


C:\>ping -6 fe80::a236:9fff:fe1d:8b1

Ping wird ausgeführt für fe80::a236:9fff:fe1d:8b1 mit 32 Bytes Daten:
Antwort von fe80::a236:9fff:fe1d:8b1: Zeit=1ms
Antwort von fe80::a236:9fff:fe1d:8b1: Zeit=1ms
Antwort von fe80::a236:9fff:fe1d:8b1: Zeit=1ms

C:\>Ping wird ausgeführt für fe80::20c:29ff:fee1:5cb8 mit 32 Bytes Daten:
Zielhost nicht erreichbar.
Zielhost nicht erreichbar.

Ping-Statistik für fe80::20c:29ff:fee1:5cb8:
    Pakete: Gesendet = 2, Empfangen = 0, Verloren = 2
    (100% Verlust),

Randbemerkung: Insgesamt schade, dass PPPoE immer wieder negativ auffällt in der Hinsicht selbst wenn wir darn arbeiten, im Test mit den Nutzern Verbesserungen sehen und dann zufällig produktiv wieder irgendwas passiert was gar nicht Thema von Änderungen war. :/


Grüsse
Franco

Ich sehe, Du hast die IPv4 Option. Außerdem fiel mir im Log noch diese Zeile auf:

2024-10-08T09:58:05 Notice dhcp6c duplicated interface: pppoe1


Wieso ist das eigentlich pppoe1? Kann OpnSense dann durcheinanderkommen, wenn es mehrere PPPoE-Interfaces gibt? Schau Dir mal /var/etc/dhcp6c.conf an.

Bei mir kommt der IPv6-Renew alle 30 Minuten, sollte die halbe Lease-Zeit sein, müsste also 1h und nicht 2h sein.
Intel N100, 4 x I226-V, 16 GByte, 256 GByte NVME, ZTE F6005

1100 down / 440 up, Bufferbloat A+

Quote from: meyergru on October 10, 2024, 10:27:36 AM
Wieso ist das eigentlich pppoe1? Kann OpnSense dann durcheinanderkommen, wenn es mehrere PPPoE-Interfaces gibt? Schau Dir mal /var/etc/dhcp6c.conf an.
Will do, gibt aber (in der GUI) nur ein PPPoE interface. Vermutlich, weil ich die config gelöscht und neu angelegt hatte.
Quote from: meyergru on October 10, 2024, 10:27:36 AMBei mir kommt der IPv6-Renew alle 30 Minuten, sollte die halbe Lease-Zeit sein, müsste also 1h und nicht 2h sein.
Das dürfte passen - ich habe ja:
2024-10-08T09:58:07 Notice dhcp6c create a prefix 2001:a61:XXX:XX00::/56 pltime=3600, vltime=7200
Nach einer Stunde wechselt er von state=RENEW auf state=REBIND:
2024-10-08T10:46:18 Notice dhcp6c Sending Rebind
2024-10-08T10:46:07 Notice dhcp6c send rebind to ff02::1:2%pppoe1
2024-10-08T10:46:07 Notice dhcp6c set IA_PD
2024-10-08T10:46:07 Notice dhcp6c set IA_PD prefix
2024-10-08T10:46:07 Notice dhcp6c set option request (len 4)
2024-10-08T10:46:07 Notice dhcp6c set elapsed time (len 2)
2024-10-08T10:46:07 Notice dhcp6c set client ID (len 14)
2024-10-08T10:46:07 Notice dhcp6c a new XID (bfd481) is generated
2024-10-08T10:46:07 Notice dhcp6c Sending Rebind
2024-10-08T10:46:07 Notice dhcp6c reset a timer on pppoe1, state=REBIND, timeo=0, retrans=10893
2024-10-08T10:46:07 Notice dhcp6c IA timeout for PD-0, state=RENEW
2024-10-08T10:38:09 Notice dhcp6c reset a timer on pppoe1, state=RENEW, timeo=6, retrans=643131
2024-10-08T10:38:09 Notice dhcp6c send renew to ff02::1:2%pppoe1


Quote from: franco on October 10, 2024, 10:25:37 AM
Randbemerkung: Insgesamt schade, dass PPPoE immer wieder negativ auffällt
Danke, Franco - obs hier wirklich PPPoE ist weiss ich noch nicht, die IPv4 Verbindung (PPPoE) läuft ja stabil durch.

Quote from: abulafia on October 10, 2024, 10:16:02 AM
Ich kann - ohne "public" IPv6 - mein LAN-interface an der OPNsense anpingen, aber das WAN-interface schon nicht mehr:


C:\>ping -6 fe80::a236:9fff:fe1d:8b1

Ping wird ausgeführt für fe80::a236:9fff:fe1d:8b1 mit 32 Bytes Daten:
Antwort von fe80::a236:9fff:fe1d:8b1: Zeit=1ms
Antwort von fe80::a236:9fff:fe1d:8b1: Zeit=1ms
Antwort von fe80::a236:9fff:fe1d:8b1: Zeit=1ms

C:\>Ping wird ausgeführt für fe80::20c:29ff:fee1:5cb8 mit 32 Bytes Daten:
Zielhost nicht erreichbar.
Zielhost nicht erreichbar.

Ping-Statistik für fe80::20c:29ff:fee1:5cb8:
    Pakete: Gesendet = 2, Empfangen = 0, Verloren = 2
    (100% Verlust),


Das ist klar. fe80::/64 sind Link-Local-Adressen, die nur an einem Interface Sinn ergeben, sind also nicht routebar. Normalerweise muss man beim Ping sogar angeben, über welches Interface die Pakete rausgehen sollen, also z.B. fe80::20c:29ff:fee1:5cb8%eth0.

Wenn, musst Du die WAN-IPv6 (2001:a61:...) pingen - was dank des neuen Features ja jetzt gehen sollte.
Intel N100, 4 x I226-V, 16 GByte, 256 GByte NVME, ZTE F6005

1100 down / 440 up, Bufferbloat A+

Lese ich das Log richtig:

Renew wird ignoriert. Rebind wird ignoriert. Solicit wird ignoriert. Alles wird ignoriert. Die Sequenz ist aber in Summe korrekt.

Können wir sicher sein, dass diese Pakete auch auf der WAN Schnittstelle gesendet werden?


Grüsse
Franco

Quote from: franco on October 10, 2024, 11:12:14 AM
Lese ich das Log richtig:
Ich denke ja.

Ob der Versand über WAN überhaupt erfolgt, frage ich mich auch.

Kannst Du mir kurz einen Hinweis an die Hand geben, wie ich das am besten teste/prüfe?

Ich kann zwar zB tcpdump auf der Kommandozeile starten, welches Interface und welche Optionen genau ich nehmen soll weiss ich aber nicht. Ein tcpdump - pppoe0 scheint mir nur IPv4 Pakete zu zeigen. (das Interface ist jetzt pppoe0, das Log zeigt ein voriges Setup)

Oder das ganze über einen Switch (mit vlan40) ziehen und dort mirroring machen, um mit einem Laptop zu lauschen?

Wenn ich etwas Zeit habe würde ich das System zu Testzwecken auf bare Metal umziehen, sollte aber _eigentlich_ keinen Unterschied machen.

Das pppoe0 Device halte ich für sinnvoller im Capture, da dort erstmal die Pakete sichtbar werden wie sie dhcp6c verschickt (und ggf. die Serverantworten). Ob sie dann wirklich über das physische Interface über PPP Pakete herausgehen ist dann auch noch die Frage, aber es ist weniger wahrscheinlich, dass da ein Problem besteht.

Generell ist es schwer zu sagen ob der DHCPv6 Server am anderen Ende der PPPoE Verbindung die Pakete bekommt oder nicht und aus welchem Grund er nicht antwortet obwohl die Pakete ankommen. Da könnte dann nur der ISP etwas dazu sagen.


Grüsse
Franco

Quote from: franco on October 10, 2024, 01:30:32 PM
Das pppoe0 Device halte ich für sinnvoller im Capture, da dort erstmal die Pakete sichtbar werden wie sie dhcp6c verschickt (und ggf. die Serverantworten).
Getestet mit tcpdump -vvv -i pppoe0 | grep IP6:

- solange ich ein gültiges IPv6 prefix habe: tcpdump zeigt IP6 traffic
- sobald ich kein gültiges IPv6 prefix habe: tcpdump zeigt keinen IP6 traffic

Siehe anbei ... (Befehl + console Ausgabe jeweils manuell am Anfang eingefügt in den beiden Dateien)

Nur mal als dumme Idee: Ich habe meine Gateways statisch gesetzt. Hast Du das auch?
Intel N100, 4 x I226-V, 16 GByte, 256 GByte NVME, ZTE F6005

1100 down / 440 up, Bufferbloat A+