Das Routing verwendet immer noch die Haupttabelle, nachdem ich es für die Verwendung einer benutzerdefinierten Routingtabelle konfiguriert habe

297
ica

Ich habe folgende Situation:

- - - - - - - | namespace |-------o o------ - - - - - - - vethY ppp0 vethX 

woher:

  • ppp0 ist eine PPP-Schnittstelle und ihre IP-Adresse lautet 192.168.100.169/24
  • vethX ist eine virtuelle Ethernet-Schnittstelle innerhalb des Namespaces. Die IP-Adresse lautet 10.0.0.3/24
  • vethY ist ein anderes virtuelles Ethernet-Interface, seine IP-Adresse ist 10.0.0.5/24 und es ist auch das Standard-Gateway für den Namespace

Die Routing-Tabelle in den Namespace sieht folgendermaßen aus:

$ sudo ip netns exec my_namespace ip route default via 10.0.0.5 dev vethX 10.0.0.0/24 dev vethX proto kernel scope link src 10.0.0.3 

Ich möchte in diesem Szenario richtlinienbasiertes Routing verwenden. Insbesondere möchte ich eine benutzerdefinierte Routing-Tabelle verwenden, wenn die eingehende Schnittstelle von Netzwerkpaketen die vethYoder die ppp0Schnittstelle ist.

Ich habe die benutzerdefinierte Routing-Tabelle mit dem Namen ' T1 ' erstellt und den Eintrag "T1" in die Datei eingefügt /etc/iproute2/rt_tables.
Dann habe ich die Richtlinienroutingregel hinzugefügt, die dem System mitteilt, wann diese neue Routingtabelle verwendet werden soll.
Jetzt sind die Richtlinienroutingregeln:

$ ip rule 0: from all lookup local 32764: from all iif ppp0 lookup T1 32765: from all iif vethY lookup T1 32766: from all lookup main 32767: form all lookup default 

Dann habe ich die folgenden Regeln meiner benutzerdefinierten Tabelle hinzugefügt

$ ip route show table T1 default via 192.168.100.169 dev ppp0 10.0.0.0/24 dev vethY scope link 192.168.100.180 dev ppp0 scope link 

Die letzte Zeile zeigt den anderen Endpunkt der Punkt-zu-Punkt-Verbindung.
Außerdem ist die Hauptroutingtabelle leer.

Wenn ich mit dieser Konfiguration in den Namespace komme und 10.0.0.5 ping, erhalte ich keine Antworten (weder die ARP-Antwort).
Anforderungspakete erreichen die vethY-Schnittstelle (ich habe gesehen, dass wireshark verwendet), aber es wird keine Antwort generiert.
Wenn mein Arp-Cache leer ist, wird keine Arp-Antwort zurückgesendet, wenn eine Arp-Anforderung gesendet wird.

Wenn ich die Regel
10.0.0.0/24 dev vethY scope link
auch in die Haupttabelle einfüge, fließen alle Pakete korrekt.

Warum erhalte ich keine Antworten, wenn ich diese Regel nicht zur Haupttabelle hinzufüge?
Warum ist die Haupttabelle beteiligt, da ich das Routing so konfiguriert habe, dass T1 für alle Pakete verwendet wird, die entweder von vethY oder von ppp0 stammen?

1

0 Antworten auf die Frage