Erzwingen Sie lokalen Netzwerkverkehr durch den Switch

392
pfbrewst

Ich habe eine Maschine mit drei Netzwerkkarten. Eine Karte ist mit einem WAN verbunden, und die beiden anderen Karten sind mit demselben Switch mit demselben Subnetz (192.168.1.0/24) verbunden. Was ich tun möchte, ist das Senden von Daten zwischen den beiden Karten. Stellen Sie jedoch sicher, dass die Daten tatsächlich durch den Switch geleitet werden, anstatt intern im Linux-Netzwerkstapel zu bleiben.

Wenn ich die beiden Karten normal einrichte und versuche, eine nach der anderen zu pingen, funktioniert es, aber Wireshark zeigt keinen Datenverkehr an und geht daher nicht ins Netzwerk.

Ich habe versucht, statische Routen zum Switch einzurichten, die den gesamten Verkehr zwingen, den Switch durchlaufen zu müssen. Wenn ich dies tue, werden die Pings netto beantwortet, und ich bekomme eine Flut von unbeantworteten ARP-Anforderungen, die versuchen, die andere Adresse zu finden. Beide Adressen können jedoch einen anderen Computer im Subnetz anpingen, und der Computer kann an beide Adressen anpingen.

Ich habe versucht, die Arp-Filtereinstellungen im Linux-Kernel zu ändern, aber kein Glück.

Irgendwelche Vorschläge? Vielen Dank!

Außerdem gibt es Bonuspunkte für die Einrichtung einer NIC mit IP-Aliasing, um dasselbe zu tun.

0
Ich glaube das ist unmöglich. Scott vor 6 Jahren 0
Ist dies ein verwalteter Switch oder nicht verwaltet? Tim_Stewart vor 6 Jahren 0
Ich verwende derzeit einen nicht verwalteten Switch. Ich teste gerade, ob das möglich ist. Wenn ich dies für das aktuelle Projekt tun muss, handelt es sich um einen verwalteten Switch. pfbrewst vor 6 Jahren 0
Mögliches Duplikat von [Kann ich den Transport von IP-Paketen über eine "Loopback" -Verbindung auf demselben Rechner erzwingen?] (Https://superuser.com/questions/1223420/can-i-force-ip-packets-to-be -transportiert-über-eine-Loopback-Verbindung-am-Sam) Kamil Maciorowski vor 6 Jahren 2
Siehe auch: [Erzwingen des Ping-Befehls für den Ausgang, wenn die Zielschnittstelle lokal ist (Debian)] (https://superuser.com/q/1241712/432690). Kamil Maciorowski vor 6 Jahren 0

1 Antwort auf die Frage

-1
infinmed

Ich bin neu hier, aber ich könnte die Antwort auf diese Frage haben.

Das Betriebssystem versucht zu erkennen, dass die andere Netzwerkkarte ein lokales Gerät ist. Ich denke, Sie können die Option " dev " für " ip route " verwenden, um die andere Netzwerkkarte auszulösen.

Zum Beispiel habe ich eine IP-Adresse:

45.32.160.129 

Die Route für dieses Subnetz zeigt Device dev ens3

45.32.160.0/24 dev ens3 proto kernel scope link src 45.32.160.129 

Angenommen, ich hatte eine andere Netzwerkkarte, ens4, am 45.32.161.4/24:

45.32.161.0/24 dev ens4 proto kernel scope link src 45.32.161.4 

dann können Sie die ' dev ' Option verwenden, um ' ip route auszuführen', um das verwendete Gerät anzugeben. Auf diese Weise können Sie festlegen, dass die andere Netzwerkkarte sich selbst für die ens3-IP verwendet, anstatt ens3 (selbst), wenn Sie versuchen, von der lokalen Maschine aus darauf zuzugreifen. Der Trick dabei ist, dass Sie auch Richtlinienrouting verwenden müssen. Da Sie nicht mit der Netzwerkkarte versuchen können, auf sich selbst zuzugreifen, gehen Sie auch von der anderen Kartenschnittstelle aus, da sie sich selbst nie findet. Sie müssen also mit policy / source routing angeben, dass die andere Karte nur dann durchgespielt werden soll, wenn diese Karte auf sie zugreift. Dort müssten Sie eine Quellenübereinstimmung angeben. Darüber hinaus müssen Sie sicherstellen, dass Sie an die richtige IP-Quelladresse in Ihrer Netzwerksoftware Ihrer Wahl gebunden sind, die Sie verwenden oder testen möchten. Dies sollte den Zugriff auf die andere Netzwerkkarte über den Switch erzwingen.

Dies kann Ihr Problem lösen. Die Rangfolge der Route und den Parameter " dev " finden Sie in der Manpage ' ip route ' . Dann sehen Sie sich die Regelübereinstimmung an, um den Richtlinienabschnitt auszuführen. Es sollte ungefähr so ​​aussehen:

ip rule add from 45.32.161.4 lookup from1 ip rule add from 45.32.160.129 lookup from2 

Fügen Sie dann die entgegengesetzten Routen hinzu:

ip route add 45.32.160.129 via 45.32.161.4 dev ens4 table from1 ip route add 45.32.161.4 via 45.32.160.129 dev ens3 table from2 

Diese Tabellen müssen in / etc / iproute2 erstellt werden

Sie haben die zwei Adressen in verschiedenen Netzwerken, aber die Frage fragt nach Adressen in demselben Netzwerk. Ron Maupin vor 6 Jahren 1
Es würde in beiden Fällen genauso gelten. Der Standardwert, der verwendet wird, wenn sich beide im selben Subnetz befinden, ist nur der erste, der hinzugefügt wird. Er müsste sich an eine Verbindung binden, für die der Datenverkehr für das Standardgateway ausgehen würde oder nicht. Das oben Gesagte gilt jedoch immer noch. Mit anderen Worten, wenn er die IPs und Subnetze ändert, funktioniert das immer noch. infinmed vor 6 Jahren 0
Ich werde es versuchen, ich habe ein paar andere mögliche Lösungen gesehen, die ähnlich sind, obwohl sie iptables verwenden. Ich werde es wissen lassen, wenn es funktioniert. Vielen Dank! pfbrewst vor 6 Jahren 0