Queueing - Logik bei pass out !?!?

DonTermi

Well-Known Member
Hallo,

ich habe mal begonnen unsere Paketfilterregeln für das Firmennetzwerk zu optimieren und endlich mal Queueing einzusetzen (priq und cbq).

Wichtigste Zusammenfassung der pf.conf
Code:
ext="pppoe0"
int="sk0"
table <net> { 192.168.1.0/24, 192.168.2.0/24, 192.168.3.0/24, 192.168.4.0/24 }

...

# Class Based Queueing
# scheduler cbq übernimmt Bandbreitenmanagement
altq on $int cbq bandwidth 16Mb queue { std_in, vpn_in, dns_in, low_in }
queue dns_in    bandwidth 128Kb priority 7
queue vpn_in    bandwidth 128Kb priority 6 cbq(borrow)
queue low_in    bandwidth 64Kb priority 2
queue std_in    bandwidth 15.6Mb cbq(default borrow)

...

block on $int all
pass in on $int from <net>
pass out on $int from any to <net> queue low_in

$ext ist das Interface für ADSL
$int die Netzwerkkarte wo unser internes Netzwerk 192.168.1.0/24 dranhängt

Ich verstehe das jetzt so ...

PASS IN ON $int
* Alles was von unserem internen Netzwerk in dieses Interface geht
- Bürorechner -> Switch -> Router($int)

PASS OUT ON $int
* Alles was von der Netzwerkkarte wo unser internes Netzwerk dranhängt in das interne Netzwerk geht
- Router($int) -> Switch -> Bürorechner

Die queue low_in dient nur als Überprüfung. Per block on $int all wird ja erstmal alles Dicht gemacht für das interne Netzwerk. Geht weder was rein ins interne Netzwerk noch nimm das Interface von dort was an.
Rein darf natürlich erstmal dann wieder alles - PASS IN ON $int
Jetzt aber soll eben nur eine gewisse Bandbreite in das interne Netzwerk zugelassen werden um z.b. Downloads zu drosseln. Also wäre dann die Regel für den Verkehr ins interne Netzwerk
PASS OUT ON $int from any to <net> queue low_in

Damit sollte jeglicher Verkehr in das interne Netzwerk 192.168.1.0/24 durch die queue low_in laufen. Tuts aber nicht. Hab nach wie vor volle Downloadbandbreite.
Allerdings wenn ich die Queue auf PASS IN anwende
PASS IN ON $int from <net> to any queue low_in
dann ist der Download gedrosselt.

Wo liegt mein Denkfehler? Hab mich eigentlich an das Beispiel Heimnetzwerk in der FAQ gehalten ...

http://openbsd.sfobug.org/faq/pf/de/queueing.html
 
Dein Denkfehler: per default sind alle Regeln "keep state flags S/SA" - d.h. die Antworten auf die eingehenden Verbindungen werden automatisch durchgelassen. Entweder du schreibst explizit "no state" dazu, oder du setzt die queue auf die pass in-Regel.
 
Dein Denkfehler: per default sind alle Regeln "keep state flags S/SA" - d.h. die Antworten auf die eingehenden Verbindungen werden automatisch durchgelassen. Entweder du schreibst explizit "no state" dazu, oder du setzt die queue auf die pass in-Regel.

Danke. Werd ich nachher mal ausprobieren ... Wieder was gelernt :)

Schade das dann die Beispiele oft so unvollständig sind :(
 
Dein Denkfehler: per default sind alle Regeln "keep state flags S/SA" - d.h. die Antworten auf die eingehenden Verbindungen werden automatisch durchgelassen. Entweder du schreibst explizit "no state" dazu, oder du setzt die queue auf die pass in-Regel.


das ist so nicht ganz korrekt , sorry .

ne keep state regel mit queueing funktioniert auch.

nur hier wird wird fuer die std_in queue borrow verwendet was bedeutet
das bandbreite nachgeholt werden kann wenn die definierte ueberschritten
wird.

man sollte auch nicht zwingend mit dem interface direkt arbeiten
da altq sonst hergeht und , im zweifel , die interface speed als max setzt und somit borrow
bis zur max interface speed geht.

also lieber so

altq on $int cbq bandwidth 100% queue { mybandwidth }
queue mybandwidth bandwidth 16Mb priority 1 cbq ( default ) { std_in, vpn_in, dns_in, low_in }

queue dns_in bandwidth 128Kb priority 7
queue vpn_in bandwidth 128Kb priority 6 cbq(borrow)
queue low_in bandwidth 64Kb priority 2
queue std_in bandwidth 15.6Mb cbq (borrow)


somit wird boorow nur auf die 16Mb ausgefuehrt.

desweiten sollte die regel so aus sehen

block on $int all

pass on $int from <net> to any keep state queue low_in

man erstart sich 1 regel tut aber genauso.

holger
 
Zurück
Oben