Überwachen Sie die Anzahl der Bytes, die an die / von der IP-Adresse am Port übertragen wurden
19
Kann jemand ein Linux-Kommandozeilen-Tool empfehlen, um die Anzahl der zwischen dem lokalen Server und einer bestimmten IP-Adresse / einem bestimmten Port übertragenen Bytes zu überwachen.
Der äquivalente Befehl tcpdump wäre:
tcpdump -s 0 -i any -w mycapture.trc port 80 host google.com
welche Ausgänge:
46 packets captured
131 packets received by filter
0 packets dropped by kernel
Ich möchte etwas Ähnliches, das ausgibt:
54 bytes out, 176 bytes in
Ich möchte, dass es auf RHEL läuft und frei / quelloffen ist. Es wäre gut, wenn es ein vorhandenes Tool gäbe, das mir auch gefehlt hat!
Sie könnten iptables verwenden. Wenn Sie es noch nicht verwenden, können Sie eine offene Accept-Konfiguration verwenden, für die Zählung ist jedoch eine Regel vorhanden.
Auf RHEL könnte Ihre /etc/sysconfig/iptablesDatei beispielsweise so aussehen:
Wobei 10.10.1.1:80 der Host: Port ist, an dem der Datenverkehr gezählt werden soll (Sie können keinen Hostnamen verwenden). Sie können dann den mit dem Befehl iptables -nvxLals root gezählten Datenverkehr überprüfen .
Es ist auch völlig legal, eine Regel ohne Ziel zu haben, und zwar ausschließlich zu Zählzwecken, z. B. iptables -A INPUT -d 1.2.3.4 -p tcp --dport 3456. Es wird nichts mit dem Datenverkehr zu tun haben, da es kein "-j" Argument gibt, aber jedes übereinstimmende Paket wird die Anzahl erhöhen.
MadHatter unterstützt Monica
9
Ich wollte gerade Wireshark vorschlagen (da es viele " Konversations " -Funktionen gibt), aber es ist kein Befehlszeilen-Tool. Sie können auch tshark ausprobieren , ein Kommandozeilen-Analysetool, das sich in der Nähe von wireshark befindet. Die Ausgabe sollte (etwas) das haben, wonach Sie suchen (Beispiel unten):
Es gibt auch ein Tool namens "iftop", das die Bandbreitennutzung auf einer Schnittstelle nach Host anzeigt. Ich denke, iftop kann das tun, was Sie beschrieben haben, aber normalerweise ist die Benutzeroberfläche so etwas wie "top".
In Ihrem Beispiel können Sie also einfach eine Konfigurationsdatei erstellen, um Ihren Filtercode bereitzustellen.
Also hier ist mein Filter-Code in meiner Konfigurationsdatei.
$ cat /tmp/conf
filter-code: port http and host google.com
Anschließend habe ich Folgendes ausgeführt, um das Netzwerk-Traffice anzuzeigen.
$ sudo iftop -c /tmp/conf
Ich bin mir nicht sicher, ob dies die beste Option ist, aber auf jeden Fall eine Möglichkeit, das zu erreichen, was Sie brauchen. HTH.
Sie können den Filter auch in der Befehlszeile angeben, ohne eine Konfigurationsdatei zu verwenden:iftop -f 'port 80 and host google.com'
gioele
Op möchte die Summe der übertragenen Bytes, nicht die Bandbreite. Kann das iftopzeigen?
Arainone
3
Sie können auch "iptraf" ausprobieren, es ist leicht und einfach. Es kann nach Port filtern und bietet Ihnen Informationen auf hoher Ebene, keine Nutzdaten usw.
Ich wollte gerade Wireshark vorschlagen (da es viele " Konversations " -Funktionen gibt), aber es ist kein Befehlszeilen-Tool. Sie können auch tshark ausprobieren , ein Kommandozeilen-Analysetool, das sich in der Nähe von wireshark befindet. Die Ausgabe sollte (etwas) das haben, wonach Sie suchen (Beispiel unten):
Ergebnis:
quelle
Es gibt auch ein Tool namens "iftop", das die Bandbreitennutzung auf einer Schnittstelle nach Host anzeigt. Ich denke, iftop kann das tun, was Sie beschrieben haben, aber normalerweise ist die Benutzeroberfläche so etwas wie "top".
In Ihrem Beispiel können Sie also einfach eine Konfigurationsdatei erstellen, um Ihren Filtercode bereitzustellen.
Also hier ist mein Filter-Code in meiner Konfigurationsdatei.
Anschließend habe ich Folgendes ausgeführt, um das Netzwerk-Traffice anzuzeigen.
Ich bin mir nicht sicher, ob dies die beste Option ist, aber auf jeden Fall eine Möglichkeit, das zu erreichen, was Sie brauchen. HTH.
quelle
iftop -f 'port 80 and host google.com'
iftop
zeigen?Sie können auch "iptraf" ausprobieren, es ist leicht und einfach. Es kann nach Port filtern und bietet Ihnen Informationen auf hoher Ebene, keine Nutzdaten usw.
quelle