OS Linux - 8. část: Připojení do sítě
Linux v síti
Na další stranuNávrat na titulní stranuVyhledávání informacíNa další stranu

Dnes se budeme naposledy zabývat jádrem operačního systému Linux, konkrétně připojením počítače s Linuxem k síti pomocí protokolu TCP/IP.

Jádro Linuxu se dá nakonfigurovat tak, aby bylo schopné komunikace v různých sítích (Ethernet, AppleTalk, Token Ring, FDD...) pomocí různých protokolů (TCP/IP, IPX, AppleTalk...). Protokol TCP/IP, tedy "přirozený" protokol sítě internet, je dnes nejrozšířenější a používá se jak pro připojení k celosvětové síti, tak k budování sítí lokálních. Vyšel z prostředí Unixu a je tedy logické, že jím disponuje i Linux.

K tomu, aby bylo možné připojit počítač k síti, musí být vybaven potřebným hardwarem (síťovou kartou, modemem, sériovým či paralelním portem...), jádro Linuxu musí obsahovat ovladač daného zařízení a podporu komunikačního protokolu. Dále je nutné správně nakonfigurovat síťové prostředí pomocí konfiguračních souborů v adresáři /etc. Nakonec budete samozřejmě potřebovat komunikační programy.

Jádro Linuxu
Pokud jste už zkoušeli kompilovat jádro, určitě jste při konfiguraci narazili na část týkající se sítě. Většina distribucí má jádro nakonfigurované tak, že by mělo fungovat s běžnými periferiemi, což se týká i síťové podpory. Kompilace jádra je tedy nutná jen v případě, že máte např. exotickou síťovou kartu nebo chcete jádro zbavit zbytečného kódu. Je třeba rozlišovat mezi samotnou podporou sítí a ovladači síťového hardwaru. Podporu sítě budete určitě potřebovat. Bez ní totiž nemusí pracovat ani programy, u kterých byste to nečekali, např. X-Server.

Další rozhodování závisí na druhu připojení k síti. V lokální síti budete potřebovat ovladač k síťové kartě, pro modemové připojení zase podporu protokolů SLIP nebo PPP. Podle frekvence používání lze ovladač zkompilovat jako modul nebo součást jádra.

Základní konfigurace
Pro správnou funkci musí každý počítač v prostředí TCP/IP znát svou adresu, síťovou masku, adresu pro broadcast a adresu alespoň jednoho dalšího počítače (gateway), který bude zprostředkovávat jeho komunikaci s okolím. Každá adresa je v protokolu TCP/IP reprezentovaná čtyřbajtovým číslem zapisovaným v desítkové soustavě, s jednotlivými bajty oddělenými tečkou, např. 12.174.81.234. Síťová maska rozlišuje, která část adresy bude interpretována jako lokální a která jako adresa jinde v internetu. Je to bitová maska - pokud se adresy shodují v místech jedniček síťové masky, jsou to lokální adresy.

Mějme například adresy 254.12.188.20, 254.12.188.13, 128.12.188.13 a příslušnou síťovou masku 255.255.255.0 (to je binárně 11111111.11111111.11111111.00000000). V tomto případě bude adresa v lokální síti vždy obsahovat první 3 bajty shodné, tedy hodnotu 254.12.188, poslední bajt rozlišuje počítače v lokální síti (těch může v našem případě být 255). První dvě adresy z našeho příkladu jsou tedy lokální, třetí je někde jinde a bude se k ní přistupovat přes gateway. Adresa pro broadcast je vlastně druhou adresou vašeho počítače. Všechny počítače připojené ke stejné lokální síti mají shodnou adresu pro broadcast, která slouží k přenášení informací společných pro všechny počítače v síti. Typická adresa pro broadcast by v našem případě vypadala následovně: 254.12.188.255.. Ještě bych měl asi vysvětlit, jakou adresu je třeba vybrat pro váš počítač. Nepočítáte-li s připojením k internetu (a máte intranet), můžete v rámci své lokální sítě používat libovolně zvolenou kombinaci čísel . Samozřejmě že každý počítač musí mít jedinečnou adresu. To platí i v rámci internetu, kde jsou adresy přidělovány centrálně a měl by vám ji sdělit váš poskytovatel připojení. Pro účely komutovaného připojení se často používá i dynamické přidělování adresy na začátku spojení se serverem.

Nettool
Hlavní okno pro konfiguraci sítě, záložka síťových rozhraní.

Číselné označování adres není pro člověka pohodlné, a proto byla pro počítače v internetu zavedena jmenná označení. Jsou to jména jako www.firma.com, www.u_nas_doma.cz apod. Struktura jmen je stromová, jednotlivé úrovně oddělují tečky. Jména nejvyšší úrovně jsou nejvíce napravo (com, net, cz, ru...) a úrovním se říká domény. V Čechách je tedy hlavní doménou cz. V rámci domén se definují další domény (cuni.cz, parlament.cz, kdovicojeste.cz...). A tak to může pokračovat v podstatě neomezeně dál. Přiřazování adres číselným adresám jmenným zajišťuje v každé doméně minimálně jeden Domain Name Server. Jeho adresu potřebujeme znát, pokud nechceme vše zadávat číselně.

Všechny uvedené adresy, plus jméno sítě a jméno počítače, se zadávají přímo při síťové instalaci Linuxu, takže pokud jste instalovali právě tímto způsobem, máte to už za sebou. Uživatelům RedHat Linuxu ulehčí konfiguraci program netcfg (dá se spustit z control-panelu), který hledá a ukládá informace v následujících konfiguračních souborech: /etc/resolv.conf Hlavní konfigurační soubor pro přiřazování číselných adres jménům. Definuje doménu, ke které váš počítač patří, adresy nameserverů a jména domén, která se mají prohledávat.

/etc/hosts.conf Soubor řídící proces přiřazování jmen. Jména je totiž možné hledat nejdříve v souboru /etc/hosts, který obsahuje dvojice adres a jména všech "důležitých" počítačů a potom teprve hledat pomocí nameserveru nebo naopak.

/etc/hosts Obvykle bude obsahovat jen informace o počítači, na kterém je. Může fungovat jako pojistka pro případ, že selže nameserver. /etc/networks Obdobný jako předchozí, ale pro jména sítě.

/etc/services Seznam jmen služeb přiřazených jednotlivým portům. (Port je číselné označení, které umožňuje udržovat dlouhodobé spojení pomocí protokolů TCP/IP. Např. WWW server je často připojen na port 80.)

/etc/protocols Databáze přiřazující jména protokolů jejich identifikačním číslům, např. pro potřebu programů, které vypisují síťové nastavení.

/etc/inetd.conf Konfigurační soubor démona inetd odpovědného za veškerá spojení TCP/IP. Říká, co se stane, když přijde požadavek na spojení s konkrétním portem (například, že se má předat WWW serveru, když přijde požadavek na spojení s portem 80).

/etc/ftpusers;/etc/hosts.alow; etc/hosts.deny Tyto tři soubory definují bezpečnostní pravidla pro vzdálený přístup k vašemu počítači.

K tomu, aby vám síť začala nějak fungovat,nepotřebujete upravovat všechny soubory. Začátečníkům rozhodně doporučuji, aby raději používali interaktivní nástroje typu netcfg. Podrobnější informace najdete v souboru NET-3-HOWTO.

Pro konfiguraci síťových rozhraní a směrovacích tabulek slouží programy ifconfig a route, o kterých se zmíníme v následující kapitole.

Připojení Linuxu přes modem
Chceme-li komunikovat s jiným počítačem pomocí telefonní linky, máme několik možností, které lze zhruba rozdělit na jednoduché a komplexnější. Jednoduchým způsobem je například komunikace pomocí emulátoru terminálu, s možností přenosu datových souborů protokolem Z-modem apod. Tato forma komunikace byla (a mnohdy stále je) používána při přístupu na služby BBS. Je to však spojení omezené na pouhé alfanumerické ovládání vzdálených aplikací, případně na jednoduchý přenos souborů.

Lepší možnost využití modemu a telefonní linky nabízí použití protokolu SLIP (Serial Line Internet Protocol), nebo ještě lépe PPP(Point-to-Point Protocol). Protokol SLIP má také možnost provádět kompresi některých přenášených dat (pak se označuje CSLIP). V obou případech se jedná o protokoly obalující staré známé TCP/IP a vytvářející z paketů seriový proud dat. Výběr protokolu závisí na mnoha okolnostech (nabídka vašeho poskytovatele připojení, nabídka vašeho operačního systému apod.), obecně však lze říci, že modernější PPP se prosazuje stále více. Z hlediska uživatelského však nelze pozorovat žádný rozdíl mezi tím, zda právě surfujete na lince "se SLIPem či PPPčkem".

nettols
Editace síťového rozhraní pro PPP komunikace - modemová část.

Oba zmíněné protokoly lze používat i pro komunikaci na kratší vzdálenosti, tedy bez použití modemu. Komunikačním médiem může být například seriový kabel, kdysi používaný programem LapLink (tedy tzv. nulový modem). Takto lze propojit počítače vzdálené několik desítek metrů. Jestli si vzpomínáte, tak program LapLink uměl při použití speciálního kabelu využívat i paralelní port. S tímto kabelem se "chytáte" i v Linuxu. Pro komunikaci přes paralelní rozhraní lze použít protokol PLIP. A jak tedy komunikaci rozběhnout?

Pokud používáte komutovanou linku, musíte nejprve vytočit telefonní číslo a počkat, až se modemy domluví na společné rychlosti komunikace. Dále je již postup shodný i pro připojení pomocí kabelu.

V první řadě musíte na obou stranách zkonfigurovat příslušné síťové rozhraní. Pro manipulaci s těmito rozhraními slouží program /sbin/ifconfig. Kromě rozhraní ethernetové karty (eth0, eth1 atd.) existuje možnost nakonfigurovat rozhraní pro SLIP (sl0, sl1,...), PPP (ppp0, ppp1,...) či PLIP (plip0, plip1,...) a další, která nejsou pro náš účel důležitá.

Druhým krokem je nastavení směrovací (routovací) tabulky. V té je popsáno, který počítač (zadaný IP adresou), resp. která síť (zadaná adresou sítě) je připojena na dané rozhraní. Konfiguraci a zobrazení směrovací tabulky provádí příkaz /sbin/route.

Od tohoto okamžiku by propojení mezi počítači mělo být v provozu. Nejjednodušší zkouškou funkce je zaslání několika paketů na druhou stranu pomocí programu ping. Pokud se pakety vracejí zpátky (což se projevuje výpisy na obrazovce), je vše v pořádku.

To vše musíte udělat v případě, že máte na starosti obě komunikující strany. Navíc lze tyto kroky provést automatizovaně pomocí různých nadstavbových programů. Zmíníme se o dvou z nich, programech dip a pppd.

Asi nejčastějším případem, který budete řešit, je připojení klientské, tedy vytočení telefonu vašeho poskytovatele, provedení nějakého přihlašovacího dialogu a start komunikace. Všechny tyto kroky lze provést pomocí jediného programu, nazývaného dip. Tato utilita může pracovat ve dvou režimech. Interaktivní režim se hodí pro testování nebo ruční připojení. Při normálním provozu je program ovládán pomocí skriptu, který popisuje, co se má v jednotlivých fázích připojování dělat. Program dip lze použít pro navazování spojení pomocí protokolu (C)SLIP i PPP. Jak vyrobit správný skript? Pokud používáte distribuci RedHat 5.0, máte vyhráno. Mezi grafickými administrátorskými nástroji naleznete totiž i program pro konfiguraci síťových rozhraní. Tento program při konfiguraci rozhraní slx a pppx generuje právě skripty pro dip, ale zdaleka neumí využít všech možností, které dip nabízí. Pokud tedy chcete mít sofistikovanější způsob připojení (například možnost vytáčení několika telefoních čísel, složitější dialog s druhou stranou při navazování spojení apod.), musíte napsat skript ručně. Bohatá manuálová stránka k programu dip vám jistě pomůže. Ukončení spojení se provede voláním příkazu dip -k.

Protože je dip univerzálně použitelný pro SLIP i PPP, nejsou bohužel možnosti nabízené protokolem PPP využity beze zbytku. Pro úplné využití možností PPP je vhodné použít program pppd, který pro vytočení telefonu a uskutečnění dialogu před spojením využívá externí program chat. Dialog s druhou stranou se pro chat popisuje formou "otázka - odpověď". Touto druhou stranou je nejprve váš modem a v druhé fázi počítač na druhé straně linky. Autentizace vašeho připojení k serveru je možná třemi různými způsoby:

nettool
Nastavení parametrů PPP spojení.

Stejně jako u protokolu SLIP lze použít klasické přihlášení do systému na druhé straně textově pomocí jména a hesla. Druhou možností je použít autentizaci pomocí PAP (Password Authentication Protocol). Zde není nutné klasické přihlašování (je možné) a dialog výměny jména a hesla provede pppd sám v netextové formě, přičemž informace čerpá ze souboru /etc/ppp/pap-secrets. Na rozdíl od textového přihlašování je možné přenos těchto informací kódovat, čímž se snižuje riziko odposlouchávání. Poslední a nejbezpečnější je autentizace pomocí CHAP (Cryptographic Handshake Authentication Protocol). Přenos identifikačních údajů je zde kódován, a navíc je vyžadována autentizace z obou stran, tedy od strany připojující i připojované, čímž je zajištěna oboustranně bezpečná komunikace. Informace pro CHAP jsou uloženy v souboru /etc/ppp/chap-secrets. Posledním souborem, jenž s pppd souvisí, je soubor konfiguračních přepínačů /etc/ppp/options, který může existovat ve více variantách - pro každou sériovou linku (případně modem) jiný (options.ttySxx). Příklad obsahu takového souboru (bez PAP/CHAP) následuje:

# /etc/ppp/options (bez PAP/CHAP)
# nespouštět pppd na pozadí
-detach
# použít modemové řídicí signály
modem
# zamknout sér.linku pomocí UUCP stylu
lock
# použít hardwarové řízení přenosu dat
crtscts
# vytvoř polož.default ve sm.tabulce
defaultroute
# nepoužívat žádné "escape" řídicí sekvence
asyncmap 0
# max. velikost přenášeného paketu
mtu 552
# max. velikost přijímaného paketu
mru 552
#konec

Oba programy, dip i pppd, potřebují pro uskutečnění spojení jednu zásadní věc. Tou je nějaký vnější pokyn, že tak mají učinit. Kromě toho, že tím pokynem může být příkaz uživatele, existuje možnost, jak spojení navazovat automaticky. Tuto funkci nabízí program diald, pracující na pozadí. V případě, že nějaký program projeví snahu komunikovat s počítačem, který není právě připojen, program diald toto připojení naváže. Dále kontroluje, zda se po dané lince provádí nějaká komunikace, a po určité době nečinnosti spojení opět ukončí. Tato doba je kompromisem mezi výší telefoního účtu a rychlostí odpovědi vzdáleného počítače. Nicméně pro uživatele se vzdálený počítač jeví jako stále připojený, což je mnohem příjemnější.

Martin Brachtl, Lukáš Mikšíček


Na další stranuNávrat na titulní stranuVyhledávání informacíNa další stranu
Copyright Vogel Publishing s.r.o. 1998
reprinted and translated with
the author's permission

Březen 1998 str.152