Cvičení v 11. týdnu

Administrace základní IP konektivity, interface, routing


Úvod do cvičení

Cílem tohoto cvičení bude seznámit se s elementárními principy "ruční" administrace základní síťové konektivity v UNIXu, tedy nastavení síťového rozhraní a směrovcích tabulek. Ačkoliv UNIX dokáže pomocí síťových protokolů RARP/BOOTP/DHCP a RIP/OSPF/EGP/BGP provést toto nastavení automaticky, často si administrátoři nastavují síť ručně z důvodů mnohem větší bezpečnosti, robustnosti a variability.

Základní principy TCP/IP sítě (zopakování faktů)

Každé přípojné místo v počítači se nazývá interface. Každý interface má svou IP adresu. Příchozí paket s cílovou adresou shodnou s adresou kteréhokoli interfacu je lokální a je předán příslušnému procesu. Příchozí paket s jinou IP adresou je předán síťové vrstvě, která podle směrovací tabulky (routing table) zajistí jeho předání na jiný interface a tím do další sítě. Výstupní paket je adresován buď přímo příjemci (pokud je příjemce připojen přímo) nebo je adresován nejbližšímu prostředníkovi, kterému se v tomto kontextu říká brána (gateway).

Užíváme-li jako propojovací médium lokální síť Ethernet, každý IP packet se vloží jako datový blok do Ethernet rámce a opatří se Ethernet adresou odesilatele a adresáta. 6-ti bytová Ethernet adresa je pevně nastavena pro každý interface a nesouvisí s IP adresou. Ethernet adresa adresáta se získá z jeho IP adresy pomocí protokolu ARP.

V rámci jednoho segmentu sítě Ethernet je možné použít jen IP adresy ze stejné IP sítě - tedy se stejnou síťovou částí IP adresy. Síťová část je daná třídou IP adresy, nebo častěji maskou sítě (subnet). Pakety pro uzly s jinou síťovou částí IP adresy se předávají přes lokálního prostředníka - bránu (gateway).

Cvičení: Předpokládejme, že chceme směrovat paket na adresu 192.168.3.15, přičemž odesílatel je počítač s jedinou síťovou přípojkou s jedinou IP adresou 192.168.1.12. Maska podsítě pro tuto přípojku má hodnotu 255.255.255.0. Určete: o jakou třídu adres se jedná, jaká je adresa sítě a uzlu odesílatele a příjemce a jaký postup zvolí odesílatel při doručování tohoto paketu. Pokud si nejste jisti, konzultujte svůj názor se cvičím.

Základní konfigurační příkazy

Příkaz ifconfig slouží k nastavení základních parametrů daného koncového síťového zařízení (síťové karty) - interface, která se v systému identifikují svým jednoznačným jménem (například eth0). Pomocí tohoto příkazu je možné zejména přidělovat danému zařízení jeho IP adresu a masku podsítě.

Příklad použití:
Nastavení IP adresy a masky # ifconfig eth0 147.32.81.27
zjištění stavu # ifconfig -a
Zastavení IP provozu # ifconfig eth0 down
Aktivace IP provozu # ifconfig eth0 up

Současné verze Linuxu umožňují přidělit jednomu fyzickému zařízení (síťové kartě) několik různých interfaců a tím i IP adres. Jedná se o techniku IP-aliasing. Síťová karta se pak chová jako dvě nebo více na sobě nezávislých karet připojených ke stejnému médiu (kabelu). Jednotlivé virtuální síťové karty se označují eth0, eth0:1, eth0:2, etg0:3, .... Následující příklady ukazují po řadě: konfiguraci adresy lokální smyčky, základní adresy síťového zařízení eth0 a IP-aliasu.
# ifconfig lo 127.0.0.1
# ifconfig eth0 192.168.1.5
# ifconfig eth0:0 192.168.1.105

Cvičení: Zjistěte aktuální konfiguraci síťových zařízení. Používá váš počítač v tomto okamžiku IP-aliasing?

Příkaz route se používá k nastavení směrovacích tabulek. Tyto tabulky popisují způsob odesílání paketů jdoucích určitým směrem. Směr přitom může být popsán adresou sítě (bity odpovídající adrese uzlu jsou nulové), nebo úplnou adresou konkrétního počítače. Užití tohoto příkazu bez parametrů vypíše aktuální nastavení směrovacích tabulek. Následující příkazy ukazují způsob konfigurace směrovacích tabulek pro dříve uvedené nastavení síťových zařízení.
# route add default gw 172.16.3.200
Slovo default říká, jak se má zacházet s pakety, které směřují na adresu, jenž není pokryta žádným z předchozích záznamů ve směrovací tabulce. Nejčastěji se tento směr odkazuje na hlavní bránu vedoucí k páteřní síti.

Cvičení: Zjistěte aktuální konfiguraci směrovacích tabulek.

Je důležité upozornit, že přikaz route při zobrazování nastavení směrovacích tabulek provádí zpětný překlad IP adres na DNS doménová jména. Pokud zrovna není dostupný DNS server, pak příkaz route čeká a zdá se, že je problém ve směrovacích tabulkách. Proto si zvykněte spouštět příkaz route (i další příkazy pro analýzu sítě) s parametrem -n, který vypíná zpětný DNS překlad.

Při správné kompilaci (což je v K310 zaručeno) jsou sice všechny Linuxy schopné fungovat jako směrovače (tj. předávat pakety od ostatních stanic dále do sítě), avšak tato schopnost se musí explicitně povolit zapsáním hodnoty 1 (0 analogicky směrování vypíná) do souboru /proc/sys/net/ipv4/ip_forward. K tomuto účelu můžeme použít například příkaz:
# echo 1 > /proc/sys/net/ipv4/ip_forward

Příkazy ping a traceroute slouží k ověření konektivity a k mapování cesty, kterou jdou pakety ke zvolenému uzlu v internetu. Jako takové slouží zejména k diagnostickým účelům. K ověření ztráty spojení používejte tyto příkazy vždy s parametrem -n. Jedině s ním je přikaz nezávislý na DNS a testuje skutečné spojení a nezůstane "viset" při ztrátě spojení s nameserverem.

Cvičení: Zjistěte, jak se používá traceroute a ping a ověřte jejich chování na vybraném praktickém příkladu.

Experiment I: Základní konfigurace sítě
Nyní provedeme dekonfiguraci sítě. Pak opět síť nastavíme, tentokrát ručně příkazy z příkazové řádky. Během doby, kdy je síť nedostupná, nelze počítač ovládat prostřednictvím SSH spojení. Používejte systémovou konzoli.

Pracujte na virtuálním počítači FC4. Síť dekonfigurujete příkazem
ifconfig eth0 0.0.0.0 down

Zkontrolujte nedostupnost sítě příkazy ping a traceroute.

Nyní přiřaďte vašemu stroji IP adresu 10.0.6.1 s maskou třídy C. Opět ověřte dostupnost počítačů v Internetu. Jsou dostupné? Můžete se nyní z vašeho hostitelského počítače přihlásit do virtuálního stroje FC4 pomocí SSH? Proč?

Proveďte nyní vložení směrovacího default pravidla, které směruje provoz na bránu 10.0.6.1 a opět ověřte konektivitu.

Experiment II: Směrování dalších sítí
Každý virtuální stroj FC4 má kromě základní síťové karty eth0 připravenou ještě další eth1, ketrá je prostřednictvím routerů - hostitelských počítačů - propojena s dalšími eth1 v ostatních virtuálních strojích FC4. Předpokládá se, že virtuální počítač FC4 bude používat na eth1 nějakou IP adresu z rozsahu sítě 10.6.X.0 a "C" maskou 255.255.255.0. Číslo X je pořadové číslo počítače v učebně a je totožné s posledním bytem reálné IP adresy hostitelského počítače, na kterém FC4 běží.

Zjistěte číslo vašeho počítače příkazem
/sbin/ifconfig eth0 Příkaz spusťte v uživatelském shellu hostitelského PC. Ačkoli nemáte práva měnit IP adresu, zjištění aktuální je možné, pouze musíte zadat celou cestu k příkazu, protože adresář /sbin není v cestě PATH.

Nyní v počítači FC4 nakonfigurujte kartu eth1 na adresu 10.6.X.1 s "C" maskou. Po přiřazení IP adresy funguje ping na adresu 10.6.X.128. Ostatní síťě 10.6.X'.0 můžete zpřístupnit nastavením pravidel (X je číslo lokálního PC):

# route add -net 10.6.101.0/24 gw 10.6.X.128
# route add -net 10.6.102.0/24 gw 10.6.X.128
# route add -net 10.6.103.0/24 gw 10.6.X.128
# route add -net 10.6.104.0/24 gw 10.6.X.128
# route add -net 10.6.105.0/24 gw 10.6.X.128
...

Vzhledem k tomu, že IP rozsahy sítí 10.6.X.0 jsou hned sousední intervaly 
adres, můžeme je agregovat do jediného pravidla:
# route add -net 10.6.0.0/16 gw 10.6.X.128
Pozorný student si všimne, že nastala kolize/překryv směrovacích pravidel ve směrovací tabulce: adresy lokální sítě eth1 10.6.X.0/24, které se směrují přímo na síťovou kartu eth1, jsou uvnitř intervalu adres 10.6.0.0/16, který se směruje právě přidaným pravidlem na bránu 10.6.X.128. Které pravidlo se tedy nakonec použije při rozhodování o doručení paketu např. k cíli 10.6.X.123? Použije se vždy to "konkrétnější" pravidlo. tj. pravidlo s maskou s více jedničkami poposující menší síť. Takže naše nastavení bude fungovat.

Dokončete konfiguraci eth1 a směrování i na ostatních počítačích a ověrte pomocí traceroute spojení na adresy 10.6.X.1. Příkaz traceroute zobrazí i dva routery zprostředkovávající spojení. Proč se liší IP adresy routerů, když pustíme na dvou FC4 počítačích traceroute proti sobě?

Testování konektivity
Pro ověření kvality připojení síťě se často používají následující příkazy:

  • ping
    Odesílá ICMP ECHO pakety na cílovou IP adresu. Není závislý na TCP/UDP vrstě, na cílovém počítači nemusí běžet žádný démon/server. Ověří jak funkci interface tak i směrovací tabulky. Další výhodou je statistika ztracených/doručených paketů, která může odhalit problematické místo v síti. Dostupný ve všech operačních systémech.
  • arping
    Program funkcí velmi podobný programu ping, ale k testování používá protokol ARP. Hlavní výhodou je nezávislost na IP a zejména ICMP. Např. pokud firewall na cílovým počítači blokuje ICMP, pak sice nelze použít obyčejný ping, ale arping funguje spolehlivě a není ho možné blokovat firewallem (jinak by cílový počítač nemohl komunikovat vůbec). Také je možné využít arping k detekci duplicitních IP adres na lokální síti. Nevýhodou je omezení ARP na lokální síť - neprojde skrz router. Arping není běžnou součástí OS, je obsažen v balíčku iputils pro Linux.
  • arp
    Umí vypsat přiřazení IP k MAC adrese z ARP cache. Do jisté míry může pomoci, pokud nemáme k dispozici arping. Pokud existuje pro danou IP adresu položka v ARP cache, komunikace mezi počítači alespoň 1x proběhla.
  • tcpdump
    Umí zachytit všechny pakety slyšitelné na síti síťovou kartou. Přepne kartu do promiskuitního režimu, takže čte i pakety určené pro jiné počítače (např. pokud používáme HUBy). Pakety umí filtrovat, vypisovat, ukládat do souboru.
  • ethereal
    Grafický nástroj podobný tcpdump. nastřádané pakety umí analyzovat a hiearchicky zobrazit vložené hlavičky protokolů různých vrstev. Ideální pro analýzu obsahu. Formát souboru s uloženým obsahem paketů je kompatabilní s tcpdump.
  • ifconfig
    Krom nastavení intefrace umí zobrazovat statistiky odeslaných/přijatých paketů a kolize.
  • traceroute
    Program používá UDP protokol, posílá pakety na neotevřené vyšší UDP porty. Paketům postupně zvyšuje time-to-live hodnotu a spoléhá, že routery odešlou ICMP-time-limit-exceeded servisní paket, kdykoli paketu vyprší životnost. Tím je schopen zjistit cestu k cíli.
  • netstat
    Poskytuje mnoho statistik, mimo jiné seznam otevřených TCP a UDP spojení do/z lokálního počítače a otevřených pasivních soketů.