QOS mit Firewall für VoIP und P2P
Hallo,
dies ist mein erster Eintrag im Forum, keine Ahnung, ob der auch so erscheint, damit ihr den lesen könnt.
QOS ist nicht nur Bandbreitenbeschränkung, sondern bezieht sich auch noch auf die Latenzzeit der Pakete, d.h. wie schnell sie durchgeroutet werden. Beispiel: mein Mitbewohner saugt ständig über P2P, und wenn bei mir ein SIP-Telefonat reinkommt, kann ich zwar den Gesprächspartner hören, aber dieser mich nur sehr abgehackt, ausserdem ist das surfen lahm, und mein Chat packts auch nicht mehr.
Um das Problem zu lösen braucht man einen mit L7-filtern [web:4f99a0d9d6]http://l7-filter.sourceforge.net/[/web:4f99a0d9d6] gepatchten Kernel (bei mir 2.6.8, sollte schon ab 2.4 funzen), der iptables, QOS und vor allem HFSC drin hat, bzw. diese als Module verfügbar hat, und dann noch iproute2 www???. Für mein Skript braucht man ausserdem noch die progs sed, awk cut. etc...
In meinem Netz sind 4 Clients, PC1,PC2,PCALEX (Linphone),PHONE ( Grandstream gxp2000), der Router übernimmt (noch) keine TK-Funktionalität.
Das Skript ist etwas unübersichtlich (hab auch mehrere Tage daran rumgebastelt, bis es lief). Hierzu folgendes:
Grundlegendes:
Die Schleifen sind so angelegt, das man entweder L7-Filter verwenden kann, die Ports fest definieren kann, und/oder die Hosts statisch festsetzen kann, zum testen, was reicht, immer die Reihenfolge L7-ports-hosts benutzen. MP1,MP2,... bezieht sich dabei auf die Mask-Priorität. Das Forwarding am anfang (PR...) bei der Var.Def. ist selbstredend, das Input verknüpft die Variablen TCP_ACCEPT_EXT, UDP_ACCEPT_EXT und EXT_ACCEPT_IP quasi mit AND (bei mir darf also nur Sipgate auf den entspr. Ports rein.), was bei verschiedenen Anbietern unpraktisch ist, bei mir aber praktisch war.
Variablendefinition:
ermitteln der Netzwerkkconfig bzw. festes eintragen von Variablen, setzen des Pfades der Progs. Festlegen der Mask-Prioritäten: MP1="X" bezieht sich darauf, mit welcher Markierung das Paket versehen wird (1-32), damit es danach vom HFSC entsprechend "angereiht" wird. Ach ja, das mit den MODULES=X ist unwichtig, wenn man alles einkompiliert hat, bzw der Kernel das selbst nachlädt.
Jetzt gehts los:
Beim Start wird dem Kernel mitgeteilt, was er darf, was nicht (Routing und Sicherheit) dann werden mit tc ... die HFSC regeln mit defaultprio 3 (12 bezieht sich auf die Klasse)
Dann Prerouting und forwarding, erstellen der Logchains und Statchain, dann essentielle Firewallregeln und ein paar Ausnahmen derer. SSH-Zugang von aussen nur einmal alle 20sek, danach Markieren der Pakete, auch nach TOS, danach akzeptieren der Ports von aussen, Masquerading etc. pp., den Rest dicht machen.
Das Skript ist dicher noch lange nicht ausgereift, jedoch recht flexibel einsetzbar, für Verbesserungen bin ich immer dankbar. Ich selbst setzte es immer mit Gentoo ein. Viel Spaß!