PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : netzwerk traffic auslesen


rotalever
2007-12-02, 14:33:53
Ich hab mal wieder ein kleines Problem. Ich wollte mir ein script basteln, dass z.B. alle 10 Minuten den network-traffic überprüft und bei überschreitung bestimmte ports sperrt. Das Sperren lässt sich ja über iptables realisieren, nur das Auslesen des Traffics stellt mich vor ein Problem. Sowohl "ifconfig eth0" und "cat /proc/net/dev" liefern die aktuellen Traffic Statistiken, sind aber anscheinend auf 32bit limitiert. Also wird der Traffic alle 4GB wieder zurückgesetzt, was das ganze etwas unbrauchbar macht. Gibt es da eine Möglichkeit bessere Daten zu bekommen?

Lokadamus
2007-12-02, 14:41:07
mmm...

Kannst du mal ein Beispiel nennen, was du da machen willst.
Für mich hört es sich nach Traffic Shaping an, da du den Verkehr nur einschränken willst, wenn es mal zuviel wurde.
http://de.wikipedia.org/wiki/Traffic-Shaping

rotalever
2007-12-02, 14:46:52
mmm...

Kannst du mal ein Beispiel nennen, was du da machen willst.
Für mich hört es sich nach Traffic Shaping an, da du den Verkehr nur einschränken willst, wenn es mal zuviel wurde.
http://de.wikipedia.org/wiki/Traffic-Shaping
Also eigentlich möchte ich nur bestimmte Dienste beenden bzw. bestimmte Ports sperren (läuft ja auf das selbe hinaus), wenn ein bestimmter Traffic pro Monat erreicht wurde. Habe leider kein Tool per Google gefunden, was das erledigt, vll. hab ich aber auch nur falsch gesucht :rolleyes:

Lokadamus
2007-12-02, 15:38:04
mmm...

So finde ich nur iptables accounting monster (iam)
http://www.google.de/search?q=iptables+accounting+monster&hl=de&client=firefox-a&rls=org.mozilla:de:official&hs=qX&start=0&sa=N
Aber das erstellt nur einen Report, wieviel Traffic durchgegangen ist.

rotalever
2007-12-02, 16:23:13
mmm...

So finde ich nur iptables accounting monster (iam)
http://www.google.de/search?q=iptables+accounting+monster&hl=de&client=firefox-a&rls=org.mozilla:de:official&hs=qX&start=0&sa=N
Aber das erstellt nur einen Report, wieviel Traffic durchgegangen ist.
Vor allem anscheinend nur für jeweils einen Tag und diese Zeitdauer ist viel zu lang. Es gibt da ja noch diese ipt_quota extension, aber die muss halt auch irgendwie im Kernel drin sein und das ist sie glaube ich nicht standardmäßig.

Gast
2007-12-02, 23:01:12
Reicht dir iftop net?

rotalever
2007-12-03, 16:46:06
Reicht dir iftop net?
Das zeigt mir zwar auch mehr als 4GB Traffic korrekt an, aber das müsste dann ja die ganze Zeit mitlaufen.

rotalever
2007-12-03, 19:25:12
Außerdem gibt iftop seltsame Werte. Wenn ich über das loopback interface ~2.2GB verschicke sagt iftop:

TX: cumm: 1.96GB peak: 0B rates: 0B 0B 0B
RX: 0B 0B 0B 0B 0B
TOTAL: 1.96GB 0B 0B 0B 0B

Eigentlich müsste aber sowohl bei TX (versendet) als auch bei RX (empfangen) jeweils 2.2GB stehen und bei Total 4.4GB, da ja beim Loopback Interface alle Daten einmal empfangen und einmal gesendet werden. Wo da der Fehler liegt weiß ich nicht.
Ich habe mir jetzt aber mal selber ein Script in Python geschrieben, was den Traffic überwacht. Es fragt ca. alle 100msec /proc/net/dev ab und schaut wie viel sich im Up+Download zum vorherigen Mal geändert hat. Diese Änderung wird dann auf einen TrafficCounter addiert. Falls /proc/net/dev wieder auf 0 zurück springt, also der neue Trafficwert kleiner dem alten ist, dann wird die Änderung, die auf den TrafficCounter addiert wird entsprechend angepasst.
Außerdem wird der Trafficcounter jedes Mal mit einem Limitverglichen und falls dieses erreicht ist, ein Shell-Script ausgeführt, wo dann irgendwelche Befehle drin stehen können. Desweiteren Wird alle Minute ein Logfile geschrieben, damit falls das Programm mal abstürtzt zumindest einigermaßen genau fortgesetzt werden kann.
Wenn ein festgelegter Zeit-Wechsel (z.B. Monatswechsel) durch die Uhr erkannt wirdm wird der TrafficCounter wieder auf 0 gesetzt.
So wollte ich das eigentlich haben und hab es mir jetzt selbst geschrieben :smile:

Gast
2007-12-05, 13:54:05
http://img4.imagebanana.com/img/n00mdcqj/Bildschirmfoto.gif (http://img4.imagebanana.com/)

Hier ein Screenshot von Tomato einer Linuxfirmware für Router. Wie du sehen kannst geht die Anzeige über 2 GB. Hier http://www.polarcloud.com/tomato kannst du dir den Source Code herunderladen, in wie weit du davon etwas verwenden kannst weis ich nicht, aber ich hoffe es hilft dir weiter.

cromsche
2007-12-06, 00:56:40
Ich hab mal wieder ein kleines Problem. Ich wollte mir ein script basteln, dass z.B. alle 10 Minuten den network-traffic überprüft und bei überschreitung bestimmte ports sperrt. Das Sperren lässt sich ja über iptables realisieren, nur das Auslesen des Traffics stellt mich vor ein Problem. Sowohl "ifconfig eth0" und "cat /proc/net/dev" liefern die aktuellen Traffic Statistiken, sind aber anscheinend auf 32bit limitiert. Also wird der Traffic alle 4GB wieder zurückgesetzt, was das ganze etwas unbrauchbar macht. Gibt es da eine Möglichkeit bessere Daten zu bekommen?


für traffic auslesen habe ich immer vnstat (http://humdi.net/vnstat/) genommen. kannst du ja als cronjob alle 10 minuten durchführen lassen und dann dein skript.

ESAD
2007-12-06, 09:28:15
es gibt auch das tool nload was den traffic aufzeichnet und visualisiert (bzw. das was momentan über die leitung geht) dass es mehr als 4gbyte kann glaube ich aber auch nicht

rotalever
2007-12-06, 15:49:43
für traffic auslesen habe ich immer vnstat (http://humdi.net/vnstat/) genommen. kannst du ja als cronjob alle 10 minuten durchführen lassen und dann dein skript.
Läuft dieses vnstat denn dann als Daemon im Hintergrund, oder wie funktioniert das? So hatte ich nämlich mein Script jetzt programmiert.