pf rdr IP Adressen ausschließen?

minimike

Berufsrevolutionär
Hi

Ich habe einen transparrent Proxy aufgesetzt

Code:
rdr pass inet proto tcp from {(bridge0:network)} to any port {80} -> 127.0.0.1 port 3128
rdr pass inet proto tcp from {(bridge0:network)} to any port {443} -> 127.0.0.1 port 3129

Kann ich da einzelne IP Adressen ausschliessen?
Entweder bekomme ich bei meinen Versuchen Syntaxfehler oder es funktioniert nicht. Wenn es geht wie wäre die korrekte Syntax?
 
Hi

damit geht es. Traffic geht sofern nicht auf die IP 172.24.239.1 dann auf 127.0.0.1 port 3128.
Code:
rdr pass inet proto tcp from {(bridge0:network)} to {!172.24.239.1/32, any} port {80} -> 127.0.0.1 port 3128
rdr pass inet proto tcp from {(bridge0:network)} to {!172.24.239.1/32, any} port {443} -> 127.0.0.1 port 3129

Anscheinend ist die Reihenfolge wichtig. {any, !172.24.239.1/32} geht nicht. Ich dachte das wäre egal?
 
Das liegt daran, dass pf zwei getrennte regeln daraus macht und first match bei rdr regeln gilt.
 
Ich verstehe nicht ganz, was das zusätzliche "any" soll. "!172.24.239.1/32" heißt doch "Alle außer 172.24.239.1".
 
hi
alternativ kannst du auch einfach 172.24.239.2-172.24.239.254 schreiben
holger

Hmm, das verstehe ich nun überhaupt nicht.
!172.24.239.1/32 heißt doch "Alle (ca. 4 Mrd) Adressen ausser 172.24.239.1.
172.24.239.2-172.24.239.254 meint einen Bereich von 253 Adressen. Das ist doch nicht dasselbe?

Ich hab aber aus diesem Anlass nochmal nachgedacht. Meine Anmerkung aus Post #4 führt auch nicht zum Ziel, da dann das "pass" für 172.24.239.1 fehlt und die Adresse dann ganz geblockt wird.

Richtig muss es also heissen:

rdr pass inet proto tcp from {(bridge0:network)} to any port {80} -> 127.0.0.1 port 3128
no rdr pass inet proto tcp from {(bridge0:network)} to 172.24.239.1/32 port {80}

Für 172.24.239.1/32 wird die 2. Regel ausgeführt und die enthält kein rdr.

-Heinrich
 
Richtig muss es also heissen:

rdr pass inet proto tcp from {(bridge0:network)} to any port {80} -> 127.0.0.1 port 3128
no rdr pass inet proto tcp from {(bridge0:network)} to 172.24.239.1/32 port {80}

Für 172.24.239.1/32 wird die 2. Regel ausgeführt und die enthält kein rdr.

-Heinrich
minmike hat doch weiter oben geschrieben, dass es genau so nicht geht? Bei rdr gilt first match wins und 172.24.239.1 ist in any enthalten.
 
minmike hat doch weiter oben geschrieben, dass es genau so nicht geht? Bei rdr gilt first match wins und 172.24.239.1 ist in any enthalten.

Ok, sorry, ich nehm alles zurück :( Ich hatte first match wins bei rdr vergessen. Ich arbeite eigentlich nur noch mit dem OpenBSD packet filter und bin mit dem FreeBSD pf nicht mehr so vertraut. Werd mich jetzt lieber zurückhalten..

-Heinrich
 
Zurück
Oben