Nachdem ich wegen eines Absturzes in einem Treiber die Tage meinen Server einmal neustarten musste, gab es natürlich einen kleineres Problem in de doch relativ aufwändigen Netzwerk-Konfiguration. Per Hand ist an sich nicht viel zu tun, außer drei kleine Shell-Scripts auszuführen, die das ganze andere Setup übernehmen. Aber wie immer steckt der Teufel im Detail, da mich kurze Zeit eine Meldung vom Monitoring erreichte.
Die erste Frage war natürlich, was war passiert. Beim Monitoring handelt es sich vereinfacht gesagt um einen extern laufenden Client, der regelmäßig die Konnektivität via IPv4 und IPv6 zum Server testet und im Fehlerfalle eine Mailbenachrichtigung auf ein externes System sendet. Da IPv4 und IPv6 getrennt behandelt werden und nur eine Benachrichtigung für IPv6 einging, war recht schnell klar, dass aus irgendeinem Grund das Routing der IPv6-Adressen nicht klappen wollte, obwohl die Adressen an sich hinzugefügt wurden. Dies bestätigte auch der Blick mit
ip a s
der die gewohnt lange Liste der IPv6 auf den Interfaces lieferte. Was aber überraschte war die Ausgabe von
ip r s
da diese drei Default-Routen über ein internes Mesh-Netzwerk offenbarte, aber nicht die sonst zu bevorzugende direkte Route über eth0 – die explizit von den Setup-Scripts hinzugefügt wird. Also versucht, die Route manuell noch einmal hinzufügen:
ip -6 r a default via fe80::1 src Pr:i:m:a:r:y:IP:v6 dev eth0
und postwendend von RTNETLINK den Hinweis bekommen, dass diese Route bereits existieren würde – nur schade, dass diese vom Kernel eingebildete Route nicht in der realen Routing-Tabelle auftauchte.
Bei den drei bereits existierenden Default-Routen handelte es sich um Route Advertisements, die – wie bereits erwähnt – zu einem Mesh-Netzwerk gehörten. Rein zum Testen habe ich diese dann einmal kurzzeitig entfernt, um nochmals die Default-Route auf reale Hardware zu biegen. Und siehe da: Plötzlich waren da in der Routing-Tabelle wie erwartet 4 Default-Routen: eine auf eth0 und 3 Route Advertisements auf dem Mesh-Netzwerk.
Merke: Statische Default-Routen können in Präsenz von Route Advertisements nicht hinzugefügt werden.
Nunja, die Scripts sind entsprechend aktualisiert.