Sraz fotka
 
Akvárium CB 21MHz Elektro Hudba Fotky ZX Spectrum +2A Jídlo Rybaření Hlavní stránka Akvárium CB 27MHz Elektro Hudba Fotky ZX Spectrum Jídlo Rybaření

English version

Sedlo

V současné době umí quagga řídit jen jednu default routu a to je dostatečné jen v případě, že v oblasti je jediný poskytovatel internetu (iGW). Lze samozřejmě použít "tunelování" ale to by museli iGW toto umožnit/znát/ovládnout. Praxe je taková že se tunelování nepoužívá. A tak se nabízí možnost nezávislá na iGW která spočívá ve více routovacích tabulkách na routerech.

Proč použít sedlo?

Potřebujeme tedy směrovat provoz z různých ip adres na různé iGW a tak je nutné vytvořit pravidla a postranní tabulky, které konkrétní provoz směrují nezávisle na hlavní defaut routě v hlavní routovací tabulce.
Jde o skript, který vytvoří postanní tabulky a pravidla dynamicky podle aktuálního stavu hlavní routovací tabulky. Ovlivní to jen vyjmenované IP a rozsahy a vše ostatní se bude řídit podle hlavní routovací tabulky routeru.

Filosoficko-ekonomické aspekty použití

Zavede to konkurenci mezi bránami a zjednoduší to konfiguraci adminům routerů. sedlo ruší monopol jediné internetové brány danou ospf protokolem, kdy "vyhrála" vždy jen jedna internetová brána. K použití sedla není třeba nic nastavovat na internetové bráně a systém sedla není na internetových branách závislý. sedlo nemusí běžet na všech routerech v oblasti a dokonce v dané oblasti můžou existovat skupiny routerů se svým hlavním konfigem odlišným od většinového. Samozřejmě je lepší když routery spolupracují a mají ten samý konfig.
sedlo nasměruje defaut provoz na bránu a ta už si s ním poradí podle svých pravidel jako kdyby pakety přitekly po klasické default routě.

Minimální podmínky pro smysluplnost instalace

Zjednodušeně řečeno tak pro dosažení alternativní inet brány stačí aby nakonfigurované sedlo bylo instalováno alespoň na routerech na přímé cestě od klienta k bráně. Jaké routery to mají být se dá zjistit například příkazem tracert (winďou$) a nebo traceroute (linux)
V případě že v síti jsou smyčky (v naší oblasti je máme) tak je dobré sedlo nainstalovat i na ostatní routery. V případě výpadku obvyklé cesty sedlo přenastaví (pokud je spouštěno pravidelně) cestu podle dynamické routovací tabulky a data tečou sice jinudy ale správně.

Potřebné funkce

OK - vytvořit postranní tabulky
OK - naplnit je routama
OK - načíst lokální konfiguraci
OK - načíst konfiguraci z centra
~ - striktní kontrola konfigurace
- úprava konfigurace dle aktuálního stavu (nedostupnost igw)
OK - vytvořit pravidla pro jednotlivé IP adresy a zapsat je do systému
 - generování statistik na web
- update při vzniku nové verze

Možné problémy
- nutnost instalace na každý router v oblasti
- při velkém počtu IP adres asi vzroste zátěž routeru
- bezpečnost? (čert nikdy nespí)

Případná vylepšení
- přepsat sedlo jako zásuvný modul zebry/quaggy
- do rozhodování o použití igw zahrnout i funkčnost dané igw
  stává se totiž že igw se propaguje ale nelze se skrz ní dostat do inetu
  v současné době stačí že v routovací tabulce
- napsat skript jako spouštěný s init.d

Konfigurace

Uvnitř skriptu sedlo je možno určit adresáře pro umístění konfiguračních souborů. Klasika je /etc/sedlo.conf pro lokální a /var/cache/sedlo pro uložení hlavního konfigu a kompilování aktuálního konfigu. sedlo si při každém spuštění (pokud to nezakážeme volbou -nogetcfg) stáhne hlavní konfig a sloučí ho s lokálním konfigem.
Ve většině případů bude v lokálním konfigu /etc/sedlo.conf jen parametr mcnf pro určení hlavního konfigu.
Hlavní konfig si umístěte na nějaký dobře dostupný router na ftp nebo web server. Ke stažení se používá wget takže ftp a web zvládne. Případně si můžete přepsat funkci s_getcfg podle svých potřeb.
Parametr igw umožňuje specifikovat internetovou gateway její ip adresou a nebo rozsahem kde se nachází a jejím jménem. Pro každou igw bude vytvořena postranní tabulka a ta bude naplněna routama směrujícíma default provoz na ní. Jako default provoz se bere cokoliv mimo síť specifikovanou proměnnou sl_ipnodef ve skriptu sedlo. Defaultně je to nastavené na 10.0.0.0/8 protože to je rozsah používaný v síti CZFree.Net, kvůli kterému jsem sedlo napsal.
Parametr ip umožňuje specifikovat konkrétní IP adresu a nebo celý rozsah IP adres pro který si přejeme směrování default provozu na konkrétní bránu specifikovanou parametrem igw.
Jedinou IP adresu parametru igw a ip zadáváme bez masky /32 ale IP rozsahy adres je třeba vložit i s počtem bitů masky.
Formát konfiguračních souborů:
---sedlo.conf---
# umístění centrálního konfiguračního souboru
mcnf    --bind-address 10.33.6.1 http://sedlo.prosek.czf/sedlo.conf

# seznam iGW v oblasti. Na pořadí záleží. iGW se budou defaultně vybírat
# v tomto pořadí
# formát je : igw	ip_adresa_routeru_iGW	jméno_iGW
igw	10.33.0.11	cerneho
igw	10.32.1.1	djdodo
igw	10.33.0.14	jtop
igw	10.24.0.0/16	jarov
igw	10.55.0.0/16	connection

# seznam iGW na ROUTERU
# formát je : myigw	ip_adresa_iGW	jméno_iGW
# tento parametr je obsloužen JEN pokud je uvedený v LOKÁLNÍM konfigu sedlo.conf
myigw	10.33.6.7	adsl_router
myigw	10.32.6.8	kabelovka_router

# seznam ip rozsahů a určení na jaké iGW má být směrován jejich default provoz
# formát je : ip	ip_rozsah	jméno_ip_rozsahu	preferovaná_iGW_č.1	preferovaná_iGW_č.2	... preferovaná_iGW_č.3
ip	10.33.15.2	jenickuv_desktop	connection
ip	10.33.15.128/26	jenicek_street_ips	jtop	djdodo
ip	10.33.1.2	kozluv_desktop	connection
ip	10.33.1.128/26	kozel_street_ips	djdodo
---sedlo.conf---

Bugs&Features

- pokud sedlo neflushne pravidla tak nereaguje na zmenu dostupnosti iGW
- sedlo umi menit pravidla pro jednotlive ip jen hromadnym flushnutim
- pokud zmizi routa na gw tak sedlo nic neudela a melo by spravne
  smaznout tabulku pro tuto gw a spustit pravidla tak aby se pouzila pripadna
  dalsi gw
- pokud v konfigu neni igw tak ji nepouzit pro ipecka

Historie

dnes		poslední verze	připravuje se přidání mysnat do konfigu, tak
				aby sedlo dovedlo maškarádovat ip adresy jdoucí na myigw
19.5.2005	verze 0.0.3pre9 doplněna obsluha myigw
				sedlo obslouží myigw která má statickou ip adresu a je připojená přímo na router
				za mcnf je možné uvést tři parametry které se postoupí programu wget a lze
				tedy například specifikovat adresu kterou sedlo použije pro svůj dotaz na centrální
				konfig
18.5.2005	verze 0.0.3pre7
14.2.2005	verze 0.0.3pre6 doplněna obsluha equal cost multipath	
2.11.2004	verze 0.0.3pre4	odladěné na více routerech včetně igw
				sedlo přes okolní routery na igw dovede pakety ale přímo na igw
				nenastavuje pravidla - to je ponechané na skriptech obsluhujících
				nastavení igw - je to vhodné při dynamické změně ip adresy interface
				který slouží jako brána do inetu.
29.8.2004	verze 0.0.2 umí naplnit postranní tabulky a vytvořit pravidla - je to funkční
24.8.2004	verze 0.0.1 umí stáhnout konfig a vytvořit postranní tabulky
19.8.2004	založena tato stránka a sedlo je ve stádiu specifikace vlastností
		a není tedy k dispozici ani řádka kódu (nehledejte download).
		Název "sedlo" byl zvolen protože jde o "osedlání" zebry/quaggy
		tak aby se nám jelo pohodlněji.

Licence

OBECNÁ VEŘEJNÁ LICENCE GNU pro Českou republiku
kopie z 19.6.2004 licence.txt

Instalace

stáhnout skript sedlo a umístit do /usr/local/bin
cd /usr/local/bin
wget http://www.simandl.cz/stranky/linux/sedlo/soubory/sedlo
#nastavit práva ke spuštění
chmod a+x sedlo
#vytvořit lokální konfigurační soubor
#musí v něm být alespoň řádek s "mcnf" parametrem aby se vědělo kde je hlavní konfig
echo "mcnf	ftp://10.33.0.2/sedlo/sedlo.conf" > /etc/sedlo.conf
vi /etc/sedlo.conf
#vytvořit odkládací adresář
mkdir /var/cache/sedlo

#spustit skript
sedlo -vv (-vv použijte aby jste viděli výpis toho co sedlo dělá)
# a nebo ho dát do cronu aby se spouštěl automaticky každých 5 minut
*/5 * * * * /usr/local/bin/sedlo

Soubory

sedlo
sedlo.cgi
sedlo.conf
sedlo.conf.local
sedlo.cron
sedlo_install

Příklad

Následující tři výpisy ukazují jak to funguje pro moje ip simlin.jablonka.prosek.czf 10.33.6.12
Jednoduše si v hlavním konfigu změním bránu a je to. K tomu abych si mohl vybrat ze tří cest do internetu stačí aby sedlo jelo na routerech jablonecka, jablonka, r-man, jtop a sntop. Router jablonka sousedí s bránou djdodo www.cznet.cz , router sntop sousedí s bránou cerneho www.supernetwork.cz a router jtop sousedí s jarovem, kde mají default směrovaný na router puma který sousedí opět s bránou www.supernetwork.cz
Pozorný čtenář si jistě všimnul, že v cestě konektivity na jarov je i router maska na který jsem neuvedl v seznamu routerů jedoucích se sedlem. router maska opravdu sedlo nejede a funkční je to pouze proto, že na tomto routeru je defaut routa směrem k r-manovi kde už zase sedlo běží. Pokud by tomu tak nebylo tak bych měl tímto směrem smůlu, protože by mi maska házel pakety zpět.
Velmi pravděpodobně lidé z routeru r-man nebudou moci mít inet z djdodo protože je právě router maska blokuje jedinou default routou.
Řešením je na routeru maska rozjet sedlo také.

Doposud jsme se starali jak dostat naše pakety k bráně. Samozřejmě je také důležité aby daná brána moje pakety propustila. djdodo a supernetwork dávají "určitou" konektivitu zdarma ale pomocí peněz je možné oba subjekty přimět i k lepšímu zacházení s našimi pakety :) To je ale o něčem jiném než o routování.

inet přes jarov

igw     10.24.0.0/16    jarov
ip      10.33.6.12      simlin  jarov
mtr nix2.gin.cz
                                                                     Packets               Pings
Hostname                                                          %Loss  Rcv  Snt  Last Best  Avg  Worst
 1. jablonecka.jablonka.prosek.czf                                   0%   48   48     0    0    0      2
 2. maska.jablonecka.prosek.czf                                      0%   48   48     2    1   10    134
 3. r-man.sntop.prosek.czf                                           7%   44   47     7    4   15     61
 4. ap.jtop.prosek.czf                                              11%   42   47    69   10  173    726
 5. 10.24.1.1                                                        5%   45   47    20   11  138    635
 6. 10.24.1.130                                                     11%   42   47    23   13  131    527
 7. fe-prg-sitel-stim.supernetwork.cz                               15%   40   47    21   13   80    391
 8. fx-prg-sitel-core1.supernetwork.cz                              11%   41   47    91   15   94    535
 9. fe-sitel1-cecom.supernetwork.cz                                 22%   36   47  5325  897 4583   9706
10. nix2.gin.cz                                                     27%   34   47  6289  640 4219   9296

inet přes djdodo

igw     10.32.1.0/26    djdodo
ip      10.33.6.12      simlin  djdodo

                                                                     Packets               Pings
Hostname                                                          %Loss  Rcv  Snt  Last Best  Avg  Worst
 1. jablonecka.jablonka.prosek.czf                                   0%    7    7     0    0    0      0
 2. lan.jablonka.prosek.czf                                          0%    6    6    31    0   24     50
 3. 10.32.15.2                                                       0%    6    6    81    3   28     81
 4. 10.32.1.200                                                      0%    6    6    35    6   30     95
 5. 33.74.142.82.ip.knetint.cz                                       0%    6    6    51   10   31     67
 6. 250.74.142.82.ip.knetint.cz                                      0%    6    6   126   13   43    126
 7. 80.95.120.246                                                    0%    6    6   101   23   60    102
 8. nix2.gin.cz                                                      0%    6    6    45   20   51    102

inet přes cerneho

igw     10.33.0.11      cerneho
ip      10.33.6.12      simlin  cerneho

                                                                     Packets               Pings
Hostname                                                          %Loss  Rcv  Snt  Last Best  Avg  Worst
 1. jablonecka.jablonka.prosek.czf                                   0%   12   12     0    0    0      0
 2. apj.sntop.prosek.czf                                             0%   12   12     6    2    3      6
 3. lan.cerneho.prosek.czf                                           0%   12   12     3    2    4      8
 4. fe-prg-oring2-cernehp.supernetwork.cz                            9%   11   12     8    8   10     12
 5. fe-prg-blah-olsa.supernetwork.cz                                 0%   11   11     9    8   11     16
 6. fx-prg-sitel-core1.supernetwork.cz                               0%   11   11     9    8   12     17
 7. fe-sitel1-cecom.supernetwork.cz                                 28%    8   11  3594  630 2212   4019
 8. nix2.gin.cz                                                      0%   11   11   100  100  993   2635

Hlavní stránka