OpenBSD aktiivne/passiivne tulemüürilahendus
Sisukord
Sissejuhatus
Eesmärgiks on saavutada selline asjakorraldus, et mitu OpenBSD operatsioonisüsteemiga arvutit töötaksid nii, et neil on hulga peale üks nö teenusega seotud ip aadress ning igal ajahetkel täpselt üks osaline tegeleb selle aadressiga soetud pakettidega, st teenindab selle aadressiga seotud teenustele tulnud päringuid.
Üldiselt on olemas mitu protokolli, mis sellist asjakorraldust võimaldavad, OpenBSD puhul soovitatakse kasutada CARP (Common Address Redundancy Protocol) protokolli ja vastavaid operatsioonisüsteemi vahendeid.
Tulemusena peaks tekkima sellise skeemi alusel töötav süsteem
___ ___ | | kalake | | tuvike |___| |___| | 192.168.1.11 | 192.168.1.12 | | ----|-------------------------|--------------|---- teenuse ip 192.168.1.10 | _|_ gw: 192.168.1.254 | | |___| | | ..
kus
- 192.168.1.11 ja 192.168.1.12 on arvutitele kalake ja tuvike vastavad nö päris ip aadressid
- 192.168.1.10 on teenuse ip aadress, mis on samuti mõlema arvutiga seostatud, kuid samaaegselt vaid üks saab paketid (tänu CARP abil korraldatud nö ARP taseme viguritele)
- 192.168.1.254 on gateway, kui eemalt avalikust võrgust tulevad päringud, siis need satuvad nö aktiivse realserveri peale gw kaudu
Osaliste seadistamine
Olgu tegu kahe teenust pakkuva arvutiga kalake ja tuvike, milles on kummastki üks võrgukaart ning ühe tavapärasel moel seadistatud vaikelüüsiga, nad on ühendatud sama switchi külge nii nagu eelmises punktis skeemil kujutatud. Olgu vaikimisi kalake (192.168.1.11) teenust pakkuv arvuti ja tuvike (192.168.1.12) nn hot stand-by.
Arvutite võrk on seadistatud tavapäraselt, kuid lisaks on tekitatud spetsiifilised nn carp seadmed. Selleks tuleb öelda kalakeses
# ifconfig carp1 create # ifconfig carp1 vhid 1 carpdev em0 pass lanpasswd 192.168.1.10 netmask 255.255.255.0
ning tuvikeses
# ifconfig carp1 create # ifconfig carp1 vhid 1 carpdev em0 pass lanpasswd advskew 128 192.168.1.10 netmask 255.255.255.0
Pange tähele, et tuvikeses on lisatud "advskew 128", mis tähendab, et normaalses olekus on kalake teenust pakkuv arvuti.
Tulemusena on näha selline ifconfig väljund kalakeses
carp1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:00:5e:00:01:01 carp: MASTER carpdev em0 vhid 1 advbase 1 advskew 0 groups: carp inet6 fe80::200:5eff:fe00:101%carp1 prefixlen 64 scopeid 0x8
ning selline tuvikeses
carp1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:00:5e:00:01:01 carp: BACKUP carpdev em0 vhid 1 advbase 1 advskew 128 groups: carp inet6 fe80::200:5eff:fe00:101%carp1 prefixlen 64 scopeid 0xa
Selleks, et peale arvuti alglaadimist sarnased seadmed tekkiksid peavad olema arvutites vastavalt sellised failid moodustatud
kalake# cat /etc/hostname.carp1 inet 192.168.1.10 255.255.255.0 192.168.1.255 vhid 1 carpdev em0 pass lanpasswd
ja
tuvike# cat /etc/hostname.carp1 inet 192.168.1.10 255.255.255.0 192.168.1.255 advskew 128 vhid 1 carpdev em0 pass lanpasswd
Paketifiltri seadistamine iseärasused
Seda milline osaline parasjagu teenust pakub kontrollitakse CARP protokolli abil, arusaadavalt peab siis paketifilter lubaba läbi vastavat liiklust.
pass quick on $ext_if proto carp keep state
Teenuste seadistamise iseärasused
Teenuste seadistamise puhul on mõnus see, et teenusega seotud ip aadress on arvuti kogu aeg olemas ja sellele saab teenuse ära bindida. Ning kui madalas kihis töötava CARP protokolli tegevuse tulemusena hakkavad paketid laekuma, siis algabki teenindamine.
Arvuti realserveri ip aadressi on aga haldustegevuste jaoks hea kasutada, teenuse pakkumise seisukohalt ei ole see vajalik ja võib omistamata jätta.
Arusaadavalt peab tagama muude vahenditega, et teenust pakkuvates arvutites on andmed sisulises osas sobivas seisundis, CARP sellega ei tegele. Nt võib olla vajalik peale kasutajate kalakeselt tuvikesele lülitamise andmebaasid sünkroniseerida vms.
Haldamine
Kui selles arvutis, mis parasjagu tegeleb teenuse pakkumisega on tarvis teha hooldustööd, siis kasutajate ümbersuunamiseks teisele arvutile tuleb öelda carp seadmele down
# ifconfig carp1 down
Ja hooldustöö lõppemisel jällegi up
# ifconfig carp1 up
Teine võimlalus on muuta carp grupi demote väärtust, mida suurem see väärtus on, seda ebatõenäolisemalt on vastavasse gruppi kuuluvad seadmed master'id, vaikimisi on väärtus null
# ifconfig -g carp carpdemote 50
Ning tagasi viimiseks
# ifconfig -g carp -carpdemote 50
CARP lahenduse kasutamine tulemüüris ja pfsync
Lisaks sellele, et niisama nt http või smtp teenust pakkuvate arvutite juures saab kasutada CARP'i on võimalik kasutada seda ka tulemüüri juures. Kusjuures tulemüüris on reeglina mitu võrgukaarti, iga kaardiga on seotud nn realserveri aadress ning teenust pakkuv aadress vastava carp seadmega. Teenust pakkuv aadress on siis tulemüüri puhul reeglina vastava subneti arvutite jaoks vaikelüüsi aadressiks.
Lisaks on pf paketifiltri puhul võimalus spetsiaalse pfsync protokolli ja seadme abil sünkroniseerida pf olekutabeli sisu kahe arvuti vahel. Selle tulemusena säilivad peale arvutite ümberlülitust kasutajate tcp sessioonid jms.
pfsync kasutamiseks tuleb kaks arvutit omavahel soovitavalt ainult selleks mõeldud võrgukaarte pidi risti keerupaari kaabliga ühendada ning öelda kalakeses
# ifconfig em1 10.10.10.11 netmask 255.255.255.0 # ifconfig pfsync0 syncdev em1 # ifconfig pfsync0 up
ning tuvikeses
# ifconfig em1 10.10.10.12 netmask 255.255.255.0 # ifconfig pfsync0 syncdev em1 # ifconfig pfsync0 up
Lisaks on tarvis paketifiltriga lubada läbi mõlemas arvutis vastavat liiklust, näiteks reaga
pass on em1 proto pfsync