OpenBSD 4.7 + NAT + CARP

crotchmaster

happy BSD user
Moin Forenleser,

ich bin gerade dabei, unsere FW auf OpenBSD 4.7 zu hebeln. Da hat sich ja einiges getan.

Im Moment baue ich einen Testaufbau mit drei VMs auf, zwei, die die FWs darstellen und eine VM für den Client.

Ich scheitere nun am NAT im Zusammenspiel mit CARP. CARP für sich funktioniert und auch NAT für sich funktioniert, nur verheiratet kriege ich die beiden nicht. Vielleicht kann mir jemand auf die Sprünge helfen.

Mein Aufbau:

Code:
                              ---------------------
                              |      EIN RECHNER   |
                              ---------------------
                                          |
        ----------------------------------------------------
        |                                                  |
        | em0: 192.168.17.56/26                            | em0: 192.168.17.57/26
        | carp0: 192.168.17.55/26                          | carp0: 192.168.17.55/26
-----------------                               ---------------------
|      FW 1     |-------------------------------|         FW 2      |
-----------------                               ---------------------
        | em1: 10.0.0.2/24                                 | em1: 10.0.0.3/24
        | carp1: 10.0.0.1/24                               | carp1: 10.0.0.1/24
        ---------------------------------------------------
                                            |
                                            | em0: 10.0.0.111/24
                                 -----------------------
                                 |        CLIENT        |
                                 -----------------------

Hier die pf.conf, die auf beiden FW-VMs gleich ist:

Code:
set skip on lo0
set skip on pfsync0
set block-policy return
set state-policy if-bound
set limit { states 60000, frags 60000 }
set optimization normal
set timeout interval 15
set timeout frag 30
set timeout src.track 900

match in all scrub (reassemble tcp)

# nat
pass out on em0 from em1:network to any nat-to em0

# carp
pass quick on { em0 em1 } proto carp keep state (no-sync)

# pfsync
pass quick on em2 inet proto pfsync keep state (no-sync)

# icmp
pass in on em1 inet proto icmp from 10.0.0.0/24 to any icmp-type echoreq keep state

# ftp
anchor "ftp-proxy/*"
pass in quick on em1 inet proto tcp to port ftp rdr-to 127.0.0.1 port 8021

# ssh
pass in quick on em1 inet proto tcp from em1:network to em1:0 port 22

# dns
pass in quick on em1 inet proto { udp, tcp } from 10.0.0.0/24 to 192.168.17.61 port domain keep state

# http
pass in quick on em1 inet proto tcp from 10.0.0.0/24 to any port http keep state
Ein ping vom CLIENT zu EIN RECHNER funktioniert, wenn ich bei der nat-Rule em0 eintrage, aber nicht, wenn ich dort carp0 o. die IP-Adresse des carp-Interfaces eintrage.

Mein Frage nun, wo steckt der Fehler?

Wenn ich bei der nat-Rule carp0 eintrage, kann mit tcpdump auf em0 von FW 1 die echo replys von EIN RECHNER sehe, auf em1 sehe ich nur die echo requests von CLIENT an EIN RECHNER. Es scheint etwas mit dem Regelwerk nicht zu stimmen.

Ich hoffe, mir kann jemand helfen.

Danke und Gruß

c.

PS: Die pfsync-Interfaces sind wie folgt konfiguriert:
FW 1: 10.0.1.1/29
FW 2: 10.0.1.2/29
Und außerdem hat CLIENT die 10.0.0.1 als Gateway eingetragen
 
solved

Moin Forenleser,

ich habe inzwischen den ganzen Aufbau zuhause nochmal unter VMware Fusion nachgebaut und was soll ich sagen, dort geht es. Ich habe nur die externen IP-Adressen von FW1 und FW2 meinen Gegebenheiten angepasst. Nun funktioniert das NATing mit em0 und carp0 als Quell-IP. Bei Nutzung von carp0 eben auch bei Ausfall von FW1.

Danke fürs Lesen! :D

Gruß c.
 
Zurück
Oben