Anzeige:
Ergebnis 1 bis 3 von 3

Thema: nftables counter Werte per Skript auslesen

  1. #1
    Registrierter Benutzer
    Registriert seit
    Jul 2004
    Beiträge
    397

    nftables counter Werte per Skript auslesen

    Hallo Leute,

    ich versuche gerade ein Bytecounter für bestimmte Verbindungen zu realsieren. Mit nftables gibt es die Möglichkeit einen "counter" an eine Regel zu heften.
    Die Ausgabe des ganzen sieht dann so aus:
    Code:
    # nft list table nat
    table ip nat {
            chain prerouting {
                     type nat hook prerouting priority -150;
            }
    
            chain postrouting {
                     type nat hook postrouting priority -150;
                     ip daddr != 192.168.0.0/24 counter packets 4176 bytes 307393
            }
    }
    Zwar lässt sich der Bytecount mit sed/grep/cut usw. herausfiltern. Dennoch ist dies für mehrer unabhängige Counter eher umständlich, weil für das Herausfiltern die komplette Regel angegeben werden muss.
    Gibt es da eventuell eine andere Form für die Ausgabe. Eventuell in richtung handles?


    Beste Grüße

    Martin
    empty

  2. #2
    Registrierter Benutzer
    Registriert seit
    Apr 2009
    Ort
    Erde
    Beiträge
    2.819
    hmm dachte schon, inzwischen bin ich unsicher :-/
    Wie auch immer, es hießt so schön: "There is also a new library for utilities that need to interact with the firewall". Die gemeinte Bibliothek wird hier verwaltet: https://git.netfilter.org/libnftnl

    Allerdings sucht man (bzw. ich) vergeblich nach einem Beispiel, wie man an diese Counter kommt - nach etwas suchen habe ich das hier gefunden: http://patchwork.ozlabs.org/patch/433017/ - den Patch sieht man aber auf der offiziellen Seite nicht, Namen und sowas passen aber

    Egal, jedenfalls genau diese libnftnl (früher libnftables) ist dafür da - events gibt es dort auch; aber wie erwähnt, finde ich die Beispiel nicht so wirklich hilfreich, habe mir die aber auch nur im Browser angesehen...
    Gruß nopes
    (,,,)---(^.^)---(,,,) /var/log/messages | grep cat

  3. #3
    Registrierter Benutzer
    Registriert seit
    Jul 2004
    Beiträge
    397
    Danke für deine für deine Antwort. Das mit der c-libary ist wahrscheinlich das sauberste Lösung.
    Hab erstmal eine Quick and Dirty Lösung. Die sieht ca so aus
    Code:
    #!/bin/bash
    
    nft list tables | while read line;
    do
            nft list $line -a | grep "handle $1" | sed -r  's@.*packets [0-9]+ bytes ([0-9]+).*@\1@'
    done;
    Das erste Argument ist dann das Handle. Schließlich wird der Bytecount zurückgegeben.
    Was aber noch ein Problem ist. Woher weis ich das Handle? Zwar lässt sich das ganze ermitteln und
    statisch eintragen. Aber wenn sich Regeln ändern, müsste das nachgeflegt werden.

    Am besten wäre es beim Einfügen einer Regel gleich das Handle zurückzubekommen.
    Weist du ob das eventuell mit dem nft command line tool möglich ist?

    Auch gut wäre es gleich ein Handle für eine Regel vorzugeben.
    Aber das scheint schon von der Syntax her nicht vorgesehen zu sein.



    Eine andere Alternative währe für jeden Counter eine eigene Chain zu erstellen.
    empty

Ähnliche Themen

  1. usb hotplug via skript infos auslesen
    Von golddachs im Forum stationäre Hardware
    Antworten: 0
    Letzter Beitrag: 15.08.05, 15:00
  2. SMART werte über SCSI Emulation auslesen
    Von 000Hunter000 im Forum Linux Allgemein
    Antworten: 1
    Letzter Beitrag: 19.01.05, 21:04
  3. Euer kürzestes Skript zum Auslesen der IP-Adresse?
    Von hiTCH-HiKER im Forum Linux als Server
    Antworten: 15
    Letzter Beitrag: 02.12.04, 20:21
  4. Top - Werte auslesen
    Von svern im Forum Anwendungen Allgemein, Software
    Antworten: 6
    Letzter Beitrag: 21.05.04, 19:37
  5. linux counter --> http://counter.li.org
    Von tomes im Forum Meldungen und Mitglieder
    Antworten: 12
    Letzter Beitrag: 27.01.03, 16:59

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •