PF und transparenter Proxy in 4.7

Reks30

Well-Known Member
Hallo,

ich habe meine Firewall von OpenBSD 4.6 auf 4.7 upgedatet. Ich habe natürlich auch all meine nat und rdr Regeln auf die neue Syntax angepaßt. Auf der Firewall läuft auch ein Squid als transparenter Proxy. Was ich nun aber sonderbar finde: Die Weiterleitung auf den transparenten Squid erfolgt mit einer pf Regel in der folgenden Art:
Code:
pass in quick on $ifklan proto tcp from $klan to ! <allintern> port 80 rdr-to 127.0.0.1 port 3128
Zur Erklärung: in der Tabelle <allintern> stehen interne Webserver. Eigenartigerweise funktioniert diese Weiterleitung nur mit dem quick Schlüsselwort. Kommentiere ich diese Regel ganz aus funktionieren erwartungsgemäß keine Verbindungen mehr auf Port 80. Steht die Regel ohne quick drin, funktionieren Verbindungen auf externe Webserver, werden aber nicht über den Proxy geleitet. Das gleiche Phänomen habe ich mit dem FTP-Proxy von OpenBSD. Kann mir jemand dieses Verhalten erklären? Eigentlich würde ich bei dieser Regel erwarten das es völlig egal ist, ob ich quick dazu schreibe oder nicht, da darunter keine weiteren auf diesen Netzverkehr passenden Regeln mehr kommen.

Gruß
Reks30
 
muss es nicht nach neuem syntax: 'match in ...' heissen und nicht 'pass ...' ?

--ingolfo
 
muss es nicht nach neuem syntax: 'match in ...' heissen und nicht 'pass ...' ?

Es geht beides. match entspricht dem alten rdr und pass dem alten rdr pass. Man kann das pass mit der Weiterleitung kombinieren. Wenn man match verwendet müßte es später noch ein zusätzliches pass geben. Verwendet man direkt pass hat man beides in einen.

Gruß
Reks30
 
ahhh, okay ...

> ... erwarten das es völlig egal ist, ob ich quick dazu schreibe oder nicht, da
> darunter keine weiteren auf diesen Netzverkehr passenden Regeln mehr
> kommen.

... wenn du sagst, dass man surfen kann wenn du die regel komplett auskommentierst, dann muss es ja doch noch mind. eine weitere regel geben die offensichtlich match't und traffic in diese richtung erlaubt!?

--ingolfo
 
... wenn du sagst, dass man surfen kann wenn du die regel komplett auskommentierst, dann muss es ja doch noch mind. eine weitere regel geben die offensichtlich match't und traffic in diese richtung erlaubt!?

Nein, ich schrieb ja "Kommentiere ich diese Regel ganz aus funktionieren erwartungsgemäß keine Verbindungen mehr auf Port 80". Kommentiere ich die Regel aus, werden die Verbindungen geblockt. Sonst wäre es mir auch verständlich und ich würde nach der anderen Regel suchen, aber so wie es jetzt ist, gibt es definitiv keine weitere Regel die den Verkehr erlaubt und dennoch wirkt sich das quick Schlüsselwort so aus.
 
sorry, ich hatte mich bei meinem 2. post auf das verlassen was noch in meinem kopf war vom 1. lesen ...

das 'pass in ... rdr-to' muesste ja dann sozusagen nicht "first-match" sein wie bisher ein normales 'rdr ...' sonder last matching!

vielleicht kann man ja irgendwie dem problem auf die schliche kommen wenn du die regel in 2 separate (eine reine rdr und eine pass-rule) aufspittest.

--ingolfo
 
Zuletzt bearbeitet:
vielleicht kann man ja irgendwie dem problem auf die schliche kommen wenn du die regel in 2 separate (eine reine rdr und eine pass-rule) aufspittest.

Ich habe jetzt eine rdr-to Regel mit match draus gemacht und ein direkt dahinter stehende pass Regel ohne quick. Das geht genauso. Wenn ich die pass Regel weglasse wird der Verkehr geblockt.

Verstehbar ist das nicht.

Gruß
Reks30
 
Nabend

Gerade auf openbsd 4.7 geupdatet und mein NAT Regel aktualisiert.
Aber funz net ka was ich falsch mache hier die Syntax:

match out inet from ($int_interface) to any nat-to ($out_interface)

Weiß einer Rat?
 
Nabend

Funz immer noch net aber hier meine NAT Syntax:

bge0 is LAN
tun0 is DSL

" match out inet from bge0 to any nat-to (tun0) "

Was brauch ich da jetz noch für ne pass regel?
 
Das match sorgt nur dafür das die Optionen auf danach folgende pass Regeln angewandt werden, läßt den Verkehr aber noch nicht durch. Du brauchst also noch etwas in der Art:

pass out on tun0 inet from any to any

Oder wenn du restriktiver sein willst muß die Regeln natürlich entsprechend eingegrenzt werden. Außerdem denke ich das dein from bge0 in der match Regel keine gute Wahl ist, denn dann gilt das nur für Verkehr der genau von der Adresse dieses Interfaces kommt. Definier lieber ein Makro für die Adressen des internen Netzes und setze das ein. Als Beispiel:

intern="192.168.1.0/24"

match out on tun0 inet from $intern to any nat-to (tun0)

pass out on tun0 inet from $intern to any

Gruß
Reks30
 
Moin Reks30

Habs ne bissel geändert auf ne Tabelle wo die IPs für die Clienst drin sind is besser ;)
Also quasi so:

#Liste mit IP von Clients
table <clients> persist file "/etc/Netzwerk"

#NAT Regel
match out on tun0 inet from <clients> to any nat-to (tun0)

pass out on tun0 inet from <clients> to any



Danke nochma für den Denkanstoss und schönen Wochende noch ;)


Gruß Alphatierchen
 
Zurück
Oben