Linux: Abrufen per-Schnittstelle gesendete / empfangene Paketzähler (Ethernet, IPv4-, IPv6-)

StackOverflow https://stackoverflow.com/questions/349576

  •  20-08-2019
  •  | 
  •  

Frage

Unter Linux, wie kann ich (programmatisch) rufen die folgenden Zähler auf einer Basis pro Schnittstelle :

  • gesendete / empfangene Ethernet-Frames,
  • gesendete / empfangene IPv4-Pakete,
  • gesendete / empfangene IPv6-Pakete.
War es hilfreich?

Lösung

Sie sollten der Lage sein, diese iptables Regeln und Paketzähler tun verwenden, z.

# input and output must be accounted for separately
# ipv4, eth0
iptables -I INPUT -i eth0
iptables -I OUTPUT -o eth0
# ipv6, eth0
ip6tables -I INPUT -i eth0
ip6tables -I OUTPUT -o eth0

Und die Statistiken zu sehen, analysieren die Ausgabe von diesen:

iptables -L -vxn
ip6tables -L -vxn

Sie sollten auch die -Z Flagge für nachschlagen, wenn Sie wollen die Zähler zurückgesetzt werden.

Andere Tipps

Auf meinem System gibt es Dateien unter /sys/class/net/eth0/statistics, die verschiedenen Statistiken über Netzwerkschnittstellen gibt.

Dies ist eine vage aktuellen Linux unter der Annahme, die /sys (sysfs) hat angebracht ist.

cat /proc/net/dev

Sollte enthalten Zähler, Statistiken und Informationen.

Sie können jederzeit analysieren die verschiedenen Kernel-Status-Dateien selbst, ich denke, das ist es, was Tools wie netstat tun.

Der Mann Seite schlägt vor:

  • /proc/net/raw - RAW-Socket Informationen
  • /proc/net/tcp - TCP-Socket-Informationen
  • /proc/net/udp - UDP-Socket Informationen

Ich denke, es sollte ein nicht-proc Weg, dies zu tun, vielleicht in /sys auch? Ich hatte einen kurzen Blick aber nichts gefunden.

Entweder nur die Ausgabe von netstat -i analysieren. Oder strace netstat -i und Verwendung, die aus zu arbeiten, wo es für die Informationen sieht.

ifconfig sagt Ihnen, die Menge der übertragenen Daten (Bytes und Pakete).

Die folgenden Befehle geben IPv4- / IPv6-Statistik beibehalten systemweit:

netstat --statistics

nstat -z

cat /proc/net/dev_snmp6/eth0  gives ipv6 stats per interface

Sie können volle Ethernet-Statistiken mit Drucken ethtool : ethtool -S eth1

Wireshark (verwendet Ethereal sein) kann Ihnen dabei helfen.

Netstat Würde meine zweite Vermutung

sein

Sie können ganz einfach tun, dass in C # in monodevelop:

using System.Net.NetworkInformation;

foreach (NetworkInterface ni in interfaces)
{
  // perform your calculations
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top