Speichert Linux RAs im Cache?

Speichert Linux RAs im Cache?

Wegenein Fehler in OpenBSD rtadvd, mein Router sendet manchmal RA mit einem falschen Präfix

prefix 2001:41d0:fe4b:ecf1::/64
prefix 2001:41d0:fe4b:ec42::/64
prefix 2a01:e35:8aea:ac42::/64

Aber wenn ich es so repariere, dass es nur die richtigen Präfixe ( 2001:41d0:fe4b:ec42::/64und prefix 2a01:e35:8aea:ac42::/64) sendet, undAdresse löschenVon der Schnittstelle aus weist meine Linux-Box jedes Mal, wenn sie eine RA vom Router erhält, IPv6 vom fehlerhaften Präfix zu.

15:46:44.138257 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 136) fe80::8621:df60:6d70:8da > ff02::1: [icmp6 sum ok] ICMP6, router advertisement, length 136
    hop limit 64, Flags [none], pref medium, router lifetime 1800s, reachable time 0s, retrans time 0s
      source link-address option (1), length 8 (1): 00:00:24:d1:42:0d
        0x0000:  0000 24d1 420d
      prefix info option (3), length 32 (4): 2a01:e35:8aea:ac42::/64, Flags [onlink, auto], valid time 2592000s, pref. time 604800s
        0x0000:  40c0 0027 8d00 0009 3a80 0000 0000 2a01
        0x0010:  0e35 8aea ac42 0000 0000 0000 0000
      prefix info option (3), length 32 (4): 2001:41d0:fe4b:ec42::/64, Flags [onlink, auto], valid time 2592000s, pref. time 604800s
        0x0000:  40c0 0027 8d00 0009 3a80 0000 0000 2001
        0x0010:  41d0 fe4b ec42 0000 0000 0000 0000
      rdnss option (25), length 24 (3):  lifetime 900s, addr: 2a01:e35:8aea:ac42::10
        0x0000:  0000 0000 0384 2a01 0e35 8aea ac42 0000
        0x0010:  0000 0000 0010
      dnssl option (31), length 24 (3):  lifetime 900s, domain(s): geekwu.org.
        0x0000:  0000 0000 0384 0667 6565 6b77 7503 6f72
        0x0010:  6700 0000 0000
15:46:44.553069 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) :: > ff02::1:ffd1:28d4: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2001:41d0:fe4b:ecf1:8581:1b57:b9d1:28d4
      unknown option (14), length 8 (1): 
        0x0000:  1d76 c406 8db8

Sie können den RA mit nur 2 Präfixen sehen und dann das neighbor solicitationPaket, das meine Box ist, die überprüft, ob die Adresse „frei“ (DAD) ist ... und das ist sie, da dieses Präfix auf dieser Ethernet-Verbindung nicht verwendet wird. Da diese Adresse zuletzt eingefügt wurde, ist sie die Standardadresse für ausgehende Verbindungen, aber der Router kann sie nicht zurückleiten, da sie nicht definiert ist.

Ich kann nur vermuten, dass der Kernel – oder etwas im Benutzerbereich – aus irgendeinem Grund die alte RA im Cache behält und sie anstelle der „aktiven“ RA verwendet (oder führt er sie vielleicht zusammen?)

Wenn ja, gibt es eine Möglichkeit, es zu sehen? diesen Cache zu leeren oder zu ändern? Ich kann meine Box wahrscheinlich neu starten, aber, nun ja ... scheint schlecht zu sein.

(Kernel 4.16.13-1-ARCH)

BEARBEITEN:

Ich habe mit scapy eine RA für dieses Präfix mit einer Lebensdauer von 0 gesendet, und die Adresse wird für jede nachfolgende RA nicht mehr hinzugefügt.

Welcome to Scapy (unknown.version)
>>> a = IPv6()
>>> a.dst = "ff02::1"
>>> b = ICMPv6ND_RA()
>>> b.display()
>>> c = ICMPv6NDOptSrcLLAddr()
>>> c.lladdr = "00:00:24:d1:42:0d"
>>> d = ICMPv6NDOptMTU()
>>> e = ICMPv6NDOptPrefixInfo()
>>> e.prefixlen = 64
>>> e.prefix = "2001:41d0:fe4b:ecf1::"
>>> e.preferredlifetime=0
>>> e.validlifetime=0
>>> send(a/b/c/d/e)

Auf dieser Box läuft NetworkManager (1.10.8) mit der Standardkonfiguration

Antwort1

Dies klingt nach dem erwarteten Ergebnis.

SLAAC ermöglicht es mehreren Routern, unterschiedliche Präfixsätze zu bewerben, daher neue RAsnichtMachen Sie vorherige ungültig und aktualisieren Sie sie nur inkrementell.

Sobald ein Präfix konfiguriert wurde, bleibt es für die Dauer seiner "gültigen" Lebensdauer bestehen (erneuert durch jede neue RA), es sei denn, eine RAausdrücklichsetzt die Lebensdauer dieses Präfixes auf Null. (SieheRFC 4862.)

verwandte Informationen