PF will nich und wenn nur langsam

atzplzw

Active Member
Hallo!
Is schon sehr spät vielleicht hab ich irgendwas übersehen oder so aber pf will hier einfach nich. Eigentlich hab ich viel mehr regeln, aber es funktioniert bei diesen schon nich. Ich möchte nich alles Eingehende blocken da mehrere alias auf ext_if sind sondern nur eine spezielle externe IP.

pf.conf
Code:
ext_if = "re0"
www_ex = "1.2.3.4"

scrub on $ext_if all

# block all connections to www except port 80
block in on $ext_if from any to $www_ex
pass in quick on $ext_if proto tcp from any to $www_ex port 80 flags S/SA synproxy state

Als Ausgabe von pfctl -v kommt das raus:
Code:
ext_if = "re0"
www_ex = "1.2.3.4"
scrub on re0 all fragment reassemble
block drop in on re0 inet from any to 1.2.3.4
pass in quick on re0 inet proto tcp from any to 1.2.3.4 port = http flags S/SA synproxy state

So also die Webseite wird nicht angezeigt. Wenn PF aus is gehts natürlich. Wenn ich flags S/SA synproxy state weglasse gehts ABER super langsam. Da dauerts so 5-10 sek bevor die Seite geladen ist. Ohne PF gehts ganz schnell.

Was ist hier falsch?

Hab net.inet.ip.forwarding=1 für NAT und ein OpenVPN tun0. Forwarding auf 0 und OpenVPN aus hat auch nichts gebracht.

Mit FTP geht die Verbindung wenn ich die flags S/SA synproxy state rausnehme. (Ohne PASV natürlich, is ja nichts anderes offen.)

Danke für die Hilfe!
 
Probier mal:
Code:
pass in quick on $ext_if proto tcp from any to $www_ex port 80 keep state
 
Das funktioniert genau so, als wenn ich flags S/SA synproxy state weglasse. Es werden so ca. 8 kleinere Bilder geladen. Dann dauert es 5 sek und dann ist die Seite vollständig geladen. Wenn ich jetzt sofort irgendwelche Links anklicke werden die ohne Verzögerung geladen. Warte ich aber eine Weile und klicke dann Links ist das selbe Verhalten als wenn ich die Seite zum ersten Mal lade...
 
Im FreeBSD Handbook hab ich gelesen (Link) folgende Sachen in sysctl.conf zu schreiben:
net.inet.ip.rtexpire=2
net.inet.ip.rtminexpire=2
net.inet.ip.rtmaxcache=256


Ist das ein Problem? Was sind die Standartwerte, dann könnte ich das mal zurücksetzen. (Kann leider nicht rebooten)
 
Ich erinnere mich an ähnliche Probleme, die von einem scrub in all gelöst wurden.
 
Das hilft leider auch nicht. Wie könnte ich denn rausfinden was mit der Verbindung passiert?
 
Ja die Programme kenn ich. Aber ich bin nich der Profi als das ich allein rausfinden könnte woran das liegt.
Was könnte ich also am besten machen um den Fehler zu finden?
 
Ich hab ja keinen blassen Schimmer von der Materie, aber warum stehen in den Beispielen Musterfilter mit dem Wörtchen "keep" vor dem state und anderen Anweisungen und bei Dir nicht? :confused:

Muß es wirklich an PF liegen oder kann es auch einen anderen Grund haben?
 
Ich kann das nicht 100% sagen, aber ohne PF geht ja alles. Also ist es wohl die erste Schlussfolgerung.

Wenn du hier nachliest, siehst dass synproxy state richtig ist und es wir auch beschrieben was es macht.
Ich hätte auch keine Problem das wegzulassen aber auch wenn es nicht da steht funktioniert der Apache nicht ordentlich.
 
tcpdump -nettti pflog0

dann siehst du zumindest mal was genau geblockt wird, oder wo es probleme gibt. setzt natürlich folgendes voraus:

block in on log $ext_if from any to $www_ex

wie der synproxy die pakete behandelt die nach dem handshake ausgetauscht werden müssen, weiß ich nicht genau, aber ich würde auf jeden fall dem pf mitteilen, dass alles vom externen interface mit der adresse vom webserver auf port 80 raus darf.

pass out quick on $ext_if proto tcp from $www_ex port 80 to any keep state

das sollte dann so aussehen:

ext_if = "re0"
www_ex = "1.2.3.4"

scrub in all

# block all connections to www except port 80
block in log on $ext_if from any to $www_ex
pass out quick on $ext_if proto tcp from $www_ex port 80 to any keep state
pass in quick on $ext_if proto tcp from any to $www_ex port 80 flags S/SA synproxy state
 
Bauen sich viele seiten nur sehr langsam auf? Irgendwie wird mir auch nicht ganz klar wo du die Firewall nutzt, ob du versuchst webseite direkt von dem PC mit der Firewall aufzurufen e.t.c.

Solltest du direkt DSL nutzen, must du evtl. die MTU anpassen lassen von pf!

Funktioniert denn die namensauflösung richtig?
 
Super danke für die Hilfe! Ich hab mir einfach mal den neusten Kernel drauf gemacht und darin pf nicht nur als module geladen.
Und dann gleich noch lastest Apache. Nach einen Neustart gings dann auf einmal.
Also jetzt werd ich wahrscheinlich nie dahinter kommen, aber is ja auch egal. Sicher ne Menge an Zeit gespart...

Nochmals vielen Dank an alle hier!
 
Zurück
Oben