Autor: compman | 7.6.2006 |
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.
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
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
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
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
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....
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 :)
compman :)