Solved: Datenvolumen auf MAC-Adresse auslesen und begrenzen

Gemeinsam ins Internet mit Firewall und Proxy.
Antworten
HenningJ
Beiträge: 12
Registriert: 23.02.2018 19:06:00

Solved: Datenvolumen auf MAC-Adresse auslesen und begrenzen

Beitrag von HenningJ » 13.09.2019 14:39:29

Moin,
ich möchte das (wöchentliche/monatliche) Datenvolumen meiner WLAN-Teilnehmer begrenzen.

Die üblichen quelloffenen Firmwares der Router (openwrt, ddwrt) scheinen sowas nicht zu können, geschweige denn die Original-Firmware meines alten TP-Link Routers, auf dem die Opensource-Router-Software läuft.

Da alle intern mit IP-Tables arbeiten, könnte ich direkt über iptables Befehle arbeiten.
Das ist aber mühsam, habe seit Jahren nicht mehr mit iptables gearbeitet.

Meine ganz grobe Idee geht so:
Mit iptables lese ich täglich/stündlich (cronjob) das Datenvolumen gewisser MAC-Adressen aus.
Ein Bashscript wertet die Daten logisch aus und spuckt dann einen passenden iptables-Befehl zum sperren oder freigegeben der Adressen aus.

Kann ich das mit iptables??? Datenvolumen per MAC-Adressen zählen?

Danke für Info, auch wenn mein Problem nicht wirklich Debianspezifisch ist.
Grüße
Zuletzt geändert von HenningJ am 23.09.2019 16:39:32, insgesamt 1-mal geändert.

mludwig
Beiträge: 582
Registriert: 30.01.2005 19:35:04

Re: Datenvolumen auf MAC-Adresse auslesen und begrenzen

Beitrag von mludwig » 13.09.2019 15:30:21

Schreibe für jede MAC, die gezählt werden soll, die Regeln für
- Accept from Internet to mac (Download)
- Accept from mac to Internet (Upload)
jeweils in der FORWARD Kette. Wie genau kannst du hoffentlich selber in der Suchmaschine deiner Wahl rauskriegen. (1)

Dann noch einen cronjob der Regelmäßig

Code: Alles auswählen

iptables -L -vn
iptables -Z
aufruft.

Der erste Befehl gibt alle Ketten und Regeln aus, incl. der Angabe, wieviele Pakete und Bytes je Regel verarbeitet worden sind (die Werte die du haben willst) Das von dir erwähnte Bash-Skript kann darauf aufbauend dann Nutzer ggf. per iptables sperren.
Der zweite Befehl setzt die Counter auf null zurück.

(1) ein Treffer z. b. https://askubuntu.com/questions/317151/ ... -filtering

HenningJ
Beiträge: 12
Registriert: 23.02.2018 19:06:00

Re: Datenvolumen auf MAC-Adresse auslesen und begrenzen

Beitrag von HenningJ » 17.09.2019 13:51:55

Ja fätt, @mludwig.
Dank für die ausführlichen Tipps! Das werde ich die Tage mal umsetzen, resp. ausprobieren
*Lach* "iptables -Z" am Ende
ist wie das Amen in der Kirche, erinnere mich dunkel :-).
Wird aber noch ein paar Tage dauern, muss noch andere Rahmenbendingungen klären und den ganzen ssh-Zugang zum Router noch klarmachen, der ganze Tüdelkram.
Aber das ist ne Sache, die will ich seit Jahren schon, und nun wirds hier im Schrebergarten mit 3-4 Leuten umgesetzt.

Mir fehlen nur die iptables-Befehle, die ich dann im Konkreten googlen werde.
Ich sag dann Bescheid, wie es so läuft.

HenningJ
Beiträge: 12
Registriert: 23.02.2018 19:06:00

SOLVED Datenvolumen auf MAC-Adresse auslesen und begrenzen

Beitrag von HenningJ » 23.09.2019 16:27:29

Bin ein bisschen weitergekommen, für mich der letzte Schritt der Recherche, jetzt habe ich die Zahlen.

Datenvolumen pro IP-Adresse oder wahlweise
Datenvolumen pro MAC-Adresse
messbar.

Code: Alles auswählen

root@OpenWrt:/tmp# iptables -L -vn|grep 8.111
   41  2460 ACCEPT     tcp  --  *      *       192.168.8.111        0.0.0.0/0            /* !fw3: @rule[0] */
    0     0 ACCEPT     udp  --  *      *       192.168.8.111        0.0.0.0/0            /* !fw3: @rule[0] */

Damit habe ich die (fast genaue) Datenmenge (hier: 2460 plus 0 bytes) eines spezifischen Teilnehmers (192.168.8.111) am Wickel :-)
Cool. :D

Das macht ein Vierzeiler in der /etc/config/firewall:

Code: Alles auswählen

config rule                                                                                           
        option src lan                                                                                
        option src_ip 192.168.8.111                                                                   
        option target ACCEPT       
#       option target REJECT       
#       option src_mac          00:00:00:00:00:00
Diese Rule verändert den Datenfluß nicht ein Stück, sie dient allein dazu, die Bytes auf der Adresse zu zählen. Momentan ist die 8.111 nur als source gelistet, da muss wohl noch ein destination rein.
Obwohl... Uploads der clients ins Netz brauch ich net zählen...
Feintuning kommt noch.

Ein
iptables -L -vn liefert nach dem /etc/config/firewall-Eintrag ; /etc/init.d/firewall restart dann Ergebnisse. Die dann mittels cron alle 10 Min auf Platte geschrieben / aktualisiert werden.
Ich bastel nur noch ein paar Additions / Auswertungsscripte und puhle mit awk die Zahlen aus den Rohdaten raus.

So kann ich allen 4-6 Teilnehmern ein gewisses Kontingent garantieren. Wenn Kontingent erschöpft, gibts ein DENY von iptables und gut.

Ab sofort bekommen meine Töchter nur noch einen Teil des Gesamtvolumens, sonst hamse mir immer das Volumen leergelutscht, die Schlawiner ;-).


Schönes Projekt.

Antworten