![]() |
|
|
|
#1 |
|
Registered User
Registrierungsdatum: Jun 2004
Beiträge: 15
|
pf - redirect
Hallo,
ich habe ein pf config Problem im Zusammenhang mit einem route-to Kommando. Hintergrund: Die obsd fw hat eine default route Richtung externe Firewall über die sämtlicher Verkehr zum Internet geroutet wird. Für ein Projekt soll der Verkehr eines Server per route-to einen anderen Weg zum Internet nehmen. Dazu habe ich folgende pf Rule gebaut: pass in quick on $if_dmz from <dmz_fw_redirect_clients> to ! <all_uwh> route-to ($if_newras $gwnewras_int ) tag NEW_GWRAS Das ganze funktioniert in soweit gut, daß z.B. pings von dem Server über dieses route-to Kommando an das passende Interface geroutet werden, das Ping Ziel im Internet auch erreicht wird und alles ist schön. Dieses Verkehr ist outgoing also initiiert von dem Server. Mein Problem ist Verkehr der vom Internet initiiert ist. Wenn ich also ein Ping aus dem Internet zu diesem Server sende, nimmt dieses ping den richtigen Weg zu dem host (per tcpdump auf dem Interface $if_dmz geprüft) und der host antwortet auch auf das Ping (ebenfalls geprüft), aber dieses Paket wird *nicht* an das Interface $if_newras gesendet, sondern es greift die default route auf der openbsd fw. Diese pass in quick rule scheint also für dieses Ping Antwortpaket nicht zu greifen. Was ist da falsch? Danke |
|
|
|
|
|
#2 |
|
Kaffeemann
Registrierungsdatum: Apr 2007
Beiträge: 1.186
|
Hm, ich habe eine ähnliche Konfiguration am Laufen. Deshalb frage ich mich, warum du "pass in" machst und nicht "pass out"?
|
|
|
|
|
|
#3 |
|
Registered User
Registrierungsdatum: Jun 2004
Beiträge: 15
|
Hmm, entweder stehe ich auf dem Schlauch, oder ich vestehe nicht, warum es ein out sein sollte.
Also das icmp Paket kommt aus dem Internet über $if_newras rein. Die Rule dazu: pass in on $if_newras all tag NEWRAS Dann geht das Paket über das Interface $if_dmz an den Host. Passende Rule dazu: pass out quick on $if_dmz inet proto icmp from any to $dmz_net icmp-type 8 code 0 Dann genriert der host ein icmp Antwort Paket. Dieses Paket kommt noch über $if_dmz wieder rein und sollte (was dann nicht geht) über die o.g. Rule an $if_newras geroutet werden. Für $if_newras gibt ne Rule pass out quick on $if_newras Hinter $if_newras verbirgt sich eine andere Firewall, die sämlichen Outgoing Traffic managed, also ist diese pass out quick rule ok. Also von der Logik her.. Warum brauche ich eine pass out Rule? Ich dachte diese pass in Rule sorgt dafür, daß das icmp Antwortpaket ans richtige Interface kommt. Dein Vorschlag wäre also sowas? pass out quick on $if_newras from <dmz_fw_redirect_clients> to ! <all_uwh> route-to ($if_newras $gwnewras_int ) ... |
|
|
|
|
|
#4 |
|
Kaffeemann
Registrierungsdatum: Apr 2007
Beiträge: 1.186
|
Ok. du hast mehrere Regeln, ich dachte das ist deine komplette pf.conf.
Ich stelle mir das so vor: Ein Internetrechner pingt diesen Projektserver an. Die Firwallregel sagt: Schick das Paket über das $if_dmz an den Host. Das Antwortpaket von diesem Server sagt der Firewall "ich will ins Internet". Die Firewall sagt: "Gut, dann geh übers Standardgateway". Deswegen hätte ich eine Regel gebaut, die jeglichen Verkehr vom Projektserver über den anderen Weg ins Internet schickt. Kurz gesagt ein "pass out von Projektserver zu Internet rout-to anderer-weg". |
|
|
|
|
|
#5 |
|
Registered User
Registrierungsdatum: Jun 2004
Beiträge: 15
|
Ok, Deine Vorstellung ist ja nicht falsch.
Wie wäre dann die Rule zu Deiner Idee? So wie oben von mir beschrieben? Danke |
|
|
|
|
|
#6 |
|
Kaffeemann
Registrierungsdatum: Apr 2007
Beiträge: 1.186
|
ich zeige dir meine Regel (ist allerdings für FreeBSD, also eine ältere Version von pf). Die Variablen (?) musst du durch deine ersetzen:
pass out quick on $int route-to ($int $ext_if) from $int_if to !$int_net keep state int_if ist bei mir die IP des Gerätes, das über einen anderen Weg raus soll ext_if ist bei mir der andere Weg int ist bei mir die Netzwerkkarte über die der Traffic läuft int_net ist bei mir das gesamte Subnetz (dieser "lokale" traffic soll ja nicht ins Internet) |
|
|
|
|
|
#7 |
|
Registered User
Registrierungsdatum: Jun 2004
Beiträge: 15
|
Für die Nachwelt: In der manpage ist zu finden:
"The route-to option routes the packet to the specified interface with an optional address for the next hop. When a route-to rule creates state, only packets that pass in the same direction as the filter rule specifies will be routed in this way. Packets passing in the opposite direction (replies) are not affected and are routed normally." Daher habe ich noch ne Rule eingebaut, welche die replies passend routet: pass in on $if_newras all reply-to ($if_newras $gwnewras_int) Habe es noch nicht ausgiebig getestet, aber ein ping aus dem Internet zu dem host funktioniert, was vorher nicht der Fall war. |
|
|
|
![]() |
| Dieses Thema betrachten zurzeit 1 Personen. (0 registrierte Benutzer und 1 Gäste) | |
| Themen-Optionen | |
| Ansicht | Thema bewerten |
|
|
Ähnliche Themen
|
||||
| Thema | Erstellt von | Forum | Antworten | Letzter Beitrag |
| pf: redirect from local to local mit NAT auf local Interface | plepps | OpenBSD - Allgemein | 5 | 05.05.2012 08:03 |
| pf & redirect | locutus | OpenBSD - Allgemein | 3 | 10.10.2006 19:19 |
| nat + redirect + pf + mcse schulung | saftig | FreeBSD - Netzwerk | 3 | 05.11.2005 11:51 |
| PF und redirect (rdr)/ FTP-Proxy | asg | *BSD - Serverdienste | 3 | 12.08.2005 10:10 |
| Neues Release von PF für FreeBSD | asg | News | 0 | 25.04.2003 07:53 |