Linux statische rekursive Routen werden nicht unterstützt?

721
Neil McGill

Ich versuche, einige rekursive Routen hinzuzufügen. Die folgende Idee funktioniert gut auf einem Cisco-Router, aber Linux (Ubuntu 14.04.5 LTS) ist nicht glücklich

# ip -4 route add 1.1.1.1/32 dev eth4 # ip -4 route add 2.2.2.2/32 via 1.1.1.1 # ip -4 route add 3.3.3.3/32 via 2.2.2.2 RTNETLINK answers: Network is unreachable  # ip route default via 10.122.197.1 dev eth4 metric 100 1.1.1.1 dev eth4 scope link 2.2.2.2 via 1.1.1.1 dev eth4 
0
Beheben Sie die Rekursion einfach manuell und geben Sie das endgültige Gateway ein. Linux sendet geroutete Pakete direkt aus, behandelt sie nicht als möglicherweise eingehende Pakete und leitet sie erneut weiter. * Warum * brauchen Sie rekursive Routen? dirkt vor 6 Jahren 0
Ja, das kann manuell gemacht werden, aber meine Frage ist, warum dies nicht in Linux möglich ist. Entschuldigung, ich kann das Warum des Projekts nicht verraten. Neil McGill vor 6 Jahren 0
Dies ist unter Linux nicht möglich, da der Linux-Netzwerkstack auf diese Weise funktioniert. Außerdem wird die Paketverarbeitung effizienter, sodass nach der Routing-Entscheidung keine zusätzliche Überprüfung erforderlich ist. Und wenn ich den Netzwerkstack implementieren würde, hätte ich das auch nicht berücksichtigt, da ich nicht verstehen kann, warum dies jemals notwendig sein sollte (und Sie nicht erklären möchten). Ist das als Antwort ausreichend? dirkt vor 6 Jahren 0
@dirkt Dieselbe Prüfung kann beim Hinzufügen der Route einmal durchgeführt werden. So werden zB rekursive Routen in Bird implementiert. grawity vor 6 Jahren 1
Die Rekursion von Routern auf mehreren Ebenen ist in der Router-Welt eine ziemlich übliche Sache - aber Linux scheint bei Rekursion auf 1 Ebene und 2 Ebenen und darüber hinaus zu scheitern. Ich kaufe nicht besonders die Antwort, dass dies aus Effizienzgründen getan wird, wie @ grawity sagt, dass dies einmalig bei der Installation der Route in den Fib gemacht werden kann. Die Rippe kann immer noch die Rekursion auf mehreren Ebenen verfolgen. Zumindest funktioniert das bei Routern. Dies scheint entweder eine vorsätzliche Design-Wahl zu sein, die dies nicht unterstützt, oder ein Fehler in Linux ... Bird ist neu für mich - danke für diese Info. Neil McGill vor 6 Jahren 0
Senden Sie also einen Patch, der die Überprüfung beim Einfügen der Route übernimmt, entweder in `ip` oder im Kernel. Ich bin sicher, Sie werden von den Kernel-Entwicklern erfahren, ob sie aus irgendeinem Grund Einwände dagegen haben ... dirkt vor 6 Jahren 0

0 Antworten auf die Frage