Verkehrsstatistik pro Netzwerkanschluss

15

Ich habe zwei Computer mit zwei Anwendungen, die über einige Netzwerkports (TCP und UDP) miteinander kommunizieren. Ich möchte den Verkehr zählen, den sie senden und empfangen. Ich brauche nicht nur die Gesamtzählung, sondern Statistiken pro Maschine pro Port und Tag. Ich habe darkstat ausprobiert , aber es werden keine Statistiken pro Tag angezeigt , sondern nur allgemeine Zähler.

Gibt es eine andere Möglichkeit, diesen Datenverkehr zu zählen (ich kann einen Proxy oder ein Gateway zwischen diesen beiden Computern platzieren)?

pbm
quelle

Antworten:

16

In iptables können Sie Statistiken darüber anzeigen, wie viele Regeln ausgelöst wurden. Sie können also LOG-Regeln für die Ports von Interesse hinzufügen (sagen wir Port 20 und Port 80):

iptables -A INPUT -p tcp --dport 22
iptables -A INPUT -p tcp --dport 80

und dann

iptables -n -L -v

Gibt die Anzahl der Pakete und Bytes an, die über diese Ports gesendet werden. Natürlich müssen Sie aus der Ausgabe die Ports analysieren, die Sie interessieren.

Wenn Sie genaue Werte benötigen, fügen Sie ein -x hinzu:

iptables -n -L -v -x
mzet
quelle
4
Sie müssen keine LOGRegeln festlegen (die Ihre Protokolldateien überfluten). Zählen Sie einfach, wie oft eine Regel ausgelöst wird.
Gilles 'SO- hör auf böse zu sein'
4
Tatsächlich. Eine Regel muss keine Aktion haben. Eine nützliche Lektion zu lernen: Regeln ohne -Jsind gut für die Buchhaltung.
Alexios
2

Sie können Ihrer iptables-Konfiguration Abrechnungsregeln hinzufügen. Diese sollten auftreten, bevor Sie ESTABLISHED- und RELATED-Datenverkehr akzeptieren. Andernfalls wird die Zählung des durchlaufenden Datenverkehrs verpasst. Versuchen Sie zum Zählen des Webverkehrs eine Regel wie:

iptables -A INPUT -p tcp --dport 80 

Wenn Sie mehrere davon haben, möchten Sie möglicherweise eine Abrechnungskette erstellen, damit Sie isoliert von anderen Ketten Berichte erstellen und Zähler auf Null setzen können.

Mit der Shorewall- Firewall können Sie Ihrem Regelsatz auf einfache Weise Abrechnungsregeln hinzufügen.

BillThor
quelle
1

Vergessen Sie nicht, die Ausgabeverkehrsstatistik einzuschließen.

# Port 80 (HTTP).
iptables -A INPUT -p tcp --dport 80
iptables -A OUTPUT -p tcp --sport 80

# Port 443 (HTTPS).
iptables -A INPUT -p tcp --dport 443
iptables -A OUTPUT -p tcp --sport 443


iptables -n -L -v
iptables -n -L -v -x


iptables -n -L -v -x | grep -i "Chain\|:443\|:80"

Chain INPUT (policy DROP 357 packets, 22828 bytes)
 1286265 75076978 ACCEPT tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp dpt:80
 1305378 75018232 ACCEPT tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp dpt:443

Chain OUTPUT (policy ACCEPT 303516 packets, 94716311 bytes)
     442   255112        tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp spt:80
      46    10515        tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp spt:443
Busindre
quelle
0

Nutze den tcpdump,

tcpdump -i any -nnn

Die Ausgaben des obigen Befehls würden den Zeitstempel, die Quell- / Ziel-IP-Adressen, den Port und die Paketlänge enthalten. Mit diesen Informationen können Sie Ihr Ziel leicht durch ein gut geschriebenes Skript erreichen.

Derui Si
quelle
0

Es ist nicht klar, ob Sie die Verwendung pro Ziel-IP benötigen, aber vnstat ist ein nützliches Tool zum Aufzeichnen der Verkehrsverwendung pro Schnittstelle. Installieren Sie es und führen Sie es vnstat -u -i eth0für jede Schnittstelle aus, die Sie überwachen möchten. Um dann die Nutzung pro Tag nutzen zu können vnstat -i eth0 -d.

mgorven
quelle
1
Ich glaube nicht, dass vnstatich mit stat per port ... oder irre ich mich?
pbm
1
@pbm Ah, du meinst TCP / UDP-Port. Nein, das macht vnstat nicht.
mgorven