Ú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 |
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říkaztraceroute
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ý programuping
, 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íčkuiputils
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ů.