přejít na obsah přejít na navigaci

Linux E X P R E S, Síťové nástroje v Linuxu, 1. část

Síťové nástroje v Linuxu, 1. část

Počítačové sítě jsou dnes každodenní a neodmyslitelnou součástí našeho života. Přenášejí soubory, e-maily, webové stránky, ale i telefonní hovory nebo televizní vysílání. Je tomu již několik desetiletí, kdy byly první počítače pokusně propojeny. Rozšíření, jakého se této technologii podařilo za posledních deset let dosáhnout v podobě Internetu, však nemá obdoby.


V tomto seriálu se zaměříme na zprovozňování, nastavování, používání a monitorování sítí v prostředí GNU/Linux. Budu se (alespoň zpočátku) zaměřovat na běžného uživatele, který se prostě chce připojit k Internetu, případně si jen postavit malou síť. Přesto si budeme muset vysvětlit některé základní pojmy jako ethernet, IP adresa, brána, DNS, paket, síťová maska, DHCP, port apod. Dnes si konkrétně ukážeme:

  • že sítí se nemusíte bát - každý jednou začíná;
  • co jsou a jak fungují ethernet a TCP/IP;
  • jak se přepočítávají bity a byty pro potřeby síťování;
  • zda vaše jádro síťování vůbec umožňuje;
  • jak nastavit IP adresu, masku sítě a všesměrovou adresu;
  • jak nastavit směrování a výchozí bránu.

Nebojte se sítí

I ti, kdož zatím nejsou obšťastněni pevným připojením k Internetu, si často staví malé sítě. Ethernet dnes není v domácnosti ničím nenormálním. Ostatně některé periferie (např. tiskárny) přímo s připojením po ethernetu počítají. Samostatnou kapitolou jsou pak nadšenci osazující střechy různými anténami a mikrovlnnými pojítky ve snaze budovat komunitní sítě.

Sám jsem na počítačích začínal v roce 1987. Ve škole jsem se k TCP/IP síti dostal jako uživatel někdy kolem roku 1993. Postupně jsem uživatelskou znalost rozšiřoval z FTP a HTTP na poštu a telnet (později ssh). Někdy kolem roku 1999 mi kamarádi pomohli propojit dva z mých počítačů kříženým sériovým kabelem. Ještě na přelomu tisíciletí jsem neznal rozdíl mezi koaxiálním kabelem a kroucenou dvojlinkou.

Potom to ale šlo už poměrně rychle: v roce 2001 jsem se začal z domu pravidelně modemem připojovat na Internet, 2002 jsem si doma postavil malý ethernet, 2003 jsem se stal správcem sítě po odcházejícím kolegovi v práci a letos jsem již připojen do CZFree.net, kde pomáhám instalovat a spravovat síťové uzly.

Plně tedy chápu rozpačitost až averzi nejen uživatelů, ale někdy i správců operačního systému, ve vztahu ke stavbě, konfiguraci a správě sítě. Vynasnažím se tyto obavy prolomit a dříve, než-li vás odkáži na výborně zpracovanou literaturu, se pokusím o sítích povědět něco málo sám.

Polopatistické základy ethernetu

Varování - tato část je věnována úplným nováčkům, a proto bude psána méně exaktní formou a bude obsahovat značná zjednodušení. Např. při popisu fyzického propojení budeme uvažovat jen koaxiální a dvojlinkový ethernet. A tím bude vlastně asi nejlepší začít.

Takže mějme dva počítače, které chceme propojit. To je příliš jednoduché. Prostě bychom chytli dva dráty a vedli je z výstupu sériového portu jednoho počítače na vstup druhého a obráceně. Této technologii se říká křížený kabel. Co ale dělat v případě, kdy jsou počítače tři, čtyři, deset, dvacet či sto? Zde bylo nutno vymyslet prostředek, který by zamezil nutnosti fyzického propojení každého počítače s každým pomocí kříženého kabelu.

Schéma páteřní sítě provedené koaxiálním kabelem

Schéma hvězdicovité sítě provedené kroucenou dvojlinkou

Výsledkem byl ethernet - páteřní síť. Každý počítač musel být osazen síťovou kartou (ISA, VME, PCI apod.), která disponovala konektorem pro připojení příslušného kabelu. V současnosti jsou síťové konektory často přímo na základní desce. Ke stavbě sítí používají většinou jen dva základní druhy kabelů (a tedy i konektorů na kartách).

Prvním druhem je ethernet koaxiální, kde šlo jednoduše o jeden stíněný drát, který postupně propojoval všechny počítače. Z karty vyčníval kulatý konektor, do kterého bylo nutné vsunout rozdvojku (často ve tvaru T), a do ní pak kabel od sousedního počítače a kabel k počítači dalšímu.

Postupně tak vznikla jedna páteř, na kterou byly zavěšeny všechny připojené počítače (viz obrázek 1). Páteř se nesměla fyzicky větvit. Když bylo nutné někam udělat odbočku, kabel se zase musel vrátit zpět a pokračovat. Konce páteře byly opatřeny terminátory. Nevýhodou bylo, že když došlo kdekoli k poškození či rozpojení kabelu, přestala fungovat celá síť.

Novější formou sítě je kroucená dvojlinka (Twisted Pair = TP), která má poněkud jinou filosofii. Každý počítač se samostatným kabelem připojuje k centrální krabičce (hub, switch). Ta musí mít alespoň tolik konektorů, kolik počítačů se do ní má připojit (viz obrázek 2). Kabely jsou zpravidla tenčí než koaxiál a konektory připomínají telefonní kabeláž. Nevýhodou je nutnost pořízení oné centrální krabičky.

Polopatistické základy TCP/IP sítí

Také tuto část z didaktických důvodů zjednoduším. Budu kupř. uvažovat existenci pouze IP verze 4. Takže co vlastně to magické TCP/IP znamená? Jde o technologii, která využívá dvou protokolů - Transmition Control Protocol (TCP) a Internet Protocol (IP). Protokol je zde chápán jako přesně stanovená pravidla komunikace mezi dvěma zařízeními.

Spojení TCP a IP představuje skutečně silný nástroj, který s vysokou mírou spolehlivosti přepraví data i po velmi rozsáhlé síti k jejich cíli. IP funguje jako pomyslná obálka, na které je uveden adresát přenášených dat. TCP dokáže na začátku rozložit větší objem dat do jednotlivých obálek a na konci pomůže z obsahu došlých obálek sestavit zase původní informace.

Rozdělování souboru při přenosu je nutné provádět, protože velikost "obálky" je omezená. Její technické označení je paket (nebo též datagram), takže mluvíme o velikosti paketu, která se udává většinou v bytech. Zpravidla jde řádově o stovky bytů až jednotky kilobytů. Každý paket má hlavičku a samozřejmě tělo obsahující vlastní přenášená data.

Počítače v síti mají za účelem komunikace prostřednictvím IP protokolu přidělenu IP adresu. Žádné dva počítače v jedné síti nesmí mít stejnou adresu. IP adresa se zapisuje ve formě čtyř desítkových čísel oddělených tečkou. Každé číslo může být v rozsahu 0 až 255. Proč právě tento rozsah?

Obrázek 3. Výpis programu ifconfig

Obrázek 4. Výpis programu route

Jedničky a nuly létají kabelem

Kabelem procházejí elektrické impulzy určitého (nízkého) napětí. Pokud se vysílá, znamená to jedničku. Pokud ne, je to nula. Po síti tedy proudí data v podobě třeba 1001101001110100111101000. Tyto impulzy představují nejmenší jednotku informace - bit.

V počítačovém světě se bity většinou shlukují do skupin po osmi. Těmto skupinám se říká byty. Na osm vedle sebe stojících bitů můžeme pohlížet jako na číslo zapsané ve dvojkové soustavě, např. 00110100. Řády jsou zde uvedeny ve stejném pořadí, jako jsme zvyklí z desítkového zápisu.

Nejmenší číslo je nula, zapsané jako 0. Jedna je 1. Protože už ale ve dvojkové (binární) soustavě více číslic není, musí se dvojka zapsat jako číslo o řád vyšší, tedy 10. Trojka je dva a jedna, tedy 11. Čtyřka je další řád, tj. 100, pětka 101, šestka 110, sedmička 111. 1000 znamená osmičku, 1001 je devět atd.

Vidíme, že jednička úplně vpravo představuje hodnotu 1, jednička vedle ní znamená 2, další místo je 4, čtvrté je 8. Je to logické. Každý řád binárního čísla představuje o jednotku vyšší mocninu dvou. Stejně jako každý řád v desítkovém čísle reprezentuje vyšší mocninu čísla deset.

Jednotlivé bity v bytu tedy představují (postupně zleva) hodnoty 128, 64, 32, 16, 8, 4, 2, 1. Desítkovou hodnotu našeho výše zmíněného příkladu (00110100) bychom spočítali následovně: 0*128 + 0*64 + 1*32 + 1*16 + 0*8 + 1*4 + 0*2 + 0*1 = 52. Pokud vezmeme nejvyšší možnou hodnotu bytu (11111111), je to ekvivalent čísla 255 (spolu s nulou tak může byte nabývat 256 různých hodnot).

Tím už se dostáváme k pochopení, proč je IP adresa reprezentována čtyřmi čísly v rozsahu 0 až 255. Jsou to tedy čtyři byty neboli čtyři osmice bitů. IP adresa, kterou jsme zvyklí vídat v různých souvislostech, tak není ničím jiným než prostě 32 po sobě jdoucími bity (impulzy v síťovém kabelu).

Byl to sice velmi rychlý a povrchní úvod do krás dvojkové soustavy, ale doufám, že už alespoň budete rozumět pořekadlu "Existuje 10 druhů lidí - ti, kteří znají binární kód, a ti, kteří ne."

Maska a adresa sítě

32 bitů je poměrně značný adresní rozsah. Vezmeme-li trojmístné desítkové číslo, získáme počet jeho možných obměn jako třetí mocninu 10 (tj. 1000 hodnot, neboli 000 až 999). Obdobně to platí pro dvojkovou soustavu, kde se počítá třetí mocnina 2 (tj. 8, neboli 000 až 111).

Počet hodnot dvaatřicetibitového čísla (celkové množství potenciálních IP adres) lze tedy spočítat jako 32. mocninu čísla 2. Je to 4294967296. Lze jistě diskutovat o tom, zda jsou 4 miliardy adres pro Internet dost, když lidí je už přes 6 miliard. Někteří si myslí, že to dost není, a proto se připravuje nová verze protokolu IP (verze 6).

My si pro začátek vystačíme s myslím realistickým předpokladem, že 4 miliardy jsou pro domácí či malou podnikovou síť zbytečně moc. Na propojení těch pár počítačů nám bude s nějakou tou rezervou stačit řekněme 250 adres.

Asi by nebylo moc přehledné jednomu počítači přidělit adresu 10.15.55.244, druhému 192.168.18.158, třetímu 172.20.30.40 a čtvrtému třeba 10.189.221.8. Vhodnější je např. očíslování 10.0.0.1, 10.0.0.2, 10.0.0.3, 10.0.0.4 atd. Má to vedle přehlednosti i další výhody, které si ukážeme.

Vidíme, že se nám v naší síti mění jen poslední byte adresy. U sousedů se třeba pro změnu rozhodli, že budou přidělovat adresy 10.0.1.1 až 10.0.1.250. Také tedy mění jen poslední byte. Pomyslně tak můžeme tyto IP rozdělit na adresu sítě (první 3 byty = 24 bitů) a adresu počítače (poslední byte = 8 bitů).

Maska sítě není nic jiného než počet bitů použitých pro označení síťové části IP adresy. V našem případě je to 24bitová maska. Zapisuje se postaru ve stejné desítkové formě jako IP adresa, zde tedy 255.255.255.0. Nově se začíná prosazovat ve formě parametru IP adresy, např. 10.0.1.8/24.

V každé síti je třeba vyčlenit dvě zvláštní adresy, které nemohou být přiděleny žádnému zařízení. Jde o adresu sítě pro potřeby směrování paketů z jiných sítí a o všesměrovou adresu pro komunikaci se všemi počítači sítě současně. Adresa sítě bývá nejnižší číslo síťového rozsahu (10.0.0.0, 10.0.1.0 apod.), všesměrová adresa naopak nejvyšší (10.0.0.255, 10.0.1.255).

Zprovoznění sítě

Dosti pro tentokrát teorie. Podívejme se, co přesně potřebujeme v našem (linuxovém) systému, abychom se k síti mohli připojit.

Jádro a ovladače?

Konkrétní způsob připojení k síti záleží na kompromisu mezi tím, co je u vás konkrétně dostupné a tím, co si můžete reálně dovolit. Ať již se připojujete k síti typu ethernet, k optické páteřní síti, WiFi (mikrovlnám), přes satelit, modem nebo jen po sériovém portu, budete potřebovat síťový software.

V Linuxu (a obdobných systémech) se o mnoho věcí v oblasti sítí stará přímo jádro operačního systému. Protože linuxové jádro je dosti stavebnicový systém, je třeba dbát, aby v tom konkrétním, které používáte, byly všechny potřebné funkce zabudovány.

Jádra všech hlavních distribucí jsou samozřejmě k síťování obecně přizpůsobena. Problém však může nastat tehdy, kdy používáte nestandardní nebo zcela nový hardware, pro který (dosud) nejsou v dané verzi jádra ovladače. Dále může vzniknout problém, když používáte vlastní sestavené (zkompilované) jádro a některou z voleb jste opomněli zapnout.

Moduly jádra jsou soustředěny v adresáři /lib/modules/[verze_jadra]. Obecné síťové moduly (podpora IP apod.) najdeme v podadresáři kernel/net/ (např. ipv4). Ovladače jednotlivých síťových karet jsou pak umístěny v podadresáři kernel/drivers/net/ (např. ne2k-pci pro PCI karty NE2000).

Pokud toto všechno máme, musí být náš síťový hardware detekován systémem. To se děje nejčastěji během instalace nebo automaticky při každém startu (např. program Kudzu). Výsledkem je většinou přidání jednoho nebo více řádků do souboru /etc/modules.conf, který obsahuje informace o tom, jaké moduly jádra se mají používat pro který hardware.

Pokročilejší uživatelé si mohou tento textový soubor upravovat přímo. Další možností je ruční načtení příslušného modulu jádra příkazem modprobe. Na obrazovku anebo do systémového logu by se měly vypsat informace o úspěšnosti či neúspěšnosti načtení ovladače.

Důležitou informací je, jaké jméno zařízení (device) bylo naší síťové kartě přiděleno. Závisí to především na použitém ovladači. Většinou se první síťové rozhraní označuje eth0, druhé eth1 atd. Některé ovladače však používají označení jiná (např. pro WiFi používá ovladač hostap jména wlan0, wlan1, ...)

Apeluji na ty, kdož chtějí po přečtení posledních odstavců se síťováním nebo celým Linuxem praštit. Do těch logů a konfiguráků se drtivá většina z vás nemusí ani podívat! Moderní distribuce všechno najdou a nastaví za vás. Píšu to sem proto, že mě to baví, ale hlavně proto, že vám chci ukázat, jak to funguje pod povrchem, abyste rozuměli daným termínům apod.

Nástroje pro nastavení?

Teď, když už máme síťovou kartu aktivní, potřebujeme ji nastavit. To spočívá v přidělení IP adresy, masky sítě a všesměrové adresy. Tyto hodnoty po vás bude chtít prakticky každý počítač a operační systém. Je úplně jedno, jaký program k nastavení sítě použijete. Jsou k dispozici mnohé grafické nástroje (redhat-config, drakconf, yast, ...), klasické i moderní textové programy (ifconfig, route, ip, ...) a je zde též možnost přímo editovat konfigurační soubory.

Já se zde grafickými nástroji zabývat nebudu. Jednak je nepoužívám, za další je jich vcelku hodně, rychle se mění a nakonec je máte popsány v příručce ke své distribuci. Možná tam už ale nebudete mít uspokojivé vysvětlení toho, co který termín vlastně znamená. O to jsem se pokusil v předchozích odstavcích.

Nejprve ještě malou odbočku. Při nastavování sítě se čím dál častěji můžeme setkat s termínem DHCP. O co jde? Administrátory postupně přestalo bavit všem nově se připojujícím psát na papírek, jaké IP adresy, masky sítě a všesměrové adresy si mají nastavovat, ale hlavně je přestalo bavit při každé změně v adresování sítě obíhat a přenastavovat ručně všechny počítače.

Jak už to tak bývá, tak k pokroku přispívá ponejvíce kombinace chytrosti a lenosti. Chytré hlavy, kterým se nechtělo běhat, vymyslely způsob, jak může server každému nově připojenému počítači předat zmíněné nastavovací informace bez toho, aby tento nově připojený počítač měl v okamžik předání přidělenu IP adresu.

Pokud tedy na vaší síti funguje DHCP server, nepotřebujete dělat nic víc, než říci počítači "Používej DHCP". Pokud si nejste jisti, zkuste DHCP a když neuspěje, zadejte údaje ručně.

Kam zadat potřebné údaje?

Dnes si předvedeme ruční spuštění sítě pomocí klasických příkazů z příkazové řádky. Pro nastavování síťových rozhraní se v prostředí GNU odedávna používá program ifconfig. Zadáme-li jeho jméno do příkazové řádky bez parametrů, vypíše seznam a nastavení aktivovaných síťových rozhraní.

Možná vás na tomto výpise překvapí, že se v něm objevuje síťové rozhraní lo (nebo lo0), které jste neinstalovali ani nekonfigurovali. Vesměs každý systém využívá toto fiktivní síťové rozhraní s IP adresou 127.0.0.1 pro svou vnitřní komunikaci a testování síťových programů bez nutnosti být připojen k síti.

Chceme-li pomocí ifconfig např. nastavit první síťové kartě adresu 10.0.0.2, uděláme to následovně:

ifconfig eth0 10.0.0.2 up

Výsledek zkontrolujeme zadáním samotného ifconfig nebo ifconfig eth0, který vypíše jen informace o zvoleném rozhraní. Vidíme, že počítač odhadl síťovou masku (netmask) na 255.0.0.0 (osmibitová) a všesměr na 10.255.255.255.

Pokud chceme tuto kartu vypnout, zadáme:

ifconfig eth0 down

Detailnější nastavení karty se stanovením 24bitové masky by vypadalo následovně:

ifconfig eth0 10.0.0.2 netmask 255.255.255.0 broadcast
10.0.0.255 up

V některých systémech odvozených z BSD se lze setkat také se syntaxí:

ifconfig eth0 addr 10.0.0.2 netmask 255.255.255.0 broadaddr
10.0.0.255 up

Směrování

Přesto, že jsme ifconfigem přiřadili našemu rozhraní IP adresu a další potřebné hodnoty, pakety přes něj zatím proudit nebudou. Systém totiž neví, které pakety má posílat přes které rozhraní, neboť již má nejméně dvě (lo a eth0). Musíme mu tedy říci, které pakety na eth0 směrovat (neboli routovat).

Routování provádíme příkazem route. Zadáme-li jej bez parametrů, vypíše se routovací tabulka, tedy seznam platných pravidel směrování. V prvním sloupci (Adresát, Destination) vidíme cíl, kam mají být pakety směrovány. Většinou je zde adresa určité sítě. Maska (Genmask) je asi jasná, ale zajímá nás ještě Rozhraní (Iface).

Pokud již v tabulce najdeme naše nové rozhraní se správně přidělenou adresou a maskou sítě (v některých systémech to nastaví ifconfig automaticky), máme ušetřenou práci. V opačném případě zadáme:

route add -net 10.0.0.0 netmask 255.255.255.0 eth0

Pokud bychom měli počítač se dvěma síťovými kartami (eth0 a eth1) připojený do obou sítí (10.0.0.0 i 10.0.1.0), přidali bychom ještě:

route add -net 10.0.1.0 netmask 255.255.255.0 eth1

Do oblasti směrování patří také problematika bran. Brány jsou počítače s více síťovými rozhraními, z nichž alespoň jedno míří do Internetu (nebo jiné pro nás zajímavé sítě). Pokud je takový počítač připojen ke stejné síti jako ten náš, nepotřebujeme přímé připojení do Internetu, ale můžeme do něj přistupovat prostřednictvím této brány.

Řekněme, že v naší síti je brána s IP adresou 10.0.0.100. Potom do naší routovací tabulky přidáme potřebný záznam takto:

route add default gw 10.0.0.100

Výsledek můžeme prověřit vypsáním tabulky příkazem route. Měli bychom vidět řádek s hodnotou default v prvním sloupci a IP adresou ve druhém. Na konci je automaticky přidělené rozhraní (např. eth0) odvozené podle toho, ve které síti leží brána.

Zkouška spojení

A teď už bychom měli mít vše nastavené tak, aby náš počítač mohl komunikovat po vnitřní síti, případně i Internetu. Správnost nastavení můžeme prověřit ve výpisech ifconfig a route. Neověříme tak ale funkčnost ovladače, hardwaru a kabeláže. K tomu můžeme použít příkaz ping.

Program ping nedělá nic jiného, než že pošle pozdrav počítači se zadanou IP adresou. Pokud je oslovený počítač dostupný a jeho bezpečnost není nastavena paranoidně tak, že blokuje i ping pozdravy, odpoví. Zdrojový počítač posílá pozdravy opakovaně každou sekundu. Vypisují se řádky s těmi, které byly opětovány. Program ukončíme současným stiskem Control a C.

Závěr

Dnes jsme udělali velký skok od člověka nedotčeného síťovou problematikou k uživateli, který si dokáže nastavit síťové rozhraní, vyzkoušet spojení, ale hlavně, jak doufám, rozumí tomu, co dělá. Samozřejmě jsme mnoho zajímavých a důležitých věcí nestihli probrat, ale k tomu nám poslouží další díly tohoto seriálu.

Pevně doufám, že mne síťoví guru neobšťastní nějakým tím DDoS útokem odplatou za to, jak jsem zjednodušováním zprznil jejich oblíbenou problematiku. Slibuji, že se budu postupně blížit celé pravdě s tím, jak porostou znalosti čtenářů tohoto seriálu - síťových nováčků.

Už příště si ukážeme jak rozběhat síťové rozhraní s použitím moderního nástroje - programu ip. Dále pak popíšeme jak zapsat hodnoty pro nastavení sítě do konfiguračních souborů, abychom nemuseli síť spouštět ručně po každém startu systému. Zbude-li místo, vysvětlíme si také význam DNS a způsob jak jej nastavit.

Nahoru

Odkazy

Přidat téma diskuse

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz