netzwerk traffic von wlan0 anzeigen

L I V E Stammtisch ab 20:30 Uhr im Chat
  • hallo
    ich habe folgendes script was mir den traffic auf eth0 anzeigt.
    problem ist nur ich kriege es nicht so hin das es mir den traffic von wlan0 anzeigt,
    kann mir da jemand weiterhelfen ?

    das script sieht wie folgt aus


    vielen dank schonmal im voraus

    TwoCry

  • Anbei das funktionierende Script, angepasst auf "wlan0".:thumbs1:
    Zusätzlich zum Interface müssen in dieser Version auch die substring's angepasst werden (hier: line[:5] und line[6:]).
    Grund ist einfach die unterschiedliche Länge von "eth0" (4 Zeichen) und "wlan0" (5 Zeichen).

    Linux - Für das Leben nach dem Absturz!

    Einmal editiert, zuletzt von Nightskill (10. Mai 2015 um 23:06)


  • ... den traffic auf eth0 anzeigt.

    Kleine Anmerkung am Rande: Wenn ich meinen Pi direkt ins KabelNetz meines Providers hänge, dann zeigt der RX-Zähler des eth0-Interfaces, im Monat ca. 6,5 GB zusätzlichen Traffic an. Dieser zusätzliche Traffic ist broadcast Traffic, verursacht durch arp requests und DHCP-ACK-Messages (d. h. m. E., eine fehlerhafte Konfiguration des Netzwerks durch den Kabel-Provider).
    Ich kann das eth0-Interface des Pi nicht so konfigurieren, dass dieser broadcast Traffic ignoriert wird. Auch wenn ich diesen Traffic mit arptables/iptables blocke, wird dieser vom RX-Zähler trotzdem erfasst.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Das Script (Beitrag#1 & #2) zeigt nicht den absoluten Traffic an sondern nur die derzeitige Bandbreite.

    Beispiel auf meinem RPi @ EDIS.at ->

    mitten drin hab ich "apt-get update" ausgeführt, erst dann zeigt es etwas an, danach aber nicht mehr.

    Desweiteren sorgt der "time.sleep(1)" dafür dass das Script nach jeder Ausgabe für eine Sekunde blockiert (quasi pausiert) wird und in der Zeit nichts anzeigt, es gehen also Daten verloren.

    Von daher wäre dieser Weg eventuell nicht der richtige.

    Alternativ kann man das sehr mächtige Module psutil verwenden, damit lässt sich sehr einfach der gesamte Traffic anzeigen:

    Code
    apt-get install pip
    pip install psutil


    [code=php]#!/usr/bin/python

    from __future__ import print_function
    import psutil

    network_devices = psutil.network_io_counters(pernic=True)

    for device in network_devices:
    received = round( (float(network_devices[device].bytes_recv) / 1024.0) / 1024, 2)
    send = round( (float(network_devices[device].bytes_sent) / 1024.0) / 1024, 2)
    print("{0:5} -> received: {1:10}MB send: {2:10}MB".format(device, received, send))
    [/php]

    Man könnte auch mithilfe des curses Module's auch immer nur eine Stelle aktualisieren lassen, ohne für jeden Messwert eine Neue Zeile auszugeben und somit müsste man nicht rum scrollen...
    Das könnte wie folgt aussehen:
    [code=php]
    #!/usr/bin/python
    # by meigrafd
    # netzwerk traffic von wlan0 anzeigen
    #

    from __future__ import print_function
    import time, psutil, curses

    try:
    running=True
    stdscr = curses.initscr() #init curses and create window object stdscr
    while running:
    c=1
    network_devices = psutil.network_io_counters(pernic=True)
    for device in network_devices:
    received = round( (float(network_devices[device].bytes_recv) / 1024.0) / 1024, 2)
    send = round( (float(network_devices[device].bytes_sent) / 1024.0) / 1024, 2)
    stdscr.addstr(c, 5, "{0:5} -> received: {1:10} MB send: {2:10} MB".format(device, received, send))
    stdscr.move(0,0) #move cursor to (new_y, new_x)
    stdscr.refresh() #update the display immediately
    c+=1
    time.sleep(0.1)

    except KeyboardInterrupt:
    stdscr.addstr(0, 0, "..Quitting..")
    stdscr.refresh()
    except Exception, e:
    print("\nError: " + str(e))

    curses.endwin()
    running=False
    [/php]

  • Kleine Anmerkung am Rande: Wenn ich meinen Pi direkt ins KabelNetz meines Providers hänge, dann zeigt der RX-Zähler des eth0-Interfaces, im Monat ca. 6,5 GB zusätzlichen Traffic an. Dieser zusätzliche Traffic ist broadcast Traffic, verursacht durch arp requests und DHCP-ACK-Messages (d. h. m. E., eine fehlerhafte Konfiguration des Netzwerks durch den Kabel-Provider).
    Ich kann das eth0-Interface des Pi nicht so konfigurieren, dass dieser broadcast Traffic ignoriert wird. Auch wenn ich diesen Traffic mit arptables/iptables blocke, wird dieser vom RX-Zähler trotzdem erfasst.

    Ich verstehe nicht so ganz, wieso ARP Requests und DHCP ACKs, welche ja durch das eth0 Interface u.a. gehen, auf eine fehlerhafte Konfiguration des Netzwerks durch den Kabel-Provider deuten.
    DHCP ACKs (und OFFERs und DISCOVERs) werden immer durch das ganze Netz gebrüllt, selbst wenn man selbst kein DCHP Client aktiv hat. Es reicht also schon, wenn *irgendwo* ein DHCP Client aktiv ist und vom Router ne IP haben will und du bekommst diese Meldungen.
    Auch ARP Requests (und Response) werden ins ganze Netz gebrüllt, auch von dir/deinem PI, da dein lokaler ARP Cache regelmäßig ungültig wird und neu angefragt werden muss. Ohne ARP könntest du nicht von ISO OSI Schicht 3 nach 2 kommen und deswegen nicht mal ein einfachen Ping absetzen...
    Das sind also beides Protokolle, welche in deinem lokalen LAN aktiv sind.

    meigrafd: Das Skript sieht sehr interessant aus, allerdings gibst du als Einheit MiB an und nicht MB, da durch 1024 als Umrechnungsfaktor benutzt

    Einmal editiert, zuletzt von mezen (11. Mai 2015 um 17:42)


  • Ich verstehe nicht so ganz, wieso ARP Requests und DHCP ACKs, welche ja durch das eth0 Interface u.a. gehen, auf eine fehlerhafte Konfiguration des Netzwerks durch den Kabel-Provider deuten.
    ...
    Das sind also beides Protokolle, welche in deinem lokalen LAN aktiv sind.


    DHCP ACKs (und OFFERs und DISCOVERs) werden immer durch das ganze Netz gebrüllt, ...

    Jaja, nur, dass es nicht um mein lokales LAN geht. Der Pi hat als WAN-IP (d. h. direkt im Internet, ohne Router) eine öffentliche IPv4-Adresse (am eth0) und dort sehe ich die arp requests von diversen Gateways des Kabel-Providers, die lt. geoiplookup sich z. B. in Freiburg, Mannheim, Ulm, Kornwestheim, ..., etc. befinden. Die DHCP-ACK-Messages kommen von einem Server mit der IP-Adresse 10.217.252.1.

    Z. B. in 2 Tage:

    Code
    ~ $ sudo arptables -nvx -L
    Chain INPUT (policy ACCEPT 164K packets, 4589K bytes)
    -j DROP -i eth0 -o * ! -s 46.###.###.# , pcnt=7512K -- bcnt=210M
    Code
    ~ $ sudo iptables -nvx -L PREROUTING -t raw
    Chain PREROUTING (policy ACCEPT 16615 packets, 1718388 bytes)
        pkts      bytes target     prot opt in     out     source               destination                    
      414358 147522512 DROP       udp  --  eth0   *      !46.###.###.#        0.0.0.0/0            udp spt:67

    Das war nicht immer so. Der Pi ist seit Oktober 2013 direkt im Internet, dieser intensive broadcast Traffic, wird erst seit ca. 2 Wochen so beobachtet.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (11. Mai 2015 um 21:25)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!