Display MoreIch weiß jetzt, warum der Routing-Eintrag nicht ausreicht. Der NDP-Code schaut nicht in die Onlink-Routen (Routen ohne RTF_GATEWAY Flag). Er schaut nur in die NDP-Prefix Tabellen und die werden gefüllt, wenn man Adressen zum Interface hinzufügt oder wenn diese per Router-Advertisment empfangen werden.
Ein "Trick" wäre am Uplink-Interface Router-Advertisements zu aktivieren , denn wenn ein Interface Router-Advertisments empfangen soll, aber keine Prefixe bisher empfangen hat, ist jede Adresse Nachbar, siehe hier. Gibt auch einen Bugreport dazu. Manuell die Einträge in die NDP-Tabelle zu schreiben hilft, da der Kernel es dann als Nachbarn ansieht und das Interface kennt. Aber alles nicht hübsch und alles andere als zufriedenstellend. Die MAC-Adressen können sich natürlich zukünftig auch ändern. Müsste man ein Script für schreiben.
Etwas, was aber problemlos zu funktionieren scheint, ist das IPv6-Netz als /48 zu konfigurieren. Dann funktioniert alles ohne weiteren Tricks. Die Netcup-Router sind dann direkte Nachbarn und FreeBSD ist glücklich. In meinen Tests konnte ich auch fremde Netze am gleichen Router noch erreichen. Man selbst hat zwar nur ein /64er Netz, aber der Router scheint das komplett anliegende /48er-Netz zu switchen (gefiltert, so dass man nur Traffic sieht die für die eigene VM bestimmt ist). Das ist natürlich auch ein Implementierungsdetail, kann sich auch ändern, beinhaltet aber immerhin keine festen MAC-Adressen in der NDP-Tabelle…
Also einfach:Codeifconfig_vtnet0_ipv6="inet6 2a03:4000:24:yyyy::1/48" # statt /64 # Wenn man seine eigenen Adresse nicht über Uplink rausschicken will, weil z.B. noch nicht alle Jails gestartet wurden: ipv6_static_routes="protect_mynet" ipv6_route_protect_mynet="2a03:4000:24:yyyy::/64 -reject"
Zusammenfassend kann man sagen, dass FreeBSD einfach keine IPv6-Onlink-Routen gescheit unterstützt. Gleichzeitig verwendet der NDP-Code die normale IPv6-Routing Logik und hat dann ein Problem wenn die Quelladresse in einem fremden Netz ist (was der RFC nicht ausschließt). Netcup könnte die Kompatibilität maximieren und das Problem relativ einfach komplett umgehen und machen was man üblicherweise tut: Für link-lokalen Traffic einfach durchgehend das fe80::/64 Netz nutzen. Aber der RFC schreibt das wiederum auch nicht zwingend vor.
Danke, das funktioniert bei mir, nachdem ich lange nach einer Lösung gesucht hatte.
Woher hast du denn "ipv6_route_protect_mynet"? Die Variable steht in keinem rc-Skript und Google findet nur deinen Beitrag hier im Forum.
Hast du evtl. eins der rc-Skripte angepasst?