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.