��������������������������������������������� ���������������������������������������������
����������������������������������������������������������������� ����������������������������������������������������������������� ���������������������������������������������������������������� ���������������������������������������������������������������� ��������������������������������������������������������������� ��������������������������������������������������������������� �������������������������������������������������� �������������������������������������������������� ���������������������������������������������������������������������������������� �������������������������������������������������������������������������������� ���������������������������������������������������������������������������������� ����������������������������������������������������������������������������������� �������������������������������������������������������������������������������� ������������������������������������������������������������������������������������� ����������������������������������������������������������������������������������� ������� ������������ ������ �� ������������ ���������� ��������� ������������� ����������� ������������������������������������������������������������������������������������� ���������� ����������� ����� ����������� ������ ������������ ����� ������������� ������� ������������ ������ �� ������������ ���������� ��������� ������������� ����������� ������� ��� ���������� �������� ��� ��������� ���������� ��������� ��������� �������� ���������� ����������� ����� ����������� ������ ������������ ����� ������������� ���������������������������������������������������������������������������������� ������� ��� ���������� �������� ��� ��������� ���������� ��������� ��������� �������� �������������������������������������������������������������������������������� ���������������������������������������������������������������������������������� ���������������������������������������������������������������������������� �������������������������������������������������������������������������������� ������� ��� ������������ ������������ ������ ������� �������������� ������� ��������� ���������������������������������������������������������������������������� ������������������������������������������������������������������������������������ ������� ��� ������������ ������������ ������ ������� �������������� ������� ��������� ����������������������������������������������������� ������������������������������������������������������������������������������������ �����������������������������������������������������
����������������������������������
��������������������������������������������� ����������������������������������������������������������������� ���������������������������������������������������������������� ��������������������������������������������������������������� �������������������������������������������������� ���������������������������������������������������������������������������������� �������������������������������������������������������������������������������� ����������������������������������������������������������������������������������� ������������������������������������������������������������������������������������� ������� ������������ ������ �� ������������ ���������� ��������� ������������� ����������� ���������� ����������� ����� ����������� ������ ������������ ����� ������������� ������� ��� ���������� �������� ��� ��������� ���������� ��������� ��������� �������� ���������������������������������������������������������������������������������� �������������������������������������������������������������������������������� ���������������������������������������������������������������������������� ������� ��� ������������ ������������ ������ ������� �������������� ������� ��������� ������������������������������������������������������������������������������������ �����������������������������������������������������
����������������������������������
��������������������������������������������� ����������������������������������������������������������������� ���������������������������������������������������������������� ��������������������������������������������������������������� �������������������������������������������������� ���������������������������������������������������������������������������������� �������������������������������������������������������������������������������� ����������������������������������������������������������������������������������� ������������������������������������������������������������������������������������� ������� ������������ ������ �� ������������ ���������� ��������� ������������� ����������� ���������� ����������� ����� ����������� ������ ������������ ����� ������������� ������� ��� ���������� �������� ��� ��������� ���������� ��������� ��������� �������� ���������������������������������������������������������������������������������� �������������������������������������������������������������������������������� ���������������������������������������������������������������������������� ������� ��� ������������ ������������ ������ ������� �������������� ������� ��������� ������������������������������������������������������������������������������������ �����������������������������������������������������
����������������������������������
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
Obsah Slovo úvodem ............................................................................11
Část I: Úvod do problematiky počítačových sítí ............... 15 1. Historie počítačů, Unixu a internetu.........................................17 1.1 Počítače a Unix ...............................................................................17 1.2 Historie internetu............................................................................20
2. Síťové vrstvy.........................................................................23 2.1 Hardwarová vrstva.........................................................................24 2.2 IP vrstva ........................................................................................25 2.3 Protokol TCP a UDP ........................................................................26 2.4 Aplikační vrstva ..............................................................................28
3. Síťová rozhraní ......................................................................29 3.1 Adresa a maska ..............................................................................29 3.2 Příkaz ifconfig.................................................................................30 3.3 Routovací tabulka ...........................................................................31 3.4 PLIP ...............................................................................................32 3.5 Ethernet .........................................................................................33 Ethernetové prvky.............................................................................................34 Nastavení karet.................................................................................................35 ARP protokol.....................................................................................................35
4. Výběr linuxové distribuce .......................................................39 4.1 Distribuce vhodné pro server ...........................................................40 Debian..............................................................................................................40 Gentoo..............................................................................................................41 Slackware.........................................................................................................41
Obsah
5
6
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
4.2 Distribuce vhodné pro desktop .........................................................42 Ubuntu..............................................................................................................42 Fedora Core ......................................................................................................42 Mandriva ..........................................................................................................42
5. Bezpečnost ............................................................................43 5.1 Mýty a pověry................................................................................43 5.2 Nejběžnější druhy útoků ..................................................................44 5.3 Jak se bránit...................................................................................45
Část II: Praktická realizace sítě...................................... 47 6. Paketový filtr a firewall.........................................................49 6.1 Tabulky a řetězce............................................................................50 6.2 Syntaxe příkazu iptables .................................................................51 6.3 Filtrujeme .......................................................................................52 6.4 Tvorba vlastních řetězců ..................................................................54 6.5 Překlad adres .................................................................................54 6.6 Předávání paketů............................................................................56 6.7 Propouštění souvisejících spojení ......................................................57
7. Superserver xinetd ................................................................59 7.1 Konfigurace služeb ..........................................................................61 7.2 Kontrola přístupu ............................................................................63 7.3 Ochrana před přetížením systému ....................................................63 7.4 Příklad konfiguračního souboru ........................................................64
8. Automatické přidělování IP adres............................................67 8.1 Konfigurace DHCP serveru ...............................................................68 8.2 DHCP klient ....................................................................................70
Obsah
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
9. Nameserver aneb DNS ...........................................................71 9.1 Resolver.........................................................................................72 9.2 Druhy DNS serverů .........................................................................73 9.3 Konfigurace DNS cache ....................................................................74 9.4 Konfigurace primárního DNS serveru ................................................76
10. FTP server...........................................................................79 10.1 Postup připojení ............................................................................80 Aktivní režim.....................................................................................................80 Pasivní režim ....................................................................................................81
10.2 FTP klienti ....................................................................................81 10.3 FTP server ProFTPD ......................................................................82 10.4 Konfigurace ProFTPD.....................................................................84 10.5 Spuštění ProFTPD..........................................................................85 10.6 Omezení FTP uživatelů ..................................................................86
11. Vzdálený terminál a protokol SSH.........................................87 11.1 Historie a fakta o SSH...................................................................88 11.2 Klíče a fingerprinty........................................................................89 11.3 Konfigurace SSH serveru ...............................................................89 11.4 Použití SSH klienta........................................................................91 11.5 Autorizace uživatele pomocí RSA klíčů ............................................93 11.6 Další možnosti SSH .......................................................................95
12. Síťový souborový systém (NFS)............................................97 12.1 NFS na straně klienta ....................................................................98 12.2 NFS na straně serveru ...................................................................99
13. Samba...............................................................................101 13.1 Instalace Samby..........................................................................102 13.2 Konfigurace Samby......................................................................103
Obsah
7
8
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
13.3 Spouštění Samby.........................................................................105 13.4 Správa uživatelů .........................................................................106 13.5 Samba na straně klienta ..............................................................106 smbget ...........................................................................................................107 smbmount ......................................................................................................108 smbumount ....................................................................................................109
14. Webový server ..................................................................111 14.1 Protokol HTTP ............................................................................111 14.2 Webový server Apache................................................................115 14.3 Konfigurace webového serveru Apache.........................................117 Global Environment.........................................................................................117 Main server configuration ...............................................................................119 .htaccess ........................................................................................................122
14.4 Virtuální servery.........................................................................123 14.5 Moduly Apache ...........................................................................125 Modul PHP......................................................................................................127 mod_perl a mod_python.................................................................................127 mod_cband ....................................................................................................128 Další moduly ..................................................................................................129
15. Poštovní server .................................................................131 15.1 MUA, MTA a MDA ......................................................................132 15.2 Protokol SMTP............................................................................132 15.3 Jak pošta putuje .........................................................................134 15.4 Vyzvednutí pošty........................................................................135 15.5 Poštovní server Postfix...............................................................139 Konfigurace Postfixu .......................................................................................140 Antispam ........................................................................................................141
15.6 POP3 a IMAP4 ..........................................................................142
16. Virtuální privátní síť (VPN).................................................145 16.1 OpenVPN ...................................................................................147 16.2 Konfigurace jednoduchého tunelu..................................................148
Obsah
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
16.3 Práce s cerfikáty .........................................................................149 16.4 Vytvoření klient-server VPN .......................................................151
17. Tiskový systém CUPS.........................................................153 17.1 Konfigurace CUPS .......................................................................154 17.2 Správa tiskáren ..........................................................................156 Ruční editace souborů ....................................................................................157 Webové rozhraní .............................................................................................158 Softwarové nástroje ........................................................................................159
17.3 Instalace ovladačů.......................................................................161 17.4 CUPS a Samba ............................................................................162
Slovo závěrem.........................................................................165 Přílohy ....................................................................................167 Příloha A: Seznam TCP portů................................................................167 Příloha B: Seznam doporučené literatury...............................................174 Příloha C: Doporučené internetové zdroje..............................................176
Rejstřík ...................................................................................179
Obsah
9
10
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
Obsah
11 Slovo úvodem
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
Slovo úvodem Operační systém Linux je mezi administrátory serverů velmi oblíbený a jeho zastoupení na trhu stále roste. Dnes v podstatě sotva naleznete středně velkou firmu, v níž by nebyl nasazen alespoň na firewallu. Jeho výhodou jsou oproti komerčním systémům především nižší náklady, robustnost, škálovatelnost, přizpůsobivost a vysoký výkon. Stejné klady ale dokáže nabídnout i „domácím“ uživatelům, kteří by si chtěli postavit vlastní počítačovou síť. Obvykle chtějí sdílet připojení k internetu v rámci jednoho domu, nabídnout své soubory ke sdílení nebo si jen tak vyzkoušet, co správa takového serveru obnáší. V mnoha diskusních fórech pak najdeme příspěvky jako: „Ahoj, chci připojit náš panelák k internetu a slyšel jsem, že ten Linux je na to vhodný. Kde mám začít?“ Podobnými dotazy se diskuse jen hemží a tato tematika se v pravidelných intervalech objevuje vždy znovu a znovu. Držíte v ruce knihu, která by vám měla na podobnou otázku dát jasnou a přesnou odpověď. Dozvíte se, co budete potřebovat, jak se na vše připravit a především se naučíte jednotlivé služby zprovoznit. Velkou výhodou této publikace je, že od čtenáře neočekává v podstatě nic. Nepředpokládám, že víte, co je to TCP, jak se nastavuje v Unixu IP adresa, ani proč potřebujete DNS a co to vlastně je. Vše bude postupně vysvětleno na mnoha
Slovo úvodem
12
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
příkladech z praxe a do celé problematiky tak proniknete velmi přirozenou a nenásilnou cestou. Přestože je vše psáno na míru systému GNU/Linux, měla by být většina postupů použitelná i v ostatních systémech unixového typu. Pro všechny podobné systémy je k dispozici mnoho softwaru, a proto by neměl být problém jej provozovat i v jiném prostředí. Můžete tak místo Linuxu sáhnout třeba po NetBSD, OpenSolaris a podobně. Ke knize můžete přistupovat jednak jako k učebnici, ale také jako k manuálu. Doporučuji kombinovat obojí. Nejprve si přečtěte hlavní části postupně jako učebnici a pak se k jednotlivým kapitolám vracejte, jak budete sami potřebovat.
Struktura knihy Kniha je rozdělena do tří částí. První vás uvede do obecné problematiky počítačových sítí, vysvětlí teorii, kterou budete potřebovat později, a naučí vás některé základní operace potřebné k administraci Linuxu. Doporučuji tuto část přečíst pozorně a postupně jako učebnici, tedy od začátku do konce. Druhá část se pak zabývá praxí, a to v míře, jak jen to je možné. Zde se naučíte to hlavní, tedy konfigurovat server, spouštět jednotlivé služby a řídit provoz celého vytvořeného systému. Tato část připomíná více než ta předchozí manuál. Můžete se v ní pohybovat podle potřeby a zajímat se o jednotlivé služby. Kapitoly jsou provázány jen minimálně, a tak není potřeba číst je všechny. Poslední část knihy tvoří přílohy, ve kterých naleznete seznam nejběžnějších TCP portů, doporučenou literaturu k dalšímu studiu a internetové odkazy. Samozřejmě nechybí ani vždy tak důležitý rejstřík.
Typografické konvence V knize jsou využívány různé typografické prvky, jako zvláštní druhy písma nebo speciální odstavce, označené piktogramem či ikonou. Jejich cílem je usnadnit čtenářům orientaci v textu a celkově usnadnit práci s knihou při studiu i při hledání odpovědi na konkrétní problém. Jedná se o následující věci: Kurziva označuje názvy internetových adres a odkazů. Tučně jsou označeny případné názvy karet, dialogových oken, příkazů z nabídek programů a obecně texty, které považujeme za důležité. Pro názvy kláves a klávesových zkratek jsou použity KAPITÁLKY. Počítačové kódy a názvy součástí operačního systému Linux jsou konečně sázeny neproporcionálním písmem. Dále najdeme v knize tyto speciální odstavce: známka Po
Tento symbol označuje odstavec, který rozšiřuje probíranou problematiku o nějakou zajímavost či výjimečnost. Poznámka není nezbytná k pochopení dané problematiky, většinou upozorňuje na další používané termíny označující stejnou skutečnost a prozrazuje další souvislosti.
Slovo úvodem
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ ozornění Up
Poděkování Poděkování patří především mé ženě Petře, která přehlíží mnoho mých nedostatků a je mi v životě silnou oporou. Děkuji také celé své rodině, která, ač rozeseta po celé republice, je stále se mnou. Nesmím zapomenout ani na všechny své věrné přátele a fanoušky. A pochopitelně děkuji i vám, čtenářům – je to především vaše kniha!
Slovo úvodem
Slovo úvodem
Vykřičník zase upozorňuje na fakta, která byste měli určitě vědět, na situace, na něž byste měli dávat pozor, a na komplikace, se kterými se můžete při práci setkat.
13
14
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
Slovo úvodem
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
I. Úvod do problematiky počítačových sítí Na počátku bylo slovo. Tedy v tomto případě chuť postavit si vlastní počítačovou síť. Předpokládám, že jste se někde dočetli, že ten „Linux“ by na to mohl být to pravé, a proto jste si pořídili tuto knihu a nyní byste rádi začali. Kromě techniky, kabeláže a trochy šikovnosti budete především potřebovat alespoň základní znalosti o sítích, jejich funkci a GNU/Linuxu jako takovém. Právě o tom bude následující teoretická část knihy. Vysvětlí vám, co je to síť, jak přes ní data putují, kdo je řídí a kam by asi měla dorazit. Pochopíte pojmy jako TCP/IP, paket, router, Ethernet, aplikační vrstva a podobně. Poznáte také operační systém GNU/Linux, zjistíte, co jsou to distribuce, a vyberete si tu pravou. Vysvětlíme si také, jak celou síť realizovat po technické stránce, jaký hardware k tomu budeme potřebovat a jak můžeme vše propojit tak, aby to mohlo společně komunikovat. Na konci první části se budeme zabývat také jedním z aktuálních témat, kterým je bezpečnost. Pokud toho o sítích moc nevíte, doporučuji teoretickou část přečíst od začátku do konce. V opačném případě by vám totiž mohly uniknout důležité detaily, jimiž se v praktické části už nebudeme zabývat a budeme je považovat za samozřejmost.
Podkapitola
15
16
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
Název kapitoly
1. Historie počítačů, Unixu a internetu 1.1 Počítače a Unix Počítačové sítě za sebou mají poměrně dlouhou a bouřlivou historii. Abychom pochopili jejich smysl a důvod jejich existence, musíme se ohlédnout zpět a podívat se, jak a proč vlastně přišly na svět. V dávných dobách výpočetní techniky byly počítače vlastně samostatné oddělené jednotky, které pracovaly na svých stejně samostatných a oddělených úkolech. Počítače byly velmi drahé a složité, a proto jich existoval jen poměrně omezený počet. Tehdy se jednalo převážně o velké sálové počítače. Ty dokázaly plnit různé úkoly na základě složitě vloženého programu, který vždy připravovala na míru skupina programátorů. Abyste ovšem správně chápali jejich funkci: technicky se jednalo o něco, co připomíná dnešní programovatelné kapesní kalkulačky. Bavíme se ale o padesátých letech dvacátého století. Už v té době ale počítače dokázaly urychlit mnoho složitých a náročných výpočtů, které by často bez jejich pomoci nebylo možné vůbec realizovat. Pomáhaly rovněž při praktických operacích u akcí, jako je například sčítání lidu.
1.1 Počítače a Unix
17
1. Historie počítačů, Unixu a internetu
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
18
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ *
Obrázek 1.1: Počítač Vax ze sedmdesátých let známka Po
Každý počítač obsahoval řadu relé pro přepínání signálů. Tato relé byla však velmi náchylná na různé druhy poruch. Aby fungovala bezchybně, musela být zajištěna naprostá čistota spínaných kontaktů. Při rozloze počítače, která dosahovala až stovek metrů čtverečních, to ale představovalo velmi obtížný úkol. Největším nepřítelem kontaktů byl mrtvý hmyz. Tělíčka mušek padala do obvodů a relé a vytvářela tak izolaci. U každého počítače tedy asistovala skupinka lidí, kteří se štětci v ruce obíhali stále dokola všechna relé a vymetali z nich prach a hmyz. Takto vznikl pojem debugger, který by se dal přeložit jako „odhmyzovač“.
Počítače padesátých let byly složeny z tisíců elektronek, stykačů, diod a z kilometrů drátů. Počátkem šedesátých let se však začaly ve větší míře vyrábět a prosazovat integrované obvody. Ty umožnily prudký rozvoj počítačů a nebývalé vylepšení hardwaru. Začaly se objevovat stále složitější a rychlejší počítače, které se ale zároveň zmenšovaly. Další nezanedbatelnou výhodou použití integrovaných obvodů byl ohromný nárůst spolehlivosti počítačů. Elektronky byly velmi poruchové a u starých počítačů jich bylo denně potřeba vyměnit i několik stovek. S rostoucí složitostí a dostupností počítačů bylo potřeba zajistit také jejich jednoduchou programovatelnost. Šedesátá léta proběhla ve znamení prudkého rozvoje programovacích jazyků. Objevily se jazyky Fortran, Cobol, Algol, Basic a další. Situace na poli programovacích jazyků byla v té době velmi nepřehledná, téměř každý obor využití počítačů používal vlastní jazyk. V polovině šedesátých let se objevily první víceuživatelské počítače, které díky svému výkonu umožňovaly, aby na nich pracovalo více lidí zároveň. Každý uživatel byl připojen vlastním jednoduchým terminálem, jehož pomocí s počítačem komunikoval.
1. Historie počítačů, Unixu a internetu
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
19
Na konci šedesátých let se už počítače rozšířily do celého světa a staly se poměrně běžnou záležitostí. Každé větší výzkumné středisko nebo univerzita nějaký vlastnily. Čím dál tím častěji proto uživatelé naráželi na nepříjemný a nepřekonatelný problém: na otázku výměny dat.
Na konci šedesátých let se v Bell Labs začalo pracovat na systému Multics. Po velmi dlouhém a náročném vývoji se ale ukázalo, že vyvinutý systém neumí to, co se od něj očekávalo, navíc je velmi pomalý a za vývoj už byly utraceny ohromné částky. Projekt Multics byl proto zastaven. Tím se ale celý problém dostal na úplný začátek. Neexistoval rozumný operační systém, který by se dal na tehdejších počítačích používat. Počátkem roku 1970 ale Ken Thompson vytvořil teoretický model nového víceuživatelského systému. Během téhož roku jej společně s kolegou Denisem Ritchiem implementovali na počítač PDP-7. Protože se jednalo o velmi zastaralý model, který už nestačil nárokům uživatelů, byl o rok později za 65 tisíc dolarů zakoupen nový model PDP-11. Na něm pak vznikla základní implementace operačního systému Unix, jak jej známe dnes. Abyste ale neměli pocit, že PDP-11 byl bůhvíjak výkonný superpočítač: měl 24 kB (skutečně kilobajtů!) RAM a velikosti tehdejších disků se pohybovaly v řádech megabajtů. Tedy žádný zázrak. I přesto na něm ale byl schopen Unix běžet.
známka Po
Obrázek 1.2: Dennis Richie (stojící) a Ken Thompson před počítačem PDP-11
1.1 Počítače a Unix
1. Historie počítačů, Unixu a internetu
Každý počítač měl vlastní softwarové vybavení, které bylo šité na míru konkrétní aplikaci, bylo napsáno speciálním jazykem a používalo specifický formát zpracovaných dat. Přišel tedy čas pro nástup operačních systémů.
20
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
Původní Unix byl napsán v assembleru, což bylo velmi těžkopádné a zároveň to přinášelo problémy s jeho převodem na jiné počítače. Ken Thompson proto začal vytvářet jazyk nové generace, který by byl jednak přehledný, ale zároveň snadno přenositelný. Denis Ritchie nakonec práci dokončil a vytvořil a implementoval jazyk C. Do něho byl v roce 1973 přepsán celý kód Unixu. Díky tomu, že je jazyk C velmi snadno implementovatelný, není problém kód Unixu přeložit téměř kdekoliv. V polovině sedmdesátých let se proto Unix velmi rozšířil a začaly pro něj vznikat další a další univerzální programy, aplikační software, ale i hry. Díky Unixu bylo možné všechen tento software sdílet a využívat jeho výhod. Vznikla tak univerzální platforma pro sdílení dat. Tím samozřejmě vývoj nekončí, nástup počítačů byl již nezadržitelný. S příchodem relativně bezproblémové výměny dat se objevila obecná poptávka po propojení jednotlivých počítačů, které by tak spolu mohly komunikovat bez fyzického přenášení médií. Tak vznikla myšlenka počítačové sítě.
1.2 Historie internetu Jednoznačně největší počítačovou sítí, kterou kdy lidstvo vytvořilo, je internet. Jeho historie začala už na konci šedesátých let, kdy se ministerstvo obrany Spojených států rozhodlo, že by bylo užitečné mít k dispozici novou komunikační síť, která by v případě jakékoliv krize umožňovala rychlou výměnu dat. Touto krizí byla míněna především nukleární válka. Síť by měla za úkol propojit státy, města či velitelská stanoviště, aby si jednotlivé subjekty mohly bez problému vyměňovat strategické informace. Firma RAND Corporation proto dostala od ministerstva zakázku na vytvoření modelu podobné sítě. Její hlavní vlastností měla být odolnost proti nukleárnímu útoku. Jednalo se o velmi obtížný úkol. Jakákoliv síť je z pochopitelných důvodů velmi náchylná k poškození a její uzly by byly jednoznačně zajímavými terči případného útoku, který by v první vlně celou síť zdecimoval. RAND přišel s velmi odvážným a inovátorským návrhem: vybudovaná síť nesmí mít žádné centrální body a musí být schopná funkce i v případě masivního poškození. Výsledná podoba sítě byla navržena následovně: celá soustava se bude skládat z jednotlivých nezávislých a rovnocenných uzlů, které si budou předávat malé fragmenty dat, jimž se říká pakety. Ty budou přes uzly předávány postupně směrem od odesílatele k příjemci. Samotná cesta není důležitá. Podstatné je, aby nakonec pakety dorazily k cíli. Model splnil oba požadavky – byl decentralizovaný a fungoval i v případě, kdyby byla velká část sítě zcela zničená. Z pohledu tradiční výměny dat byla síť, kterou popsali vývojáři z RAND, velmi neefektivní. Pakety mohly putovat nepřímo, mohly se vracet nebo i ztratit. Výhodou takové sítě byla ale její neobyčejná odolnost a škálovatelnost. Původní návrh byl velmi rychle uveden do praxe, a tak v roce 1969 vznikl základ sítě ARPANET. Ta na počátku propojila čtyři významné vědecké instituce: Stanfordský výzkumný institut a univerzity v Los Angeles, Santa Barbaře a Utahu. Síť byla původně určena k vojenským účelům a pro předávání citlivých dat. Čím dál tím častěji byla ale využívána k zasílání soukromých zpráv pomocí elektronické pošty. Zásadním zlomem ve vývoji internetu byl rok 1982 a vytvoření definice komunikačních protokolů rodiny TCP/IP, o kterých si budeme povídat později. Důležité je, že tento protokol umožnil propojit ohromné množství heterogenních sítí a mohl vzniknout internet v podobě, jak jej známe dnes.
1. Historie počítačů, Unixu a internetu
21
1. Historie počítačů, Unixu a internetu
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
Obrázek 1.3: Počet domén v letech 1994 aľ 2006
V roce 1983 se vojenská část sítě oddělila a vytvořila samostatný celek, dále nazývaný MILNET. Původní ARPANET tak získal civilní statut a jeho masovému šíření již vůbec nic nebránilo. Dnešní internet je rozšířen po celém světě a představzuje velmi důležité médium, které lidé využívají denně, ať už ke studiu, získávání informací nebo jen pro zábavu. Principy, na nichž síť stojí, jsou ovšem stále stejné. Internet si tak zachovává ráz robustní a decentralizované sítě.
1.2 Historie internetu
22
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
1. Historie počítačů, Unixu a internetu
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
2. Síťové vrstvy
2.
23
Síťové vrstvy Internet je z historického hlediska naprosto heterogenní sítí, která se dnes skládá z počítačů mnoha rozdílných platforem, na nichž běží nejrůznější operační systémy, ale často ji také tvoří nejrůznější zařízení jako jsou VoIP telefony, průmyslové kamery, routery a podobně. Všechna tato zařízení spolu musí bez problémů komunikovat, a to napříč celou sítí. Je jedno, zda se jedná o lokální síť, kterou jste si postavili v obýváku, nebo o internet. Vždy je potřeba doručit data od zdroje k cíli – a principy i použité protokoly se zde proto naprosto shodují. Malou síť tak můžete jednoduše připojit k většímu celku a pokud dodržíte několik málo pravidel, vše bude bez problému fungovat. Jak jsme si již řekli, internet je decentralizovaná síť a neexistuje v ní tedy žádná vyšší síla, která by mohla komunikaci směrovat nebo řídit. Aby bylo možné předávat data z jednoho bodu do libovolného dalšího, vznikla rodina protokolů TCP/IP, kterou musí znát každé zařízení, jež chceme k internetu připojit. Komunikační schéma můžeme rozdělit na čtyři základní vrstvy: hardwarová vrstva, IP vrstva,
2. Síťové vrstvy
24
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
vrstva TCP/UDP, aplikační vrstva.
2.1 Hardwarová vrstva Do hardwarové vrstvy patří ty nejnižší formy komunikace. Zjednodušeně řečeno jsou to především kabely a nejnižší protokoly, které umožňují přenášet data mezi dvěma zařízeními. Tato vrstva nemusí být nijak standardizována a nemusí být pro celou síť společná. Obvykle tomu tak ani není. Tato vrstva má vlastně za úkol přenášet data vždy mezi dvěma sousedními body. Ty musí být propojeny tak, aby odeslaný byte dorazil na druhou stranu a cílové zařízení jej mohlo přijmout a dále využít. Nic více potřeba není. Dříve se poměrně často pro zasíťování používal běžný sériový nebo paralelní port počítače. Ke zprovoznění takového spojení stačil (a stále stačí) obyčejný kabel, kterým jsou oba počítače propojeny. Jedná se tedy o nejjednodušší možnost, jak postavit síť. Nevýhodou je ovšem nízká rychlost a omezená délka spoje. Moderní sítě jsou nejčastěji postaveny na technologii Ethernet. Ta nabízí velmi slušný poměr cena/výkon. K provozu Ethernetu vám budou stačit síťové karty a vhodná kabeláž. Obojí lze pořídit velmi levně. Infrastruktura je pak sestavena ze standardního hardwaru, který můžeme libovolně měnit a doplňovat. Další výhodou Ethernetu je vysoká rychlost. Staré desetimegabitové sítě jsou již dnes přežité a bez problémů si můžeme postavit stomegabitovou nebo dokonce gigabitovou síť. Velmi oblíbeným druhem propojení jsou dnes různé bezdrátové technologie jako Wi-Fi, Bluetooth nebo různé optické spoje. Jejich hlavní výhodou je absence kabeláže, kterou může být velmi problematické natáhnout na větší vzdálenosti. Nevýhodou je samozřejmě
Obrázek 2.1: Konektory ethernetových kabelů
2. Síťové vrstvy
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
25
vyšší cena a komplikovanější implementace s ohledem na potřebné znalosti v oblasti šíření rádiových vln a podobně. Dalším typem digitálního spojení jsou pak různá specializovaná zařízení jako analogové modemy, ADSL modemy nebo ostatní konvertory, které přenášejí data pomocí nejrůznějších komunikačních cest. Obvykle se ale o jejich správu stará poskytovatel podobné služby. Za přenos se tedy většinou platí, ale data je možné přenášet i na velké vzdálenosti. Samozřejmě existuje celá řada dalších technologií a způsobů, jak přenášet data mezi dvěma body. Toto jsou jen ty nejobvyklejší z nich. Pro nás je ovšem důležité, že máme nějakou hardwarovou vrstvu, která je schopná doručovat jedničky a nuly.
O IP vrstvě jsme se již zmiňovali, protože se vlastně jedná o hybnou sílu internetu. IP zajišťuje přenos dat napříč sítí. Jak jsme si již řekli, tento protokol je na hardwarové vrstvě naprosto nezávislý. Z pohledu IP se zdá, že je celá síť naprosto homogenní, protože můžeme jednoduše posílat data z jednoho bodu do druhého a nemusíme mít vůbec tušení, kudy putují. IP vrstvě je jedno, jestli při přenosu projdou data Ethernetem, Wi-Fi, po lince kabelové televize nebo třeba postupně všemi těmito cestami. Tato vrstva je tvořena stejnojmenným protokolem. Úkolem protokolu IP je zajistit samotný přenos dat. Aby vše probíhalo hladce, jsou data předem rozdělena do menších balíčků, kterým říkáme pakety. Ty jsou opatřeny hlavičkou a odeslány do sítě. Analogie se skutečnými poštovními balíky je zřejmá. Vezmete obsah, zabalíte, na papír napíšete adresu odesílatele a příjemce, a odnesete vše na poštu.
známka Po
Adresy počítačů samozřejmě nekorespondují s poštovními adresami, počítače jsou značeny takzvanými IP adresami. V současné době se nejčastěji používá protokol IP verze 4 (zkráceně IPv4), který jako adresu používá 32bitové číslo. IPv4 by měl být časem nahrazen novější verzí IPv6, která nabízí delší adresu (128 bitů) a rozšiřuje IP o další užitečné funkce. Poskytovatelé se ale do jejího nasazení nijak nehrnou, a tak se zatím s IPv6 setkáme jen v omezené míře. Proto se tato kniha zabývá klasickou verzi 4. IP adresa má obvykle podobu čtyř 8bitových čísel, která jsou oddělena tečkou. Čísla mohou nabývat hodnot 0–255 (jsou 8bitová). Příklad IP adresy: 192.168.1.1. Každá IP adresa se v rámci jedné sítě může vyskytovat pouze jednou, abychom byli schopni každý počítač jednoznačně identifikovat. Je to jako s telefonními čísly. Každé je unikátní.
známka Po
V případě lokální sítě si můžete adresy vymýšlet, jak je libo. IP adresy internetu má na starosti celosvětový regulátor a vy tu svou dostanete přidělenou od poskytovatele. Sami o ni žádat nemusíte. Některé adresy ale mají speciální význam. Adresa, kterou jste už mohli několikrát vidět jako příklad, začínající čísly 192.168, je určena pro použití v lokálních sítích a neměla by projít nikam ven. Podobně jsou na tom adresy začínající číslem 10. Adresy, které začínají
2.2 IP vrstva
2. Síťové vrstvy
2.2 IP vrstva
26
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
Obrázek 2.2: Interní Wi-Fi adaptér s anténou
číslem 127, zase vždy patří vašemu lokálnímu stroji a používají se v případě, že chcete komunikovat sami se sebou, třeba při testování nějakého serveru. Pokud si stavíte lokální síť, měli byste použít adresy nejlépe z rozsahu 192.168.1.1 až 255. V knize používám tyto adresy záměrně, protože nekolidují s žádnou existující veřejnou sítí a navíc je jejich použití velmi přehledné. Už tedy víme, co je to IP adresa, a také víme, že každý počítač v síti má svou unikátní adresu. Protokol IP tedy vezme blok dat a přidá k němu adresu odesílatele a příjemce. Paket pak v ideálním případě doputuje k počítači příjemce, tam je rozbalen – a data jsou na místě. Možná vás napadlo, že je to trochu málo. Protokol IP sice umí posílat data, ale to nám v praxi nemůže stačit. Nepoznáme, o jaká data se jedná, co s nimi dále a podobně. IP protokol rovněž nezajišťuje, že pakety budou nějak navazovat nebo že dorazí ve správném pořadí. IP vrstvě je navíc jedno, zda paket dorazil do cíle, jejím úkolem je především paket poslat. Tím pro ní úkol končí. Abychom tedy mohli reálně tento protokol nasadit, musíme jej poměrně značně rozšířit o další funkce.
2.3 Protokol TCP a UDP Aby bylo možné s daty dále pracovat, přidává se nad protokol IP ještě uživatelský protokol TCP. Společně pak tvoří vrstvu TCP/IP. S tímto pojmenováním se můžete setkat velmi často. IP protokol se samostatně v praxi nepoužívá. TCP přidává mechanizmus kontroly paketů, jejich rozesílání a opětovného skládání do původního celku. Z pohledu uživatele a aplikace je cíl kromě IP adresy rozlišen také pod-
2. Síťové vrstvy
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
27
le takzvaného portu. Porty jsou virtuální přípojky na konkrétním cílovém zařízení. Umožňují přiřadit komunikaci konkrétní aplikaci – právě v tom spočívá jejich hlavní přínos. Protokol TCP použije vrstvu IP k posílání paketů, ale vytváří nad ní stabilní spojení. Z pohledu aplikace je tedy na žádost vytvořen mezi konkrétními porty na dvou počítačích jakýsi tunel. Tímto tunelem lze posílat data s jistotou, že dorazí na druhou stranu. Tam je již připravena aplikace, která data zpracovává – říkáme, že na příslušném portu „naslouchá“. Jak to tedy funguje v praxi?
Systém vytvoří pevné spojení mezi porty a tím i mezi aplikacemi. Server je připraven naslouchat a prohlížeč (klient) může odesílat data. Do tunelu pošle žádost o stránku, kterou chce zobrazit, stejným tunelem se mu vrátí odpověď, v tomto případě požadovaný soubor. Klient pak řekne systému, aby spojení uzavřel. Server se opět přepne do vyčkávacího režimu a čeká na další spojení. Pochopitelně je možné, aby klient ponechal spojení otevřené nebo požádal o více souborů najednou. To už záleží na aplikaci a na tom, co potřebuje. Server samozřejmě může přijmout na jednom portu více spojení. Nic se nesmíchá, protože každé z nich pochází z jiné adresy nebo přinejmenším z jiného portu. Systém si jednotlivá spojení ohlídá a rozešle odpovědi správným klientům.
známka Po
Protokol TCP je dostatečně univerzální pro většinu spojení, která chceme v rámci sítě realizovat. Umožňuje sestavit stabilní cestu, přes kterou dokážeme bez problémů komunikovat s aplikacemi na druhé straně. Ne vždy ale potřebujeme sestavovat spojení. Kvůli datům drobného charakteru není potřeba tak složitá operace, která může být nakonec datově náročnější než samotná přenášená informace. Pro tyto účely byl navržen protokol UDP. Umožňuje rovněž komunikovat se vzdáleným počítačem a jeho portem, ale na rozdíl od TCP nenavazuje trvalé spojení. Paket je prostě jen zabalen a odeslán na cílový port. Druhá strana podobným paketem potvrdí přijetí. Neumí se ale nijak vyrovnat se ztrátou odeslaného paketu. Druhá strana totiž neví, že byla nějaká informace vůbec odeslána. Opakování ztraceného paketu je proto problémem aplikace. Protokol UDP se obecně používá u datově nenáročných aplikací. Můžeme si představit libovolné ukázkové využití. Dejme tomu, že chceme někam umístit teploměr, jenž jednou za deset minut odešle na databázový server aktuální teplotu, kterou tvoří jediný byte. Kdybychom se rozhodli pro TCP, musel by teploměr navázat spojení, odeslat informaci a zase spojení ukončit. Kvůli jednomu bytu bychom proto museli odeslat minimálně dalších 8 servisních paketů. S UDP nám stačí jeden paket s informací a jeden s potvrzením. Obecně nalezne protokol UDP využití u DNS serverů, o kterých si budeme povídat v samostatné kapitole. Komunikace těchto serverů přesně splňuje požadavky na použití protokolu UDP.
2.3 Protokol TCP a UDP
2. Síťové vrstvy
Na počítači 192.168.1.1 na portu 80 naslouchá webový server, což je software, který umí na požádání předat webovou stránku. Na druhé straně s adresou 192.168.1.2 je prohlížeč, což je aplikace, která dokáže stránku vyžádat a zobrazit. Prohlížeč požádá svůj systém o vytvoření spojení na druhou stranu a na její port 80. Na své straně si rovněž vybere jeden z portů (náhodně).
28
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
2.4 Aplikační vrstva Na aplikační vrstvě se nacházejí jednotlivé aplikace, které spolu chtějí po síti komunikovat. Využívají k tomu přímo jen protokoly TCP nebo UDP, které jim zprostředkovává jádro operačního systému a jeho síťová vrstva. Aplikační vrstvu můžeme jednoduše rozdělit na servery a klienty. Server požádá hostitelský systém o zpřístupnění portu pro příjem, zavěsí se na něj a vyčkává na příchozí spojení ze sítě. Samozřejmě pak na něj umí patřičně zareagovat. Klient naopak umí požádat o navázání spojení se serverem a dokáže jej žádat rovněž o služby nebo informace, které potřebuje uživatel. Konkrétním aplikacím se budeme v knize věnovat později.
2. Síťové vrstvy
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
29
Síťová rozhraní V předchozí kapitole jsme si řekli něco o hardwarové síťové vrstvě. Protože se jedná o velmi důležitou problematiku, která nás v praxi bude velmi zajímat, budeme si o ní v této kapitole povídat ještě více. Vyhneme se ale problematice zaměřené přímo na hardware. Účelem této knihy není naučit vás nasazovat konektory na kabeláž a instalovat síťové karty. Ukážeme si, jak vidí jednotlivá rozhraní operační systém a co s nimi můžeme provádět.
3.1 Adresa a maska Obecně v Unixu pro základní komunikaci dvou bodů postačí, když propojíme dvě rozhraní a nastavíme jim IP adresu a stejnou masku sítě. O ní jsme si zatím nic neřekli, ale maska sítě hraje v síti velmi důležitou roli. Má podobnou strukturu jako IP adresa a skládá se tedy ze čtyř 8bitových čísel. Maska ovšem v síti plní naprosto odlišnou roli než adresa. Maska sítě totiž umožňuje jednoduše rozlišit, zda se stroj snaží komunikovat s někým v jeho vnitřní síti nebo ne. Masku
3.1 Adresa a maska
3. Síťová rozhraní
3.
30
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
si můžeme představit jako děrovanou šablonu, kterou přiložíte na IP adresu, z níž pak bude prosvítat jen adresa sítě, společná pro všechny počítače v síti. Vše osvětlí následující příklad: známka Po
Adamův počítač má IP adresu 192.168.1.26 a masku 255.255.255.0. Pokud chce komunikovat s Bořkem, jehož IP adresa je 192.168.1.81, jeho počítač vezme obě IP adresy a přiloží na ně masku. Představte si to tak, že 255 znamená díru v naší šabloně a 0 zaplněné místo, kterým není vidět dolů. Výsledek tedy bude vypadat asi takto: 192.168.1.26 255.255.255.0 192.168.1.0 První tři čísla z adresy nám propadly dolů (v masce bylo 255), ale poslední nikoliv (v masce byla 0). Dostali jsme takzvanou adresu sítě. To znamená, že všechny počítače v naší síti musí mít společnou právě tuto část (192.168.1). Adamův počítač provede stejnou akci s Bořkovou adresou a dostane totéž (192.168.1.0), takže je jasné, že Bořek je ve stejné síti a může s ním komunikovat přímo.
3.2 Příkaz ifconfig Základním příkazem pro konfiguraci jednotlivých rozhraní je právě ifconfig. Jeho pomocí v rámci systému zapínáme jednotlivá zařízení a přidělujeme jim IP adresy, masky a další vlastnosti. Pokud použijeme příkaz bez parametrů, vypíše nám informace o právě používaných síťových zařízeních. Pokud nás zajímá jen konkrétní rozhraní, připojíme jeho název jako parametr: $ ifconfig eth0 eth0
Link encap:Ethernet HWaddr 0C:A4:37:45:E5:38 inet addr:192.168.1.1 Bcast:192.168.0.255 Mask: 255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:354 errors:0 dropped:0 overruns:0 frame:0 TX packets:407 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:12546 (12.2 KiB) TX bytes:216503 (211.4 KiB) Interrupt:11 Base address:0x1080
Postupně jsou zobrazeny následující informace: typ rozhraní, hardwarová MAC adresa, IP adresa, broadcastová adresa, skupina informací o přijatých a odeslaných paketech, konečně pak hardwarové přerušení a adresa karty. Přesná podoba výpisu se může lišit zejména podle typu rozhraní, na které se ptáme. Pokud například vypíšeme informace o PPP spoji (point-to-point), který se používá zejména při spojení pomocí modemů, GPRS karet a podobně, obdržíme následující výpis: $ ifconfig ppp0 ppp0
Link encap:Point-to-Point Protocol
3. Síťová rozhraní
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
31
inet addr:192.168.1.1 P-t-P:192.168.1.2 Mask: 255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:2279 errors:67 dropped:0 overruns:0 frame:0 TX packets:2454 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:2003221 (1.9 Mb) TX bytes:315300 (307.9 Kb) Vidíme, že jsme nedostali žádné informace o MAC adrese, přerušení a chybí ještě několik dalších informací. To nejdůležitější je ovšem na svém místě: IP adresa a maska připojené sítě. Příkaz ifconfig ovšem dovede nejen informovat o aktuálním stavu rozhraní, ale hlavně umí tato rozhraní konfigurovat. Konkrétní použití si ukážeme při představování jednotlivých způsobů připojení, které bude následovat. Obecná syntaxe vypadá následovně: ifconfig rozhraní parametry
Pokud chceme, aby se naše komunikace neomezovala jen na několik strojů ve vnitřní síti, musíme jeden ze strojů povýšit na bránu. To je počítač s více rozhraními, z nichž jedno se nachází v naší síti. Tento počítač pak dokáže směrovat pakety správným směrem. Je to tedy jakási ústředna. V naší síti bude mít třeba IP adresu 192.168.1.1. Druhé rozhraní může být například ADSL modemem připojeno k internetu. My budeme toto připojení používat pro komunikaci mimo naši vnitřní síť. Na obou stanicích (Adam a Bořek) nastavíme následující: $ route add default gw 192.168.1.1 eth0 Příkazem přidáme (add) standardní (default) bránu, která má IP adresu 192.168.1.1 a kterou máme na dosah za rozhraním eth0. Funguje to tedy asi takto: pokud Adamův počítač zjistí, že Bořek je ve vnitřní síti, bude komunikovat přímo s ním. Pokud ale něco odešle Cyrilovi, který je v jiné pobočce firmy a má jinou adresu sítě, předá Adam své pakety nastavené bráně, která už to nějak vyřídí, případně mu doručí odpověď. Co se děje za bránou vlastně Adama vůbec nezajímá. Toto pochopitelně není jediné použití routovací tabulky. Můžeme do ní přidat více záznamů pro různá rozhraní a sítě. $ route add -net 192.168.1.0 netmask 255.255.255.0 eth0 Tímto například našemu routeru řekneme, že síť 192.168.1.0 má masku 255.255.255.0 a že má pakety do této sítě směrovat na rozhraní eth0. Pokud chceme zjistit aktuální podobu naší routovací tabulky, použijeme jednoduše příkaz route: root@adam:~# route Kernel IP routing table Destination Gateway Genmask 192.168.1.0 * 255.255.255.0 loopback * 255.0.0.0 default 192.168.1.1 0.0.0.0
Flags UH U UG
Metric 0 0 0
Ref 0 0 0
Use 0 0 0
Iface eth0 lo eth0
3.3 Routovací tabulka
3. Síťová rozhraní
3.3 Routovací tabulka
32
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ ozornění Up
Pro plnohodnotné připojení stanice do sítě je potřeba znát tři údaje: IP adresu, masku sítě a adresu brány.
3.4 PLIP Zmínili jsme se rovněž o využití sériového/paralelního rozhraní počítače. Dnes je tento způsob zasíťování zcela překonaný a téměř každý počítač obsahuje síťovou kartu. I přesto se ovšem může někdy hodit, například jako nouzové řešení. známka Po
Pokud budete používat starší notebook nebo chcete jako terminál použít starou 486 bez síťové karty, je tento způsob stále nejjednodušší. Pro nějakou skutečně vážnou práci ale přesto doporučuji někde v šuplíku najít ethernetovou kartu.
PLIP je zkratka pro Parallel Line Internet Protocol, čili protokol pro paralelní linku. Realizace spojení je poměrně snadná. Paralelním kabelem propojíme oba stroje, na straně hosta (zmíněná 486) stačí jednoduše spustit následující sérii příkazů: $ insmod plip $ ifconfig plip0 192.168.1.2 pointopoint 192.168.1.1 up $ route add -net 192.168.1.0 netmask 255.255.255.0 plip0 První řádek přidá do paměti modul plip, který bude řídit celou komunikaci po paralelním kabelu. Druhý řádek pak provede aktivaci samotného spojení, po němž pak začnou procházet pakety. Posledním řádkem je upravena routovací tabulka tak, aby systém věděl, že může tímto směrem (na zařízení plip0) posílat pakety, které směřují do místní sítě.
Obrázek 3.1: Konektor paralelního kabelu
3. Síťová rozhraní
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
33
Na straně hostitele pak bude vše ještě jednodušší: $ insmod plip $ ifconfig plip0 192.168.1.1 pointopoint 192.168.1.2 up Jistě vám neušlo, že se vlastně jedná o dva řádky z prvního příkladu. Ve druhém z nich jsou pochopitelně přehozeny IP adresy. Host tedy v naší síti dostal adresu 192.168.1.2 a hostitel 192.168.1.1. Pokud je hostitel připojen dále do sítě třeba síťovou kartou, bude moci host transparentně přistupovat ke zbytku sítě. K tomu je ovšem potřeba ještě několik dalších kroků (tzv. routování), o kterých si budeme povídat později.
3.5 Ethernet Pravděpodobně nejpoužívanějším rozhraním při budování vaší sítě bude právě Ethernet. Jedná se o ustálené řešení, jehož výhodou je snadná dostupnost, jednoduchá implementace, široká škálovatelnost a nízká cena.
Pokud se jedná o velmi starý počítač, ani v takovém případě nemusíte zoufat. I pro zastaralé typy slotů je možné sehnat v bazarech síťové karty. Bohužel se budete muset spokojit s rychlostí 10 megabitů. Spíše byste se ale měli poohlédnout po něčem novějším.
Obrázek 3.2: Síťová karta do slotu PCI
3.5 Ethernet
3. Síťová rozhraní
Většina moderních počítačů je navíc síťovou kartou již vybavena, často se jedná dokonce o gigabitovou variantu. Ani u notebooků nebývá s Ethernetem problém. Pokud potřebujete v síti využít starší počítač, který příslušné rozhraní nenabízí, bez problému jej pořídíte za cenu, která obvykle nepřesahuje dvě stě korun.
34
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
Ethernetové prvky Co budete potřebovat? Pro vytvoření nejmenší sítě vám budou stačit dva počítače se síťovými kartami a správný kabel s konektory. Takový kabel je možné jednak koupit, ale pomocí speciálních kleští si jej můžete vyrobit i doma. Výhodou je možnost volby správné délky. V případě dvou síťových karet potřebujete takzvaný křížený kabel. Při jeho zapojení dojde k překřížení vysílacích a příjmových žil. Tím zajistíme, že to, co vyšle jedna karta, dojde k přijímací části karty druhé. Tímto způsobem jsme schopni propojit pouze dva počítače. Samozřejmě nám to nebrání v používání všech běžných služeb, což někdy bude i stačit. Jedná se ovšem o velmi minimalistické řešení a předpokládám, že budete chtít více, než jen propojit dva počítače. ozornění Up
V případě zapojení křížených/nekřížených kabelů se velmi často chybuje a uživatel se pak diví, jak je možné, že mu počítač nesíťuje. Pro jistotu tedy ještě jednou: křížený kabel používáme v případě zapojení karta/karta. Pokud propojujeme kartu a přepínač, používáme nekřížené kabely.
Budeme proto potřebovat ethernetový přepínač, takzvaný switch. Těch existuje celá řada, od těch malých domácích s několika porty až po profesionální řešení s desítkami přípojek. Přepínač pracuje jako ethernetová ústředna a dokáže inteligentně přeposílat pakety mezi počítači. Do přepínače zapojíme síťové kabely všech počítačů a ten se už postará a směrování komunikace mezi nimi. V tomto případě použijeme nekřížený kabel. Přepínače nahradily v sítích dříve často používané prvky zvané hub (vyslovujte „hab“). Ty postrádaly onu dávku inteligence a fungovaly jen jako prosté propojení jednotlivých kabelů. Co bylo vysláno z jednoho počítače, automaticky obdržely všechny ostatní.
Obrázek 3.3 Dvacetičtyřportový přepínač
Přepínače mají proti hubům několik nesporných výhod. Všechny stroje v síti se nemusejí dělit o jedno přenosové pásmo a komunikace dvou počítačů nijak neovlivňuje rychlost zbytku sítě. Další vlastnost přepínačů je důležitá zejména pro bezpečnost. Po kabelech totiž vysílají jen data, která patří počítačům, nacházejícím se na jejích koncích. V takto zapojené síti proto není možné odposlouchávat cizí komunikaci. Prostě se k vám přes přepínač nedostane.
3. Síťová rozhraní
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ
35
Nastavení karet Tolik stručně o samotném zapojení. Teď se podíváme na nastavení karet a na jejich komunikaci. Ethernetové karty jsou v Linuxu označovány jako eth0, eth1 až eth1. Pořadí označení karet je dáno pořadím zavádění modulů jádra, které se o karty starají. Obvykle jsou karty značeny podle pořadí slotů, v nichž jsou zasunuty. Bohužel se může číslování v jednotlivých distribucích lišit, v závislosti na inicializačních skriptech. Pokud je tedy vaše karta správně inicializována a dostala své označení, stačí provést jednoduché přidělení IP adresy: $ ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up Tímto příkazem tedy přiřadíme kartě označené jako eth0 adresu 192.168.1.1 a masku 255.255.255.0. V tuto chvíli už byste měli mít možnost komunikovat se zbytkem sítě. Pokud ne, zkontrolujte ještě routovací tabulku. Několikrát jsme se již také zmínili o pojmu MAC adresa a zatím jsme jej nijak nevysvětlili. MAC je zkratka pro Media Access Control, jedná se o hardwarovou adresu zařízení. Nejčastěji ji používají právě ethernetová zařízení pro adresaci svých požadavků. Zajišťuje adresaci na úrovni hardwarové vrstvy.
Každé zařízení má přidělenu jednoznačnou MAC adresu, kterou se hlásí ostatním. Rozsahy adres jsou přidělovány celosvětově jednotlivým výrobcům, a tak by nemělo docházet k jejich překryvání. Adresa MAC je obvykle napevno vypálena do ROM paměti síťového prvku. Adresa odesilatele i příjemce je součástí každého ethernetového paketu, který je vyslán do sítě. Podle nich se pak orientují přepínače, které pak dokáží přeposílat pakety na správné segmenty sítě. Rovněž koncová zařízení (obvykle síťové karty) odposlouchávají provoz na síti a systému oznamují jen ta data, která jsou označena správnou MAC adresou a týkají se konkrétního stroje. Sice jsem napsal, že je MAC adresa jedinečná a je vypálena napevno v paměti ROM, přesto zde existuje snadný způsob, jak ji u některých karet změnit. Samotný ifconfig má pro tento krok parametry. Při nastavení karty stačí přidat parametry hw ether adresa. Z tohoto důvodu není vhodné spoléhat na ochranu sítě pomocí MAC adres.
známka Po
ARP protokol ARP je zkratka pro Address Resolution Protocol, což je metoda hledání počítačů v ethernetových sítích. Bez tohoto protokolu bychom nebyli schopni komunikovat po lokální síti pomocí IP adres. Už jsme si řekli, že Ethernet používá pro adresaci jednotlivých zařízení takzvanou MAC adresu. Ta je pro každé zařízení jedinečná a její tvar je následující: 00:42:ED:B1:8A:F4. Jak vidíte, adresa není s IP kompatibilní a nemá s ní nic společného.
3.5 Ethernet
3. Síťová rozhraní
Technicky se jedná o 48bitové číslo, které se zapisuje jako šestice čísel v šestnáctkové soustavě v rozsahu 00 až FF. Zápis tedy vypadá například následovně: 00:05:D4:CA:2B:C8. Podle prvních tří čísel je možné rozeznat typ zařízení.
36
LINUX – POSTAVTE SI POČÍTAČOVOU SÍŤ známka Po
ARP nemusí být použit jen u Ethernetu, podobný překlad je prováděn i u dalších hardwarových vrstev, které používají rozdílné adresování zařízení. Používá se také v případě ARCnet, PROnet, AX.25 a NET/ ROM. Použití u Ethernetu ovšem naprosto převažuje, proto zde věnujeme prostor právě jemu.
Nás ovšem MAC v důsledku tolik nezajímají, potřebujeme se totiž domluvit na IP vrstvě, která je výše. Potřebujeme proto zjistit, který počítač v sítí má určitou IP adresu, na níž pak směřujeme komunikaci. K tomu nám slouží právě ARP protokol. Ten vytváří v paměti počítače vlastní převodní tabulku, která vedle sebe obsahuje MAC a IP adresy. Princip zjišťování MAC adres je v tomto případě klíčový. Host, který má zájem o komunikaci, vyšle do éteru všeobecnou výzvu pro cílový počítač. Použije paket, který nemá konkrétní MAC adresu a který tak doputuje ke všem počítačům v síti (takzvaný broadcast). Pokud druhá strana funguje, na vyslaný dotaz odpoví. V tu chvíli je jasné, ke které MAC adrese patří příslušná IP, tato informace je zanesena do tabulky a dále už komunikace probíhá pod správnými MAC adresami. K práci se zmíněnou tabulkou slouží příkaz arp, který po spuštění bez parametrů zobrazí celou tabulku. Tu je možné různě filtrovat, případně se ručně dotazovat na další zařízení. Příklad takové tabulky: $ arp Address 192.168.1.3 192.168.1.8 192.168.2.2 192.168.1.11 192.168.1.4 192.168.2.9 192.168.1.5 192.168.2.6 192.168.1.9
HWtype ether ether ether ether ether ether ether ether ether
HWaddress 00:1E:CE:B6:AE:45 00:F2:22:C5:6F:CC 00:10:3E:9D:FF:1A 00:A1:AC:A9:8E:3D 00:3B:0E:55:D6:0A 00:E5:8A:51:F5:B1 00:C1:9B:BA:B1:CD 00:D6:66:0E:A1:6F 00:10:BB:FF:33:D1
Flags Mask C C C C C C C C C
Iface eth0 eth0 eth1 eth0 eth0 eth1 eth0 eth1 eth0
První sloupec pochopitelně reprezentuje IP adresu cílového stroje, ve druhém můžete zjistit typ zařízení (v tomto případě Ethernet), dále už je k vidění hardwarová adresa (MAC), vidíme ještě příznak a nakonec rozhraní, ke kterému je dané zařízení připojeno. ozornění Up
Ne vždy musí vypadat ARP tabulka stejně, pravděpodobně ani nebude. Mění se podle právě připojených strojů a také podle toho, kdo s kým během poslední doby už komunikoval. V případě, že ráno zapnete počítač a přečtete si poštu, asi nemůžete očekávat, že v tabulce najdete počítač kolegy, který se ještě nedostavil. Jeho MAC se objeví až ve chvíli, kdy se k vám bude připojovat třeba přes FTP.
Ještě se vrátím k příznaku flag, který by mohl někoho zmást. Jedná se o interní příznak ARP a kromě C, které označuje kompletní (complete) záznam, může být také nastaven na permanentní záznam (M) nebo published (P). Možná přemýšlíte, k čemu by se vám mohla ARP tabulka hodit. Pravda je, že se jedná především o systémovou záležitost, ze které automaticky těží síťová vrstva a uživatel do toho
3. Síťová rozhraní
Toto je pouze náhled elektronické knihy. Zakoupení její plné verze je možné v elektronickém obchodě společnosti eReading.