# Erste Schritte mit Netzwerken: Verbindungs-Block



## Kaibear (20. Dez 2013)

Moin moin,

ich wollte meine ersten Schritte in Netzwerkprogrammierung in Java machen und habe dafür aus unserer WG schon ein lohnendes Projekt.

Das Problem: Es gibt in unserer großen WG Leute, die meinen von unserer recht schmalen Internetverbindung den Traffic so mit Downloads in Beschlag zu nehmen, dass andere in der Zeit kaum noch mit dem Internet arbeiten können.

Die Lösung: Ein Tool, dass den User blockt!

Von der Überlegung her habe ich mir das so vorgestellt, dass mein Tool permanent auf einem Server im Haus oder eventuell sogar auf dem Router läuft. Dieses prüft alle 3 Minuten wie der Traffic pro User ist. (Dies soll durch die Klasse "Traffic-Checker" mit der einzigen Methode, checkTraffic() geschehen). Die User werden über die MAC-Adresse eindeutig bestimmt. Dabei soll bei Auftreten eines zu hohen Datentransfers eines Users die Verbindung vom Router zu diesem User für 5 Minuten blocken. Gleichzeitig soll in einem Log-Text festgehalten werden wann das auftrat und vorallem von wem das ausgeführt wurde. Dies soll idealerweise in den Tageszeiten zwischen 6 und 23 Uhr geschehen. Alle anderen Tageszeiten soll das Tool nicht in Beschlag nehmen.

Später wäre aus dem Tool eventuell noch per Knopfdruck die Log-Datei auszulesen und die MAC-Adresse über eine Datenbank direkt zum jeweiligen Usernamen gewandelt. 


Jetzt die Frage:

Lohnt sich überhaupt Java dafür?
Wenn ja, gibt es Referenz-Lektüre bzw. Tutorials welche dem Leser Grundlagen dafür vermitteln?
Lässt sich das eventuell alles über Skripte ausführen?
Wie wären die ersten Schritte dieses Projekt anzugehen?
Konkreter: Gibt es Möglichkeiten die Datenraten des Users so zu überwachen und ihn vom Router zu kappen?


----------



## rme (20. Dez 2013)

Hallo,

ich würde sagen, dass Java die falsche Aufgabe dafür ist. Gründe:


Das Programm muss sowieso auf dem Router laufen, damit es den Datenverkehr aller Nutzer sehen kann. Es wäre zwar mit Tricks möglich, dass aller Verkehr auch an deinem PC oder Server ankommt, aber davon wird das Netzwerk noch langsamer. Und da der Router vermutlich / hoffentlich (Stromverbrauch) kein PC, sondern ein eingebettetes Gerät ist, läuft da eh kein Java.
 Das Programm muss vermutlich mit Admin bzw. Root-Rechten laufen, damit das Betriebssystem es überhaupt gestattet, auf Datenverkehr zuzugreifen, der nicht dem eigenen Prozess gehört. Und Java-Programme würde ich eher nicht als root starten.

Möglich wäre es, wenn euer Router eine gute Schnittstelle (SNMP?) hat, mit der sich der Verkehr beobachten und steuern lässt - dann wäre eine Umsetzung in Java denkbar. 

Um was für einen Router handelt es sich denn? Wenn da ein Linux drauf läuft, auf das man zugreifen kann, könnte man das über ein paar Skripte lösen, die das via iptables regeln.


----------

