CARP Interfaces nach reboot down

crotchmaster

happy BSD user
Hallo Forenleser,

ich bin gerade dabei, eine Firewall bestehend aus zwei Systemen von OpenBSD nach FreeBSD umzubauen. Soweit klappt auch alles. Für die Übergangszeit ist das OpenBSD-System ausgeknippst und müsste im Fehlerfall händisch gestartet werden. Dadurch will ich Wechselwirkungen zwischen unterschiedlichen Versionen von pf/pfsync/carp auf den beiden Systemen ausschließen.

Auf dem neuen FreeBSD-System habe ich das Problem, das die drei carp-Interfaces nach einem reboot nicht automagisch hochkommen. Ich muss mich einloggen und für die drei CARP-Interfaces händisch ein ifconfig up absetzen, also für das erste Interface 'ifconfig carp0 up' usw. Erst danach sind die Interfaces erreichbar und das interne Netzwerk hat Zugriff aufs Internet. Ein ifstated-Daemon, der installiert ist, läuft zur Zeit nicht.

Hier mal der Ausschnitt aus der /etc/rc.conf, der die Netzwerkkonfiguration des Systems beschreibt.
Bei den IP- u. Netzadressen habe ich die ersten drei Oktetts geändert:

Code:
# Netzwerkkonfiguration
hostname="firewall.domain.tld"
cloned_interfaces="carp0 carp1 carp2"
ifconfig_de0="inet 1.2.3.35 netmask 255.255.255.248" # 1. externes Interface
ifconfig_de1="inet 1.2.3.42 netmask 255.255.255.248" # 2. externes Interface
ifconfig_de2="inet 192.168.5.2 netmask 255.255.255.0" # internes Interface
ifconfig_de3="inet 192.168.100.1 netmask 255.255.255.248" # pfsync genutztes Interface
ifconfig_carp0="inet 1.2.3.34 netmask 255.255.255.248 vhid 1 pass geheim advskew 0" # 1. externes CARP-Interface
ifconfig_carp1="inet 1.2.3.41 netmask 255.255.255.248 vhid 2 pass geheimer advskew 0" # 2. externes CARP-Interface
ifconfig_carp2="inet 192.168.5.4 netmask 255.255.255.0 vhid 3 pass supergeheim advskew 0" # internes CARP-Interface
ifconfig_pfsync0="up syncdev de3" # pfsync Interface

# Router und Routen
defaultrouter="1.2.3.33"
gateway_enable="YES"
static_routes="internalnet1 internalnet2 internalnet3 internalnet4"
route_internalnet1="-net 192.168.1.0/24 192.168.5.1"
route_internalnet2="-net 192.168.2.0/24 192.168.5.1"
route_internalnet3="-net 192.168.3.0/24 192.168.5.1"
route_internalnet4="-net 192.168.4.0/24 192.168.5.1"

Hier die /ect/sysctl.conf:

Code:
# Einstellungen fuer CARP
net.inet.carp.allow=1
net.inet.carp.preempt=1
net.inet.carp.log=2

Und hier die Ausgabe von ifconfig -a unmittelbar nach dem Systemstart:

Code:
[root@firewall ~]# ifconfig -a
de0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 150
        ether 00:00:92:a7:8e:18
        inet 1.2.3.35 netmask 0xfffffff8 broadcast 1.2.3.39
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
de1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 150
        ether 00:00:92:a7:8e:19
        inet 1.2.3.42 netmask 0xfffffff8 broadcast 1.2.3.47
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
de2: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 150
        ether 00:00:92:a7:8e:1a
        inet 192.168.5.2 netmask 0xffffff00 broadcast 192.168.5.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
de3: flags=8c43<UP,BROADCAST,RUNNING,OACTIVE,SIMPLEX,MULTICAST> metric 0 mtu 150
        ether 00:00:92:a7:8e:1b
        inet 192.168.100.1 netmask 0xfffffff8 broadcast 192.168.100.7
        media: Ethernet autoselect
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x9
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
pfsync0: flags=41<UP,RUNNING> metric 0 mtu 1460
        pfsync: syncdev: de3 syncpeer: 224.0.0.240 maxupd: 128
pflog0: flags=141<UP,RUNNING,PROMISC> metric 0 mtu 33204
carp0: flags=8<LOOPBACK> metric 0 mtu 1500
        inet 1.2.3.34 netmask 0xfffffff8
        carp: INIT vhid 1 advbase 1 advskew 0
carp1: flags=8<LOOPBACK> metric 0 mtu 1500
        inet 1.2.3.41 netmask 0xfffffff8
        carp: INIT vhid 2 advbase 1 advskew 0
carp2: flags=8<LOOPBACK> metric 0 mtu 1500
        inet 192.168.5.4 netmask 0xffffff00
        carp: INIT vhid 3 advbase 1 advskew 0
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1500
        inet 192.168.6.1 --> 192.168.6.2 netmask 0xffffffff
        Opened by PID 1606

Im Logfile tauchen dabei folgende Meldungen auf, die mir leider nicht viel sagen.

Code:
Mar 18 15:53:25 firewall kernel: carp0: INIT -> BACKUP
Mar 18 15:53:27 firewall kernel: carp1: INIT -> BACKUP
Mar 18 15:53:28 firewall kernel: arp_rtrequest: bad gateway 1.2.3.34 (!AF_LINK)
Mar 18 15:53:30 firewall kernel: carp2: INIT -> BACKUP
Mar 18 15:53:30 firewall kernel: arp_rtrequest: bad gateway 1.2.3.41 (!AF_LINK)
Mar 18 15:53:33 firewall kernel: arp_rtrequest: bad gateway 192.168.5.4 (!AF_LINK)

Kann mir jemand einen Tipp geben, warum die carp-Interfaces nach einem Systemstart down sind? Ich kann an der Konfiguration keinen Fehler entdecken.
Ich bin für jeden Hinweis dankbar.

Gruß c.
 
Last edited:
Hoi,

die PF FAQ schreibt dazu: Since carp(4) and pfsync(4) are both types of network interfaces, they can be configured at boot by creating a hostname.if(5) file. The netstart startup script will take care of creating the interface and configuring it.

Sprich wenn er beim Booten das ned hat macht er koi create von sich aus - und was es ned gibt kann er au dann ned konfigurieren. Fazit: bärig en hostname.if anlegen wo er die carp`s created.

Gruß Bummibär
 
Moin Bummibär,

danke für Deinen Hinweis. Ich habe hier mal einen Link aus dem FreeBSD-Handbuch http://www.freebsd.org/doc/de_DE.ISO8859-1/books/handbook/carp.html. Danach habe ich mich gerichtet. Auch andere HowTos im Internet beschreiben es so. Aber das liefert das obige Ergebnis. Die Schnittstellen werden ja auch angelegt und konfiguriert, 'nur' eben nicht aktiviert.

Und ich würde gerne den FreeBSD-way of configuration gehen. ;)
Ich habe alle meine FreeBSD-Kisten über die rc.conf konfiguriert und möchte das auch weiterhin so machen.

Gruß c.
 
Hoi C.,

schau mal bitte nach ob Du 'device carp' fest in den Kernel neibummiliert hast oder ob es dynamisch geladen wurde nur. (vielleicht macht das den kleinen Unterschied mit dem status up setzen ja aus)
[Vermutung - ungeprüft]

Gruß Bummibär
 
hi
man muss aber nicht verstehen warum das bessere fw system rausgeworfen wird bzw dem erfinder von carp of pf .

aber ok .

carp1 kann man auch per alias auf carp0 laufen lassen.

holger
 
Moin,

ich habe nochmal google angeworfen und scheinbar diesmal die richtigen Suchbegriffe eingegeben. Bei FreeBSD habe ich einen Bugreport gefunden, der den beschriebenen Effekt bei VMware beschreibt. Aus einer Antwort geht hervor, dass der Effekt bei VMware und bei älteren Netzwerkkarten auftritt. Die verwendeten Netzwerkkarten sind nicht mehr so taufrisch (4-fach Adaptec), insofern würde es passen.

Ich habe das für mich so gefixt, das ich die drei ifconfig Befehle in die Datei /etc/rc.local geschrieben habe.

@mark05
Ob OpenBSD das bessere Firewall-System,sei dahingestellt. Ich stehe auf dem Standpunkt, dass das OS alleine noch kein sicheres System macht. Der Admin ist auch entscheidend. Ist der eine taube Nuß, dann kann man auch das SuperDuper-OS hacken.
Ich arbeite täglich mit FreeBSD und kenne mich damit ganz gut aus, zumindest bilde ich mir das ein. Viel besser jedenfalls als mit OpenBSD, mit dem ich nicht richtig warm werde und jedes Update des OS einen riesen Aufwand darstellt, da ich in einer virt. Maschine ersteinmal meinen Kernel mit raidframe-Support und alle Pakete backen muss, anschließend das Ganze auf CD brutzeln muss, um es dann auf den FWs zu installieren. Da bleibt machmal ein zeitnahes Update aus. :mad:

Gruß c.
 
Last edited:
@mark05
Ob OpenBSD das bessere Firewall-System,sei dahingestellt. Ich stehe auf dem Standpunkt, dass das OS alleine noch kein sicheres System macht. Der Admin ist auch entscheidend. Ist der eine taube Nuß, dann kann man auch das SuperDuper-OS hacken.
Ich arbeite täglich mit FreeBSD und kenne mich damit ganz gut aus, zumindest bilde ich mir das ein. Viel besser jedenfalls als mit OpenBSD, mit dem ich nicht richtig warm werde und jedes Update des OS einen riesen Aufwand darstellt, da ich in einer virt. Maschine ersteinmal meinen Kernel mit raidframe-Support und alle Pakete backen muss, anschließend das Ganze auf CD brutzeln muss, um es dann auf den FWs zu installieren. Da bleibt machmal ein zeitnahes Update aus. :mad:

Gruß c.

ich vermute mal, dass er damit nur sagen will, dass die entwicklung in OpenBSD stattfindet und der in FreeBSD voraus ist und es daher nicht versteht, warum ihr das tauscht (gegen versionen, die hinterher hinken ;)).

du schreibst auf der einen seite, dass du mit FreeBSD arbeitest und dir dann der aufwand zu groß ist, bei OpenBSD einen release zu erstellen, der deinen anforderungen entspricht? das verstehe ich nicht so ganz (selbst freebsdupdate braucht seine zeit, um die pakete runterzuladen und funktioniert bei mir trotzdem nicht). wenn du die config des Kernels eh hast, dann sollte es doch ein leichtes sein, die evtl. neuen Optionen zu ergänzen und das teil fix zu backen. anschließend userland und pakete (hey, ich mach das hier auf nem p3 für unsere STABLEs). und so unterschiedlich sind die systeme nu auch gerade nicht, als dass man nicht mit beiden nebneinander klar kommen könnte (was hier ebenfalls sehr gut funktioniert).

naja, jedem das seine und die wahl des systems sei mal dahingestellt, wenn es denn seinen dienst tut. nur ich für meinen teil habe festgestellt, dass OpenBSD als firewall-system einfacher out-of-the-box läuft und zu konfigurieren ist, weil dort auch die entwicklung stattfindet (als letzte frage noch, wozu raidframe _und_ carp? wenn eine kiste abschmiert, tut die zweite weiter. die erste ist doch dann ruck-zuck neu installiert, konfig drauf und wieder ans netz. downtime hat man bei nem hardwaretausch eh)
 
ich habe mich überzeugen lassen

Moin Forenleser,

das Argument, dass bei OpenBSD die Entwicklung von PF und anderen Sicherheitsfeatures erfolgt, hat mich überzeugt. Ein weiterer Grund war auch, das ich durch einen aktuellen Hardwareausfall auf die Idee gekommen bin, statt Festplatten Compact Flash Karten einzusetzen. Dadurch brauche ich kein Raid mehr, zumal die Karten immer billiger werden und beim Defekt einfach ausgetauscht werden können. Und beim System-Update sind sie auch praktischer.

Bei meinen Recherchen für ein Booten von CF-Karten habe ich auch festgestellt, dass das Prinzip mit den Prototyp-Verzeichnissen für eine Ramdisk beim Booten irgendwie praktikabler ist, als das Erstellen von gezipten cpio-Archiven bei FreeBSD, die bei Änderungen neu gemacht werden müssen, z.B. um ein leeres Logfile anzulegen, weil sonst ein Dienst nicht starten will.
Bei den Prototyp-Verz. muss ich nur das Verzeichnis bearbeiten, bzw. die Vorlage der var-Partition mounten und anpassen und anschließend das System neustarten.

Und das Problem mit den carp-Interfaces, die nach dem boot Down sind, hat sich auch erledigt.

Gruß c.
 
Back
Top