Ich habe ein Linux-System (sei es A) mit 2 Ethernet-Karten, nämlich eth0 und eth1, die an zwei völlig unabhängige LANs angeschlossen sind.
Grundsätzlich wird eth0 für den normalen Anwendungsverkehr verwendet und eth1 wird nur für Debugging-Zwecke verwendet. Debugging bedeutet, dass eth1 über ein Querkabel mit einer anderen Linux-Box (sei es B) verbunden ist, auf der Wireshark ausgeführt wird. Ich möchte, dass Wireshark Anwendungspakete verarbeiten kann, die auf eth0 von A übertragen werden.
Im Grunde muss ich kopieren Reisepakete von eth0 Schnittstelle so als Schnittstelle eth1 , dass Wireshark auf Feld B kann sie schnüffeln (aus irgendwelchen Gründen habe ich nicht den physischen Zugriff auf LAN eth0). Möglicherweise muss ich auch angeben, welche Pakete gemäß einer Regel von eth0 nach eth1 kopiert werden sollen (übrigens nur basierend auf TCP / IP-Feldern).
Beachten Sie auch, dass A's eth0 nicht in den Promiscuous-Modus versetzt werden muss, da ich nur eine Teilmenge von Paketen kopieren möchte, deren Ziel A ist
Gibt es eine Möglichkeit, dies nur mit iptables zu erreichen? Oder muss ich eine Anwendung schreiben, damit dies funktioniert? Was soll ich tun, um die Pakete zu "kopieren"?
quelle
Sie können tc mirred action verwenden. Zum Beispiel: Für eingehenden Verkehr:
Für ausgehenden Verkehr:
quelle
Durchsuchen Sie das Internet nach tcpbridge, genau das macht der Job. Es kann auch verwendet werden, um mit virtuellen Maschinen zu kommunizieren.
quelle
So etwas wie rinetd Macht Arbeit (Redirector / Server für TCP nur glaube ich, so dass kein ARP, Layer 2, etc.), aber ehrlich gesagt, einige Managed Switches erhalten , die Port Mirroring - Funktionen haben , oder wenn das Feld nur für wireshark verwendet wird, Sie können eine weitere Netzwerkkarte hinzufügen, die beiden Schnittstellen überbrücken, sie vor das eth0 von Maschine A stellen und über eine dedizierte Sniffing-Maschine verfügen.
quelle
Ein Gerät, das Ethernet-Frames von einer Schnittstelle auf eine andere kopiert, ist eine Brücke. Sie können Ihr Linux-System so konfigurieren, dass es als Bridge fungiert. Einige Dokumentationen finden Sie hier:
Sie können Filterregeln auf überbrückten Verkehr anwenden , indem Sie ebtables verwenden , ein Analogon
iptables
für Layer-2-Verkehr.quelle
In meinem Setup wurde Multicast-TX-Verkehr durch iptables markiert, aber das Richtlinienrouting unter Verwendung neuer Routingtabellen funktionierte nie. Obwohl es für Unicast-TX-Pakete funktioniert hat (Umleiten von Ursprungspaketen von eth0 nach eth5). Mit tc könnte ich eth0 mcast-Verkehr zu eth5 bringen. Die src mac- und src ip-Adresse werden gegenüber eth5 geändert, sodass keine Probleme mit dem Switch-Lernen entstehen. Die gesamte Kernelunterstützung für die Kernelpaketplanung CONFIG_NET_SCHED muss aktiviert sein
Unten FUNKTIONIERT für Unicast- und Multicast-Verkehr, der von eth0 nach eth5 umgeleitet wird
Netfilter kann verwendet werden, um direkt mit der Struktur zu interagieren, die ein Paket im Kernel darstellt. Diese Struktur, der sk_buff, enthält ein Feld namens "__u32 nfmark", das wir ändern werden. TC liest dann diesen Wert, um die Zielklasse eines Pakets auszuwählen.
IP_ADDR_ETH0 =
ifconfig eth0 | grep 'inet addr'| cut -d ':' -f 2 | cut -d ' ' -f 1 | tr -d '\n'
iptables -t mangle -A OUTPUT -s $ {IP_ADDR_ETH0} -p udp --match multiport --dports 329,330 -o eth0 -j MARK --set-mark 2Erstellen Sie einen Baum, der unsere Planungsrichtlinie darstellt und der PRIO qdisc (Paketplaner) verwendet (kann andere verfügbare ausprobieren). qdiscs, die im Stammverzeichnis eines Geräts angehängt werden
tc qdisc add dev eth0 root handle 15: prio
Haben Sie jetzt auf der einen Seite eine Traffic-Shaping-Richtlinie und auf der anderen Seite die Paketmarkierung. Um die beiden zu verbinden, benötigen wir einen Filter.
refer man tc-mirred (8): Die Mirred-Aktion ermöglicht das Spiegeln (Kopieren) oder Umleiten (Stehlen) des empfangenen Pakets. Das Spiegeln wird manchmal als Switch Port Analyzer (SPAN) bezeichnet und wird häufig zum Analysieren und / oder Debuggen von Flows verwendet.
refer man tc-fw (8): fw - fwmark-Verkehrssteuerungsfilter Der fw-Filter ermöglicht die Klassifizierung von Paketen basierend auf einer zuvor von iptables festgelegten fwmark. Wenn es mit dem 'Handle' des Filters identisch ist, stimmt der Filter überein. Mit iptables können einzelne Pakete mit dem MARK-Ziel oder ganze Verbindungen mit CONNMARK markiert werden.
MAC_ADDR_ETH1 =
cat /sys/class/net/eth1/address
IP_ADDR_ETH1 =ifconfig eth1 | grep 'inet addr'| cut -d ':' -f 2 | cut -d ' ' -f 1 | tr -d '\n'
tc filter add dev eth0 parent 15: 0 Protokoll ip prio 1 handle 0x2 fw Aktion pedit ex munge eth src set $ {MAC_ADDR_ETH1} Pipe \ Aktion pedit ex munge ip src set $ {IP_ADDR_ETH1} Pipe \ action mirred egress dev eth1oben festgelegte Regeln anzeigen: tc qdisc show dev eth0 tc filter show dev eth0
Löschen / Deaktivieren der oben festgelegten Regeln: tc qdisc del dev eth0 root
quelle