Ich arbeite an einem FPGA-basierten Gerät zur Paketerfassung und Zeitstempelung. Um es zu testen, möchte ich versuchen, durch es zu pingen. Auf meinem Computer sind zwei 10G-Netzwerkkarten mit zwei Anschlüssen installiert, und ich habe drei Anschlüsse angeschlossen. Einer ist der "überwachte" Anschluss, an dem Pakete in beide Richtungen erfasst werden, einer ist der "durchgehende" Anschluss, der mit dem "überwachten" Anschluss verbunden ist, und Der dritte ist der "Dump" -Port, an den die erfassten und mit einem Zeitstempel versehenen Pakete gesendet werden.
Ausgabe von IP-Adresse mit irrelevanten Informationen entfernt:
3: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
link/ether 00:60:dd:xx:xx:f8 brd ff:ff:ff:ff:ff:ff
inet 192.168.99.1/24 scope global enp4s0
valid_lft forever preferred_lft forever
inet6 fe80::260:ddff:fexx:xxf8/64 scope link
valid_lft forever preferred_lft forever
5: enp6s0f0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 90:e2:ba:xx:xx:e0 brd ff:ff:ff:ff:ff:ff
inet6 fe80::92e2:baff:fexx:xxe0/64 scope link
valid_lft forever preferred_lft forever
6: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
link/ether 00:60:dd:xx:xx:f9 brd ff:ff:ff:ff:ff:ff
inet 192.168.99.2/24 scope global enp5s0
valid_lft forever preferred_lft forever
inet6 fe80::260:ddff:fexx:xxf9/64 scope link
valid_lft forever preferred_lft forever
7: enp6s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 90:e2:ba:xx:xx:e1 brd ff:ff:ff:ff:ff:ff
inet6 fe80::92e2:baff:fexx:xxe1/64 scope link
valid_lft forever preferred_lft forever
enp4s0 und enp5s0 sind die überwachten und durchgehenden Ports, enp6s0f1 ist der Erfassungsport. Ich habe den enp4s0- und enp5s0-Schnittstellen die Adressen 192.168.99.1/24 und 192.168.99.2/24 zugewiesen. Ich habe 3 Instanzen von Wireshark, eine auf jeder Schnittstelle.
Wenn ich in Python einen Raw-Socket öffne und Daten sende, wird dies in allen drei Wireshark-Instanzen erwartet. Wenn ich jedoch ping (ping -I enp4s0 192.168.99.2) ausführe, funktioniert es (es gehen keine Pakete verloren), aber in keiner der Wireshark-Instanzen wird etwas angezeigt. Ich habe versucht, die Adressen mit den richtigen Schnittstellen zur ARP-Tabelle hinzuzufügen, aber immer noch keine Würfel. Ich gehe davon aus, dass, da der Kernel die Zieladresse auf einer anderen Schnittstelle sehen kann, die Pakete niemals tatsächlich an die Netzwerkkarte gesendet werden, um über die Leitung hinauszugehen. Gibt es eine einfache Möglichkeit, die Pakete dazu zu zwingen, tatsächlich auf dem Draht herauszugehen, ohne durch 500 Reifen springen und mit Iptables, NAT usw. herumschrauben zu müssen?
quelle
arping
anstelle vonping
. Lesen Sie den Mann Seite für Befehlssyntax (dh Sie die Sende - Schnittstelle angeben müssen).