Ich verstehe nicht, wie es analysiert wird, ich meine von oben nach unten oder von unten nach oben?
Wenn es von oben nach unten analysiert wird, wird immer alles an den Router in meinem Haus gesendet, obwohl das IP-Ziel 192.168.1.15 war. Ich wusste jedoch (fälschlicherweise?), dass wenn sich ein PC in demselben lokalen Netzwerk befindet und ich das MAC-Ziel über eine Broadcast-Nachricht wiederhergestellt habe, der PC die Nachricht direkt an das Ziel senden konnte.
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 localTabelle ist die spezielle Routingtabelle, die Steuerrouten mit hoher Priorität für lokale Adressen und Broadcast-Adressen enthält.
Die mainTabelle 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 rokurz). Ich empfehle, den alten routeBefehl nicht mehr zu verwenden, da er nur die mainTabelle anzeigt und das Ausgabeformat etwas archaisch ist.
Die Tabelle defaultist 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.
Gibt es eine Möglichkeit, diese Priorität zu ändern?
Mheni
4
Die Routing-Tabelle wird normalerweise in der Reihenfolge von "am spezifischsten" bis "am wenigsten spezifisch" angewendet. Ein Ziel 0.0.0.0mit einer Netzmaske von 0.0.0.0, dh Ihre Standardroute , ist am wenigsten spezifisch und wird daher immer als letztes angewendet.
Wenn Sie die MAC-Adresse für einen anderen PC in Ihrem lokalen Netzwerk hatten, dieser sich jedoch in einem anderen Subnetz befand, könnten Sie eine bestimmte Hostroute für diesen PC hinzufügen, und Sie würden wahrscheinlich eine Kommunikation erhalten.
s / normalerweise / immer /. Das ist ziemlich grundlegend für die Funktionsweise von Routingtabellen.
Celada
1
@ Celada Ich habe die Erwähnung von Metriken für "gleiche spezifische" Routen ausgelassen. Und dann gibt es Richtlinienrouting. Zumindest für den Moment stehe ich normalerweise bereit .
Die Routing-Tabelle wird normalerweise in der Reihenfolge von "am spezifischsten" bis "am wenigsten spezifisch" angewendet. Ein Ziel
0.0.0.0
mit einer Netzmaske von0.0.0.0
, dh Ihre Standardroute , ist am wenigsten spezifisch und wird daher immer als letztes angewendet.Wenn Sie die MAC-Adresse für einen anderen PC in Ihrem lokalen Netzwerk hatten, dieser sich jedoch in einem anderen Subnetz befand, könnten Sie eine bestimmte Hostroute für diesen PC hinzufügen, und Sie würden wahrscheinlich eine Kommunikation erhalten.
quelle