Daemon ifstated
monitoruje status interfejsów sieciowych w systemie OpenBDS oraz umożliwia wykonanie odpowiedniej akcji (polecenia) w przypadku wykrycia zmian. Zmianą taką może być włączenie/wyłączenie karty sieciowej lub brak odpowiedzi na ping.
Przykładowa konfiguracja
W poniższym przykładzie korzystamy z dwóch połączonych ze sobą maszyn (redundancja przy użyciu carp
). Firewall fw-m korzysta też z modemu DSL. Więcej informacji na temat redundancji w OpenBSD znaleźć można we wpisie „Redundantny Firewall w OpenBSD”, natomiast o konfiguracji DSL w OpenBSD można przeczytać tutaj. Będziemy monitorować zarówno stan interfejsów carp
, jak i łącza DSL (pppoe0
). Schemat poniżej:
ifstated
używa pliku /etc/ifstated.conf
do konfiguracji:
root@fw-m:/>cat /etc/ifstated.conf init-state master carp_up = "carp0.link.up && carp2.link.up" carp_init = "carp0.link.unknown || carp2.link.unknown" pppoe0_up = "pppoe0.link.up && vr1.link.up" pppoe0_down = "!pppoe0.link.up || !vr1.link.up" state master { init { run "echo fw-m is now in MASTER state | mail -s 'fw-m ifstated state: MASTER' root@localhost" } if ($carp_init) run "sleep 2" if (! $carp_up) set-state backup if ($pppoe0_up) { run "echo fw-m DSL is UP | mail -s 'fw-m ifstated DSL up' root@localhost" run "pfctl -f /etc/pf.conf" } if ($pppoe0_down) { run "echo fw-m DSL is DOWN | mail -s 'fw-m ifstated DSL down' root@localhost" run "pfctl -f /etc/pf.conf-nodsl" } } state backup { init { run "echo fw-m is now in BACKUP state | mail -s 'fw-m ifstated state: BACKUP' root@localhost" } if ($carp_init) run "sleep 2" if ($carp_up) set-state master }
W powyższym przykładzie fw-m działa domyślnie w stanie master (init-state master). Definiujemy po 2 zdarzenia dla interfejsów carp
oraz pppoe
. carp_up
jeżeli obydwa interfejsy carp
są włączone oraz carp_init
jeżeli ich stan nie jest jeszcze zdefiniowany. Podobnie dla interfejsu pppoe1
(który jest połączony z vr1
). Jeżeli wszystko działa poprawnie system wyśle na wybrany adres 2 maile oraz zrestartuje firewall’a.
Gdy ifstated
wykryje, że interfejs pppoe0
lub vr1
nie działają, ponownie prześle odpowiedniego maila oraz dodatkowo włączy firewall’a bez obsługi DSL (/etc/pf.conf-nodsl
).
W przypadku usterki któregoś z interfejsów carp
system zmieni status na backup oraz oczywiście prześle maila.
Konfigurację można przetestować wpisując:
root@fw-m:/>ifstated -n -v carp_up = "carp0.link.up && carp2.link.up" carp_init = "carp0.link.unknown || carp2.link.unknown" pppoe0_up = "pppoe0.link.up && vr1.link.up" pppoe0_down = "!pppoe0.link.up || !vr1.link.up" ifstated: configuration OK
Jeżeli wszystko się zgadza możemy włączyć daemona wpisując po prostu polecenie ifstated
.
Jak widać konfiguracja jest bardzo prosta, a możliwość uruchamiania poleceń/skryptów podczas wykrycia zmiany na interfejsach daje szerokie pole do popisu oraz pozwala na zbudowanie niezawodnego systemu.
0 Komentarze.