Zpět na seznam článků     Číst komentáře (6)     Verze pro tisk

Připojujeme se na více ISP zároveň

Autor: compman   
7.6.2006

Jednoduchý způsob konfigurace "cest" (routes) tak, abychom byli v Internetu vícekrát ..


Internet je již v dnešní době rozšířen mezi širokou veřejností. Připojení do této sítě je však různé. Někdo bydlí přímo na páteřní síti, jiný jede přes vytáčené spojení. Možná jste pochopili, co se tím snažím říci. Ano, rychlost různých typů připojení se liší jak hardwarovým omezením, tak omezením ze strany ISP (poskytovatele služby internetu) - dle zvoleného tarifu.
Ale člověk je tvor, který nemá nikdy dost, a tak chce pořád rychlejší připojení do Internetu. Jistě, máte možnost si zřídit rychlou linku od vašeho oblíbeného ISP.. jenomže pokud vlastníte velmi známý server, a ani nejrychlepší ISP v České Republice vám stačit nebude, pak je zde možnost několik takovýchto "poskytovatelů Internetu" prostě "spojit" a vesele sčítat rychlost odchozích/příchozích požadavků.
Tato vymoženost není vyhrazena jen pro velké firmy, nýbrž i pro malé chytré hlavy ...současné připojení na 2 wifi sítě jede rychleji, než připojení na jednu síť. :)

Routing Table
Routing table, neboli směrovací tabulka, umožňuje směrovat packety na jiná místa v síti (nebo do jiných sítí) dle jejich IP adresy, přičemž směrování packetů z jedné sítě do druhé se využívá hlavně na routerech. Z pohledu normálního uživatele je to místo, kam se třeba přiřazuje gateway (výchozí brána) k dané síťové kartě.
Pro nás bude důležitá pouze jedna vlastnost - routovací tabule umožňuje posílat data "někomu" po síti, přičemž si uchová na určitou dobu jeho MAC adresu (v cache), zjištěnou pomocí ARP packetů. Jeden z "man-in-the-middle" utoků spočívá ve falešné odpovědi dotazateli, který poslal do sítě ARP packet "Kdo je na IP adrese 192.168.1.1 ?" (předpokládejme 192.168.1.1 jako gateway). My mu odpovíme "192.168.1.1 je na 00:B0:11:E4:2A:31" (00:B0:11:E4:2A:31 je naše MAC adresa), přitom gateway má úplně jinou MAC adresu. Klient si na jistou dobu přiřadí v routovací tabulce k IP adrese 192.168.1.1 právě 00:B0:11:E4:2A:31, a tak si bude myslet, že my jsme výchozí brána a bude nám posílat vše, co by jinak šlo do internetu. Možná se ptáte, proč se k IP adrese musí nejdříve zjistit i MAC adresa.. je to kvůli principu síťové komunikace na "vrstvě síťového rozhraní", která zastává v TCP/IP protokolu funkci fyzické a linkové vrstvy (referenční model ISO/OSI). Počítač data nemůže poslat na IP adresu, která je omezena na protokol TCP/IP, ale musí si tedy zjistit i fyzickou adresu, na kterou data pošle. A právě tato informace je uložena v routovací tabulce.
Routing table má však mnohem více funkcí. Pokud chcete vědět více, zhlédněte Odkazy dole.

Dnes se tedy dozvíte jeden ze způsobů připojení na vícero ISP zároveň za pomoci routovací tabulky a několika IP pravidel (rules), a to tím jednodušším způsobem (ne, opravdu nebudeme markovat packety pro postrouting :) ).

Jaké budeme potřebovat ingredience
Celou proceduru provedeme za asistence skvělého a velice univerzálního nástroje iproute2 (dokumentace - viz. Odkazy). Za jeho pomoci je možné provádět vše možné i nemožné v rámci TCP/IP protokolu - od konfigurace síťových karet, přes nastavování routovací tabulky až po IP tunelling. Tomu také odpovídá podpora v OS. Iproute (i Iproute2) byl konstruován pro unix-like systémy, takže by na OS Windows asi nejel (ale kdo ví..).
Z HW "ingrediencí" to budou alespoň dvě správně nakonfigurované síťové karty (třeba ethernet a wifi), tj. "asociované" do dané sítě, avšak routovací tabulka by měla být prázdná.

Stavíme půdu
Nejdříve by možná bylo vhodné nakonfigurovat tabulku tak, aby posílala všechna naše data na obě "síťovky" zároveň.. sice tím rychlost neovlivníme (či dokonce trošku snížíme), avšak i toto nastavení se může hodit pro wifi sítě se slabým signálem (pokud pošleme packet do dvou sítí, je větší pravděpodobnost, že onen packet dojde zpět k nám). Zároveň je tato konfigurace také "odrazovým můstkem" pro synchronizaci více ISP. V následujícím případě předpokládáme pripojení na dva providery, je však možné připojení i na 5, 6, .. neomezeně ISP zároveň (pokud to náš HW umožňuje - přeci jen .. 50 síťových karet.. :) ).

Tak nejdříve příkladové parametry..

naše síťovka eth0 (napřiklad ethernet) má IP 192.168.1.25, gateway poskytovatele je 192.168.1.1
naše druhá síťovka ath0 (třeba wifi) má IP 10.1.1.50, gateway poskytovatele je 10.1.1.1

Je třeba si také uvědomit, že síť, v níž jsme (třeba 192.168.1.xxx) se v route i v iproute označuje jako 192.168.1.0 (broadcast).
Teď k samotné konfiguraci..

ip route add 192.168.1.0 dev eth0 src 192.168.1.25 table T1 //přidáme síť 192.168.1.xxx na zařízení eth0, které bude mít zdrojovou IP 192.168.1.25 do tabulky, kterou nazveme třeba T1
ip route add default via 192.168.1.1 table T1 //tabulce T1 přiřadíme gateway 192.168.1.1

ip route add 10.1.1.0 dev ath0 src 10.1.1.50 table T2 //vytvoříme síť 10.1.1.xxx na zařízení ath0, které bude mít zdrojovou IP 10.1.1.50 do tabulky, kterou nazveme T2
ip route add default via 10.1.1.1 table T2 //tabulce T2 přiřadíme gateway 10.1.1.1

Tím jsme vytvořili tabulky T1 a T2, které ale zatím nejsou použity, "hlavní část" routing table je zatím prázdná, ne nadlouho..

ip route add 192.168.1.0 dev eth0 src 192.168.1.25 //vytvoříme síť 192.168.1.xxx na zařízení eth0, které bude mít zdrojovou IP 192.168.1.25
ip route add 10.1.1.0 dev ath0 src 10.1.1.50 //vytvoříme síť 10.1.1.xxx na zařízení ath0, které bude mít zdrojovou IP 10.1.1.50

Dobrým nápadem je (pro každý případ) vytvořit spoj na default gateway, které "důvěřujete" více - v mém případě má menší ztrátu packetů kabel :)

ip route add default via 192.168.1.1

Tak "hlavní" (main) tabulku bychom měli kompletní. Teď jen nastavit pravidla tak, aby packety putovaly přes naše tabulky..

ip rule add from 192.168.1.25 table T1
ip rule add from 10.1.1.50 table T2

Tato pravidla nám také zajistí, aby příchozí packety z daných tabulek byly označeny jako příchozí z dané "síťovky"...
Teď už nám jen zbývá rozdělit komunikaci tak, aby šla "na střídačku", čili synchronizovat provoz mezi všechny síťové karty...

Ve jménu synchronizace, jdi tudy!
Nastavení rozdělení "provozu" (traffic) je jednoduchou záležitostí. Dokonce si při tom můžete vybírat, které síťové kartě dáte "přednost"..

ip route add default scope global nexthop via 192.168.1.1 dev eth0 weight 1 \
nexthop via 10.1.1.1 dev ath0 weight 1
.........atd....

Toť vše :) .. zvýšením parametru weight můžete "nadřadit" jednoho ISP nad druhým (netestováno)..
Mně osobně to jelo dobře, avšak je potřeba mít na paměti, že routovací tabulka je založena na cache. Tudíž třeba na často navštěvované stránky bude připojení probíhat přes ISP, se kterým jsem na nich byl poprvé.
Pokud vám nevadí patchování kernelu, můžete zkusit tyto patche.

Ale já mám windows...
Taky jsem se snažil řešit, ale nic jsem na Googlu nenašel za tu půl hodinu.. možná to nějak půjde přes netsh a route .. nebo možná přes externí aplikaci.. kdo ví :).


Odkazy
- nevěříte, že je iproute velice univerzální? :) Tohle vás přesvedčí o opaku.
- Oficiální wiki stránka projektu Iproute2
- Routing Table
- obecně - Wikipedie :)
- Google!!
- jeden z mirrorů na Download
- Používejte SSL :)
- zbytek už si snad najdete na Googlu :)


Doufám, že jsem neuvedl příliš mnoho mystifikací a že se alespoň někdo přiučil :)

compman :)


Líbil se Vám článek?
Budeme potěšeni, pokud vás zaujme také reklamní nabídka

Social Bookmarking

     





Hodnocení/Hlasovalo: 0/0

1  2  3  4  5    
(známkování jako ve škole)