Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Vysoce dostupný firewall s Keepalived

V minulém článku byla představena motivace pro návrh vysoce dostupného firewallu na Linuxu. Zároveň byly předloženy dva problémy, se kterými bude potřeba se vypořádat. Nyní se tedy začneme zabývat jedním z možných řešení pro operační systém Linux. Dnes použijeme program Keepalived, který implementuje VRRP.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

Více strojů jako jeden – rychlá odpověď

Pokročilého uživatele by mělo uspokojit, pokud prozradím, že pro řešení tohoto problému byl použit program keepalived. Toto je vše, co je nezbytně potřeba. Jak a co nakonfigurovat, je možné zjistit s pomocí Google.

Více strojů jako jeden – podrobněji

Tento problém lze vyřešit pomocí programu keepalived. Ten je open-source implementací protokolu VRRP, což je protokol definovaný v RFC 3768. Ačkoli je definice volně dostupná, protokol je patentován firmou Cisco.

VRRP pracuje tak, že definuje takzvaný virtuální router. Protokol byl navržen v souvislosti se zvýšením dostupnosti gatewayí, resp. routerů – odtud tedy označení. Tento virtuální router je dostupný pomocí virtuální IP adresy (VIP) a virtuální MAC adresy (VMAC). Virtualni router je identifikován číslem od 0 do 255 tak, aby bylo možné na jedné lokální síti definovat více virtuálních routerů.

Pomocí tohoto identifikátoru se do virtuálního routeru „vkládají“ fyzické stroje. Protokol VRRP se pak postará o to, aby si fyzické stroje předávaly VIP a VMAC a tím přebíraly funkcionalitu routeru. Zároveň se VRRP stará o detekci dostupnosti strojů ve virtuálním routeru – periodickým rozesíláním vrrp advertisement paketů.

Konfigurace

Keepalived se standardně konfiguruje pomocí souboru keepalived.conf, který je umístěn v /etc/keepalived/. Zajímavými položkami konfiguračního souboru jsou:

  1. definice instance VRRP,
  2. definice skupiny instancí,
  3. definice skriptů.

Dále popíšu ty části, které jsou zajímavé pro potřeby implementace vysoce dostupného firewallu. V hranatých závorkách budu uvádět jména atributů z konfiguračního souboru.

Definice instance [ vrrp_instance <name>] slouží pro konfiguraci jednoho virtuálního zařízení. Součástí konfigurace je definice VIP, která se má předávat. Ta je stejná na všech fyzických strojích v daném virtuálním routeru.

Dále definujeme, které fyzické zařízení [ interface] (například eth0) – a tím i fyzická ip adresa – na daném stroji bude zúčastněna v předávání virtuální adresy – tj. toho, na kterém zařízení fyzického stroje je možné očekávat VIP v případě, že je tento stroj ve stavu MASTER – pro virtuální router s daným id [ virtual_router_id].

Další položkou je definice stavu [ state] a definice priority [priority]. State může nabývat dvou hodnot – MASTER a BACKUP. Stroj, který je ve stavu MASTER, je pak držitelem virtuální adresy. Stav uvedený v konfiguračním souboru říká, v jakém stavu vzhledem k VRRP se má stroj po spuštění nacházet.

Toto nastavení je však (alespoň v keepalived) pouze informativní, protože každý stroj vkládaný do virtuálního routeru automaticky vyvolá proces volby MASTER, který je založen na prioritě. Status MASTER pak získá stroj s nejvyšší prioritou. Kdyby náhodou i priority byly stejné, použijí se v rozhodování IP adresy fyzických strojů. Tudíž je možné v konfiguraci každého fyzického stroje s klidným svědomím definovat stav MASTER a máme zaručeno, že se protokol postará o deterministickou volbu jednoho z členů virtuálního routeru, přes který následně poteče provoz.

Definice skupiny instancí umožňuje synchronizovat více instancí. Mějme například instance VI_1 a VI_2, které implementují virtuální adresy VIP1 a VIP2. Pokud jedna z těchto instancí zaznamená výpadek a tedy dojde na této instanci k přepnutí ze stavu MASTER do stavu BACKUP, pak nám sdružení do skupiny zaručí, že k přepnutí stavu dojde i na druhé instanci (obecně na všech). Toto je důležité právě při implementaci virtuálního routeru, který vždy má alespoň dvě rozhraní (vnitřní a vnější), které je potřeba přepnout současně, aby vnější i vnitřní virtuální adresy byly vždy na stejném fyzickém stroji.

Definice skriptů je v případě implementace vysoce dostupného firewallu klíčová. Keepalived umožňuje definovat skripty, které mají být spuštěny v okamžiku, kdy dojde k přepnutí mezi stavy, případně k nějaké chybě. Této vlastnosti bude využito k vydání příkazu pro synchronizaci conntrack tabulek.

Závěrem

Na závěr je nutné poznamenat, že implementace VRRP v keepalived nedodržuje zcela standard. Konkrétně se jedná o to, že standard vyžaduje definici virtuální MAC adresy. Keepalived ale používá MAC adresu zařízení, se kterým je v daném okamžiku svázána VIP. To je možné díky tomu, že v obou případech je nutné po přenesení adresy na jiný fyzický stroj vyslat ARP Gratuitous, aby si switche aktualizovaly své tabulky a je tedy jedno, zda se používá VMAC nebo fyzická MAC.

Nyní je tedy zřejmé, jak zařídit, aby více fyzických strojů v IP síti mohlo vypadat jako jeden. To, co bylo popsáno, doposud zcela postačuje například pro implementaci vysoce dostupného routeru. Příště si řekneme, jak synchronizovat conntrack tabulky, což je poslední nezbytnou věcí, kterou zbývá vyřešit při implementaci vysoce dostupného firewallu.

Školení: TCP/IP na Linuxu I.

V tomto kurzu se seznámíte se síťováním v Linuxu na všech vrstvách. Ujasníte si možnosti použití Linuxu v roli klienta, serveru i routeru.

  • Počítačové sítě
  • Architektura TCP/IP
  • Ethernet
  • Protokol PPP
  • Protokoly IPv4 a IPv6
  • IP na ethernetu
  • IP routing
  • Chybové a řídící zprávy
  • Transportní protokoly
  • Překlady jmen a adres
  • Aplikace
  • Překlady síťových adres a proxying
  • Testování sítě
  • Aktuální situace na poli TCP/IP

Podrobnější informace a přihláška  

Ohodnoťte jako ve škole:
Průměrná známka 3,21

Přehled názorů

Kvalita textu
cmartin 13. 11. 2007 06:03
Nový
├ 
Re: Kvalita textu
anonymní uživatel 13. 11. 2007 07:21
Nový
└ 
Re: Kvalita textu
jc 13. 11. 2007 07:55
Nový
 
└ 
Re: Kvalita textu
Martin Soukup 13. 11. 2007 08:07
Nový
 
 
└ 
Re: Kvalita textu
posejdon 13. 11. 2007 12:49
Nový
ARP Gratuitous
pht 13. 11. 2007 07:27
Nový
└ 
Re: ARP Gratuitous
jard 13. 11. 2007 10:19
Nový
Priserny clanek
ava 13. 11. 2007 08:37
Nový
├ 
Re: Priserny clanek
Jirka 13. 11. 2007 10:37
Nový
├ 
Re: Priserny clanek
Izak 13. 11. 2007 10:56
Nový
│
├ 
Re: Priserny clanek
bitsmith 13. 11. 2007 14:37
Nový
│
└ 
Re: Priserny clanek
Jouda 13. 11. 2007 17:41
Nový
├ 
Re: Priserny clanek
gnu 13. 11. 2007 10:58
Nový
│
├ 
Re: Priserny clanek
Roman 13. 11. 2007 12:23
Nový
│
└ 
Re: Priserny clanek
s 13. 11. 2007 14:47
Nový
├ 
Re: Priserny clanek
lyon 13. 11. 2007 16:04
Nový
└ 
Re: Priserny clanek
vrn 13. 11. 2007 18:28
Nový
zpravicky
capslock 13. 11. 2007 13:31
Nový
Přidávám se ke kritice
Tom fi 14. 11. 2007 22:51
Nový
kvalita roota
mig 16. 11. 2007 13:55
Nový
Tak toto na HA nestaci
PSIkappa 16. 11. 2007 21:19
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem