Die Routing-Tabelle wird in der Reihenfolge von am spezifischsten bis am wenigsten spezifisch verwendet.
Unter Linux ist es jedoch etwas komplizierter als man denkt. Erstens gibt es mehr als eine Routingtabelle, und wann welche Routingtabelle verwendet wird, hängt von einer Reihe von Regeln ab.
So erhalten Sie das vollständige Bild:
$ ip rule show
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
$ ip route show table local
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
broadcast 192.168.0.0 dev eth0 proto kernel scope link src 192.168.1.27
local 192.168.1.27 dev eth0 proto kernel scope host src 192.168.1.27
broadcast 192.168.1.255 dev eth0 proto kernel scope link src 192.168.1.27
$ ip route show table main
default via 192.168.1.254 dev eth0
192.168.0.0/23 dev eth0 proto kernel scope link src 192.168.1.27
$ ip route show table default
$
Die local
Tabelle ist die spezielle Routingtabelle, die Steuerrouten mit hoher Priorität für lokale Adressen und Broadcast-Adressen enthält.
Die main
Tabelle ist die normale Routingtabelle, die alle Nichtrichtlinienrouten enthält. Dies ist auch die Tabelle, die Sie sehen, wenn Sie einfach ausführen ip route show
(oder ip ro
kurz). Ich empfehle, den alten route
Befehl nicht mehr zu verwenden, da er nur die main
Tabelle anzeigt und das Ausgabeformat etwas archaisch ist.
Die Tabelle default
ist leer und für die Nachbearbeitung reserviert, wenn die vorherigen Standardregeln das Paket nicht ausgewählt haben.
Sie können eigene Tabellen hinzufügen und Regeln hinzufügen, um diese in bestimmten Fällen zu verwenden. Ein Beispiel ist, wenn Sie zwei Internetverbindungen haben, aber ein Host oder Subnetz immer über eine bestimmte Internetverbindung geroutet werden muss.
Das Policy Routing mit Linux- Buch erklärt all dies in exquisiten Details.