Virtlab:Tunelovací server
Z VirtlabWiki
Tunelovací server je démon běžící na zvláštním serveru, jež je součástí Distribuované virtuální laboratoře a jeho úkolem je zajistit propojení (bridge) různých VLAN mezi jednotlivými lokálními virtuálními laboratořemi a také různých VLAN v rámci jednoho ethernetového segmentu.
Obsah |
Princip činnosti
Dané ethernetové rozhraní serveru je připojeno trunk linkou k příslušnému přepínači (Cisco 3550) nebo i jinému zařízení, které podporuje standard IEEE 802.1q. Tunelovacímu serveru je nakonfigurována tabulka (tabulka přesměrování), ve které je uvedeno vždy VLAN ID rámce z lokání sítě, nové VLAN ID kam bude rámec poslán a ip adresa vzdáleného (nebo i lokálního) tunelovacího serveru. Tunelovací server přepne rozhraní s trunk linkou do promiskuitního módu, což umožní přijímat veškerý provoz na trunk lince. Následně odchytává VLAN tagované ethernetové rámce a kontroluje, jestli jsou definovány v tabulce přesměrování. Pokud ano, je VLAN ID přečíslováno podle této tabulky a celý rámec je prostřednictvím UDP paketu odeslán na danou ip adresu. Zde jej tunelovací server příjme, vybalí a opět v syrové formě ethernetového rámce a odešle ven trunk linkou. Tímto způsobem dochází k virtuálnímu propojení ethernetu definovaných VLAN a to i vzdáleně (přes Internet), tedy vznikne ethernetový tunel.
Konfigurace
Démon, který má tunelování na starosti je možno konfigurovat prostřednictvím vzdálené řádkové konzole (CLI). Tato konzole standardně běží na portu 40001. Je tedy možno konfiguraci provést například programem telnet:
telnet tunelserver 40001
Příkazy se do konzole zadávají do jednoho řádku a za vlastním příkazem mohou následovat jeho argumenty. Vše je odděleno jednou mezerou. Příkazy, které můžeme použivat jsou uvedeny v následující tabulce:
Příkaz | Argumenty | Popis |
---|---|---|
exit | - | Ukončí konzoli |
help | název příkazu | Vypíše obecnou nápovědu, nebo nápovědu k příkazu |
show | - | Vypíše tabulku přesměrování |
redir | z_VLAN_ID na_VLAN_ID vzdaleny server | Přidá přesměrování do tabulky |
noredir | z_VLAN_ID | Vymaže přesměrování z tabulky |
Poznámky k provozu
Zprovoznění USB-Ethernet převodníku
Rackovatelný server Abacus má dvě síťové karty, které však používají hardwarovou akceleraci a tím znemožňují přístup k číslu VLAN. Tohle číslo je ale pro tunelovací server nezbytné, proto s těmito kartami nedokáže pracovat.
Náhradní možnost je použít USB-Ethernet převodník (testováno s Edimax EU-4202). Ten se dá v linuxu (Debian s jádrem 2.6.8 a upgradovaný ze Sarge na Etch) velice jednoduše zprovoznit. Stačí příkaz modprobe usbnet. Karta se sice ze začátku "schovává" - tzn. ve vypisu ifconfig nebyla k nalezení, ale okamžiťe po připojení UTP kabelem do sítě se zobrazila jako eth2 a byla schopna práce.
Pro automatické zavádění modulu po startu systému je nutné ještě dopsat do souboru /etc/modules řádek usbnet. Dále jsem do souboru /etc/rc.local dopsal prikaz pro "nahozeni" rozhrani eth2 - ifconfig eth2 up
.
Pozor na Spanning-tree
Tunelovací server nedokáže pracovat, pokud "hlavním" switchi (tzn. switch, který je k tun-serveru přímo připojen) není vypnut protokol spanning-tree. Vzorová konfigurace tohoto switche je ulozena v SVN v souboru DISTR/src/spojovac/C3550-permanent.cfg.
Problém s omezením čísel VLAN
Na "hlavním" switchi je dále vhodné vypnout protokol VTP, přesněji řečeno přepnout jej do módu transparent.
SW(config)#vtp mode transparent
V opačném případě nebyly switche schopny pracovat s VLANy s číslem větším než 1001. Buď switch vypsal při nastavování tohoto čísla chybovou hlášku (non-ethernet vlan) nebo jen port zablokoval a LEDka svítila oranžovou barvou. V každém případě port nebyl schopen práce. (Asi daná verze VTP nepodporuje takováto čísla?)
V "ukázkové konfiguraci" v souboru DISTR/src/spojovac/C3550-permanent.cfg je vše dobře.