V této kapitole si projdeme kroky, které jsou nezbytné pro konfiguraci sítí na bázi protokolu TCP/IP. Začneme s přidělením IP-adresy, pak si projdeme nastavení rozhraní TCP/IP a představíme si několik užitečných nástrojů pro hledání problémů ve vaší síťové instalaci.
Většinu úkolů probraných v této kapitole budete muset obvykle provést pouze jedenkrát. Pozdější změny v konfiguračních souborech budou nutné jen v případech, kdy budete chtít do sítě přidat nový systém; nebo budete-li chtít systém kompletně překonfigurovat. Nicméně některé z příkazů pro konfiguraci protokolu TCP/IP musí být spouštěny pokaždé při zavádění systému. To se zpravidla provádí jejich voláním ze systémových skriptů v adresáři /etc/rc.
Část procedury týkající se sítí je většinou obsažena ve skriptu s názvem rc.net nebo rc.inet. Někdy se také můžete setkat se dvěma skripty s názvy rc.inet1 a rc.inet2.
První inicializuje síťovou část jádra systému, zatímco druhý spouští základní síťové služby a aplikace. V průběhu následujícího výkladu se budeme držet druhého zmíněného konceptu.
Dále si vysvětlíme akce prováděné skriptem rc.inet1, vlastní aplikace budou probrány v pozdějších kapitolách. Po přečtení této kapitoly byste měli umět napsat příslušnou posloupnost příkazů, která správně nakonfiguruje síť s protokolem TCP/IP. Dále byste měli nahradit všechny vzorové příkazy v souboru rc.inet1 svými vlastními příkazy a ujistit se, že dochází ke spouštění tohoto skriptu při zavádění, a restartovat počítač. síťové rc-skripty dodávané společně s oblíbenou verzí Linuxu vám mohou posloužit jako dobré příklady.
Některé z konfiguračních nástrojů balíku Net verze 2 spoléhají při komunikaci s jádrem na souborový systém proc. Jedná se o rozhraní, které umožňuje přístup k aktuálním informacím jádra za pomoci mechanismu, jenž je podobný souborovému systému. Když je systém proc připojen, můžete stejně jako u ostatních souborových systémů vypisovat jeho soubory nebo zobrazovat jejich obsah. Typickými položkami jsou soubory loadavg, které obsahují průměrné zatížení systému, nebo soubor meminfo, který zobrazuje aktuální obsazení fyzické paměti a využití odkládacích souborů.
K tomuto účelu přidává síťový kód adresář net. Obsahuje množství souborů s informacemi jako například tabulky ARP jádra systému, stav spojení na bázi TCP a směrovací tabulky. Většina síťových administrativních nástrojů čerpá informace z těchto souborů.
Souborový systém proc (někdy se používá označení procfs) je obvykle připojen při zavádění systému jako adresář /proc. Nejlépe toho dosáhnete přidáním následujícího řádku do souboru /etc/fstab:
# připojovací bod procfs
none /proc proc defaults
Potom ze svého skriptu /etc/rc spusšte příkaz "mount / proc".
V současné době je souborový systém procfs implicitně začleněn do většiny jader operačního systému. Není-li souborový systém procfs ve vašem jádru, objeví se například zpráva "mount: fs type procfs not supported by kernel". V tom případě budete muset překompilovat jádro systému a na dotaz, zda si přejete nainstalovat podporu souborového systému procfs, odpovědět "yes".
Používáte-li jednu z předkompilovaných distribucí Linuxu, bude velmi pravděpodobně obsahovat hlavní síťové aplikace a utility, a také kompletní sadu vzorových souborů. Jediným případem, kdy budete chtít získat a nainstalovat nové utility, je instalace nové verze jádra operačního systému. Protože to občas vede ke změnám v síťové vrstvě jádra systému, budete muset aktualizovat i základní konfigurační nástroje. To znamená přinejmenším rekompilaci binárních souborů, ale někdy budete potřebovat i nejnovější sady binárních souborů. Ty jsou obvykle distribuovány společně s jádrem a zabaleny v archívu net-XXX.tar.gz, kde XXX označuje číslo verze. Verze odpovídající Linuxu 1.0 je 0.32b, avšak poslední jádro operačního systému (v době vzniku této publikace to byla verze 1.1.12) vyžaduje verzi 0.32d.
Pokud si chcete sami zkompilovat a nainstalovat standardní síťové aplikace na bázi protokolu TCP/IP, získáte jejich zdrojový kód na většině linuxových serverů. Jsou to více či méně opravené verze programů z balíku Net-BSD nebo z ostatních zdrojů. Ostatní aplikace, jako například Xmosaic, xarchie nebo Gopher a klienti IRC, je nutné získat samostatně.. Budete-li dodržovat příslušné instrukce, zkompiluje se většina z těchto aplikací takříkajíc po vytažení z krabice.
Oficiální systém pro balík Net-3 najdete na adrese sunacm.swan.ac.uk, jehož zrcadlem je sunsite.unc.edu a příslušný adresář se jmenuje system/Network/sunacm. Poslední aktualizace balíku Net-2e a jeho binární soubory jsou k dispozici na adrese ftp.aris.com. Balík BSD od Matthiase Urlichse - odvozený ze síťového kódu - můžete získát na adrese ftp.ira.uka.de v adresáři /pub/system/linux/netbsd.
Ve zbytku této knihy si dovolím uvést nový příklad, jenž je oproti případu Groucho Marx University méně složitý, ale může se více podobat problémům, s nimiž se ve skutečnosti setkáte. Vezměme si společnost Virtual Brewery, což je malá společnost, která, jak název napovídá, vaří virtuální pivo. Aby mohli virtuální pivovarníci efektivněji spravovat svůj obchod, chtějí mít své počítače propojeny do sítě. Všechny počítače jsou typu PC se šikovným operačním systémem Linux verze 1.0.
Na stejném podlaží na druhém konci budovy existuje obchod Virtual Winery, který s pivovarem velmi blízce spolupracuje. Mají svůj vlastní Ethernet. Tyto dvě společnosti chtějí mít zcela přirozeně z provozních důvodů své sítě propojeny. Nejprve chtějí nastavit bránu, jenž bude doručovat datagramy mezi těmito dvěma podsítěmi. Dále budou chtít být v kontaktu s okolním světem spojením typu UUCP, pomocí nějž budou přijímat konference a poštu. Z dlouhodobého hlediska budou chtít mít nastavené spojení typu SLIP, aby se mohli příležitostně připojit na Internet.
Většina, ne-li všechny aplikace, spoléhají na to, že je název místního hostitele nastaven na nějakou rozumnou hodnotu. To se obvykle provede při zavádění pomocí příkazu hostname.
Chcete-li nastavit název hostitele například na name, zadejte:
# hostname name
U tohoto příkazu je běžné používat nekvalifikované názvy hostitele bez jakéhokoliv názvu domény. Například hostitelé ve Virtual Brewery se mohou nazývat vale.vbrew.com, vlager.vbrew.com atd. Toto jsou oficiální, plně kvalifikované názvy domén. Názvy jejich místních hostitelů bude tvořit pouze první část z názvu, například vale. Protože je však název lokálního hostitele často používán pro vyhledání IP-adresy hostitele, musíte se ujistit, že knihovna resolveru je schopná vyhledat IP-adresu hostitele. To obvykle znamená, že musíte název hostitele specifikovat v souboru /etc/hosts (viz níže). Někteří lidé doporučují používat příkaz domainname. Tento příkaz se používá pro informování jádra operačního systému o názvu domény zbývající části FQDN. U tohoto způsobu byste měli pro opětovné získání FQDN zkombinovat výstupy příkazů hostname a domainname. Tento způsob je však jen z poloviny správný. Příkaz domainname se všeobecně používá k nastavení NIS-domény hostitele, která může být zcela jiná než DNS-doména, ke které patří váš hostitel. Doména NIS je probírána v kapitole 10.
Chcete-li nakonfigurovat síťový software na svém hostiteli, který není určen pro práci v síti (aby na něm mohl být například spouštěn software síťových konferencí INN), můžete tuto stať s klidným svědomím přeskočit, protože k tomu budete potřebovat pouze IP-adresu svého zpětnovazebného rozhraní, a ta je vždy 127.0.0.1.
Mírně složitější je tento problém v reálných sítích typu Ethernet. Chcete-li připojit svého hostitele k existující síti, musíte požádat jejího správce, aby vám v této síti přidělil IP-adresu. Nastavujete-li celou síť sami, musíte si také sami přidělit IP-adresy, což probereme později.
Hostitelé, kteří patří do místní sítě, by měli obvykle sdílet adresy ze stejné logické sítě IP.
Z toho důvodu musíte přidělit síťovou IP-adresu. Máte-li několik fyzických sítí, musíte jim bui přidělit odlišná síťová čísla, anebo musíte použít podsítě, čímž rozdělíte svůj rozsah IPadres do několika podsítí.
Není-li vaše síť připojena k Internetu, můžete si vybrat libovolnou (platnou) adresu sítě. Pouze se musíte ujistit, že jste vybrali jednu ze tříd A, B nebo C, protože jinak by pravděpodobně vše nefungovalo zcela správně. Plánujete-li v blízké době připojení k Internetu, měli byste si už nyní obstarat oficiální IP-adresu. Nejlépe je požádat o pomoc svého poskytovatele síťových služeb. Pokud si chcete obstarat číslo sítě jenom proto, že se někdy v budoucnosti budete chtít připojit na Internet, vyžádejte si na adrese hostmaster@internic.net formulář Network Address Application Form.
Budete-li spravovat několik ethernetových sítí (nebo jiných sítí, jakmile pro ně budou dostupné ovladače), musíte rozdělit vaši síť na podsítě. Všimněte si, že vytváření podsítí je požadováno pouze v případě, že vlastníte více než jednu vysílací síť (broadcast network); nepočítaje v to spojení pomocí protokolu PPP. Máte-li například jeden Ethernet a jedno nebo více spojení s vnějším světem pomocí protokolu SLIP, nepotřebujete ve své síti vytvářet podsítě. Důvod bude objasněn v kapitole 7.
Síťový správce pivovaru požádal například centrum NIC o přidělení čísla sítě třídy B, obdržel adresu 191.72.0.0. Aby si správce přizpůsobil své dva Ethernety k obrazu svému, rozhodl se použít osm bitů z části hostitele jako doplňující bity podsítě. Tato úprava poskytla části hostitele dalších osm bitů, což dovoluje až 254 hostitelů v každé podsíti. Dále správce přidělil pivovaru číslo podsítě 1 a vinárně číslo podsítě 2. Tedy jejich příslušné síťové adresy jsou 191.72.1.0 a 191.72.2.0. Maska podsítě je 255.255.255.0.
Bráně vlager, což je brána mezi dvěma sítěmi, bylo u obou podsítí přiděleno číslo hostitele 1, takže její IP-adresy jsou 191.72.1.1, resp. 191.72.2.1. Obrázek 5.1 ukazuje dvě podsítě a bránu.
Všimněte si, že v tomto případě používáme z ilustračních důvodu síť třídy B; síť třídy C by byla mnohem realističtější. U nového síťového kódu není vytváření podsítí limitováno na celé bajty, takže i třída C může být rozdělena do několika podsítí. Dva bity z části hostitele byste mohli například použít na síťovou masku, čímž byste získali čtyři možné podsítě s až 64 hostiteli na každé z nich.
Po vytvoření podsítí byste měli za pomoci souboru /etc/hosts připravit několik jednoduchých typů rozlišení názvu hostitele. Pokud nehodláte k rozlišení adres používat DNS nebo NIS, musíte do souboru hosts vložit všechny hostitele.
Dokonce i v případě, kdy chcete používat DNS nebo NIS při normálních operacích, budete chtít mít v souboru /etc/hosts ze všech názvů hostitelů alespoň nějaké skupiny hostitelů. A nějaký druh rozlišení názvů hostitelů budete požadovat i tehdy, nepoběží-li žádné síťové rozhraní (například při zavádění). Tento způsob není vhodný jen z kvůli většímu pohodlí, ale umožní vám také používat ve skriptech rc.inet symbolické názvy hostitelů. Takže při změně IP-adres vám postačí pouze zkopírovat aktualizovaný soubor hosts na všechny počítače a nemusíte se zatěžovat editací velkého počtu souborů.rc Do souboru hosts obvykle přidáte všechny místní názvy hostitelů a jejich adresy a jsou-li používány NIS-servery nebo nějaké brány, přidáte i je.
V průběhu úvodního testování byste se měli také ujistit, že váš resolver používá pouze informace ze souboru hosts. Software DNS nebo NIS může mít u sebe ukázkové soubory, které, pokud je použijete, mohou produkovat zvláštní výsledky. Chcete-li, aby všechny aplikace při vyhledání IP-adresy hostitele používaly výhradně soubor /etc/hosts, musíte upravit soubor /etc/host.conf. Všechny řádky, které začínají klíčovým slovem order, označte jako komentáře. Provedete to tak, že na první pozici příslušného řádku vložíte znak (#). Dále vložte následující řádek:
order hosts
Konfigurace knihovny resolveru bude detailně rozebrána v kapitole 6.
Soubor hosts obsahuje na každém řádku jednu položku, která se skládá z IP-adresy, názvu hostitele a z nepovinného seznamu přezdívek názvu hostitele. Jednotlivá pole jsou vzájemně oddělena mezerami nebo tabulátory a pole s adresou musí začínat ve sloupci jedna. Cokoliv, co následuje za znakem #, je považováno za komentář a je ignorováno.
Názvy hostitelů mohou být bui plně kvalifikované, nebo relativní vzhledem k místní doméně. U serveru vale zadáte obvykle plně kvalifikovaný název vale.vbrew.com a do souboru hosts napíšete pouze název vale. Tím bude definován jak oficiální název, tak i kratší místní název.
Následující příklad ilustruje, jak by mohl vypadat soubor hosts ve společnosti Virtual Brewery. Jsou v něm obsaženy dva speciální názvy, vlager-if1 a vlager-if2, které poskytují adresy pro obě rozhraní používaná bránou vlager.
#
# Soubor hosts pro společnosti
# Virtual Brewery/Virtual Winery
#
# IP lokální jméno plně kvalifikované doménové jméno
#
127.0.0.1 localhost
#
191.72.1.1 vlager vlager.vbrew.com
191.72.1.1 vlager-if1
191.72.1.2 vstout vstout.vbrew.com
191.72.1.3 vale vale.vbrew.com
#
191.72.2.1 vlager-if2
191.72.2.2 vbeaujolais vbeaujolais.vbrew.com
191.72.2.3 vbardolino vbardolino.vbrew.com
191.72.2.4 vchianti vchianti.vbrew.com
#
Stejně jako u IP-adres hostitelů budete také někdy chtít použít symbolický název pro číslo sítě. Proto má soubor hosts doprovodný soubor nazvaný /etc/networks, který mapuje názvy sítí na čísla sítí a obráceně. Ve společnosti Virtual Brewery můžeme nainstalovat následující soubor networks:
# soubor /etc/networks pro společnost Virtual Brewery
brew-net 191.72.1.0
wine-net 191.72.2.0
Po nastavení hardwaru, které jsme probírali v předchozí kapitole, musíte o těchto zařízeních říci síťovému softwaru jádra. K nastavení síťových rozhraní a inicializaci směrovací tabulky se používá několik příkazů. Tyto úkoly se obvykle provádějí při každém startu počítače ze skriptu rc.inet1. Základní konfigurační nástroje se nazývají ifconfig (kde "ifin znamená rozhraní - interface) a route.
Příkaz ifconfig se používá pro zpřístupnění rozhraní síťové vrstvě jádra. Tento proces v sobě zahrnuje přidělení IP-adresy, některých parametrů a aktivaci rozhraní, někdy označovanou jako tzv. "uchopení". Výraz "aktivní" znamená, že jádro vysílá a přijímá datagramy pomocí rozhraní IP. Nejjednodušší způsob aktivace rozhraní je následující:
ifconfig interface ip-address
výše uvedený příkaz přidělí IP-adresu ip-address rozhraní interface a aktivuje ho.
Všechny ostatní parametry jsou nastaveny na své implicitní hodnoty. Například implicitní maska podsítě je odvozena z IP-adresy podle třídy sítě, například adresa 255.255.0.0 odpovídá adrese třídy B. Příkaz ifconfig je detailně popsán na konci této kapitoly.
Příkaz route umožňuje přidávat nebo odstraňovat směrování ze směrovací tabulky jádra systému. Může být vyvolán následujícím způsobem route [add|del] target kde argumenty add a del určují, zda se bude směrování do cíle target přidávat nebo se z něj bude odstraňovat.
Jedním z prvních aktivovaných rozhraní je zpětnovazebné rozhraní:
# ifconfig lo 127.0.0.1
Občas zjistíte, že se místo IP-adresy používá fiktivní název hostitele localhost. Příkaz ifconfig vyhledá příslušný název v souboru hosts, kde by měl být deklarován pro adresu 127.0.0.1:
# Příklad záznamu pro localhost v /etc/hosts
localhost 127.0.0.1
Chcete-li si prohlédnout konfiguraci rozhraní, spusťte příkaz ifconfig a jako argument zadejte název tohoto rozhraní:
$ ifconfig lo
lo Link encap Local Loopback
inet addr 127.0.0.1 Bcast [NONE SET] Mask 255.0.0.0
UP BROADCAST LOOPBACK RUNNING MTU 2000 Metric 1
RX packets 0 errors 0 dropped 0 overrun 0
TX packets 0 errors 0 dropped 0 overrun 0
Jak vidno, zpětnovazebnému rozhraní byla přidělena síťová maska 255.0.0.0, protože adresa 127.0.0.1 je adresou třídy A. Dále si můžete všimnout, že rozhraní nemá nastavenu vysílací adresu, protože ta nemá u zpětnovazebného rozhraní žádný význam. Pokud však budete na vašem hostiteli provozovat démona rwhod, budete muset nastavit relační adresu zpětnovazebného zařízení, protože jinak by démon rwhod nefungoval správně. Nastavení broadcast adresy je vysvětleno dále ve stati "Vše o příkazu ifconfig".
Nyní si můžete začít se svou miniaturní sítí experimentovat. Zatím však ve směrovací tabulce stále chybí položka, která řekne protokolu IP, že může toto rozhraní používat pro směrování k cílové adrese 127.0.0.1. Tu přidáte následujícím příkazem:
# route add 127.0.0.1
Opět můžete použít namísto IP-adresy název hostitele localhost.
Dále byste měli zkontrolovat, že vše správně funguje, například pomocí použití příkazu ping. Příkaz ping je síťovým ekvivalentem sonaru a je používán k ověření dostupnosti příslušné adresy a na měření prodlev, které se vyskytují při posílání datagramu tam a zpět. Čas požadovaný na tuto operaci je často uváděn pod označením round trip.
# ping localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=32 time=1 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=32 time=1 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=32 time=1 ms
^C
--- localhost ping statistics --3 packets transmitter, 3 packets received, 0% packet loss
round-trip min/avg/max = 0/0/1 ms
Spustíte-li příkaz ping výše uvedeným způsobem, bude se tento příkaz snažit posílat pakety tak dlouho, dokud ho uživatel nepřeruší. Symbol ^C označuje místo, kde byla stisknuta kombinace kláves Ctrl C.
Výše uvedený příklad ukazuje, že pakety pro adresu 127.0.0.1 jsou doručovány správně a odpovědi se vracejí příkazu ping zpět téměř okamžitě. To naznačuje, že jste při svém prvním nastavení síťového rozhraní uspěli. Pokud se výstup příkazu ping nepodobá výše uvedenému výpisu, pak je tu problém. Zkontrolujte každou chybu, která naznačuje, že některý ze souborů nebyl korektně nainstalován.
Zkontrolujte, zda jsou binární soubory příkazů ifconfig a route kompatibilní s vámi používanou verzí jádra operačního systému a hlavně se podívejte, zda bylo jádro zkompilováno s povolením síťových služeb (to poznáte podle přítomnosti adresáře /proc/net). Pokud obdržíte chybovou zprávu "Network unreachable", pak bude zřejmě chyba v příkazu route.Ujistěte se, že používáte stejnou adresu, kterou jste předali příkazu ifconfig.
Výše popsané kroky stačí k tomu, abyste mohli na samostatném hostiteli používat síťové aplikace. Jakmile přidáte do souboru rc.inet1 výše uvedené řádky a ujistíte se, že jsou oba soubory rc.inet spouštěny z adresáře /etc/rc, můžete počítač restartovat a vyzkoušet různé aplikace. Například příkaz "telnet localhost" by měl s vaším hostitelem navázat spojení typu telnet, které vám nabídne přihlašovací výzvu.
Zpětnovazebné rozhraní je ale užitečné nejen jako příklad vhodný pro knihy o sítích nebo jako testovací prostředek při vývoji. Ve skutečnosti ho používají některé aplikace v průběhu normálních operací.
Proto ho musíte nakonfigurovat vždy, bez ohledu na to, zda váš počítač je či není připojen k síti.
Konfigurace ethernetového rozhraní má s nastavením zpětnovazebného rozhraní mnoho společného, pouze ve spojitosti s podsítěmi vyžaduje několik dalších parametrů.
Ve společnosti Virtual Brewery jsme rozdělili síť IP, která byla původně sítí třídy B, na podsítě, které jsou třídy C. Aby se v této změně vaše rozhraní vyznalo, měl by příkaz ifconfig vypadat následovně:
# ifconfig eth0 vstout netmask 255.255.255.0
Tento příkaz přiřadí rozhraní eth0 IP-adresu vstout (adresa 191.72.1.2). Pokud bychom vynechali síťovou masku, pak by si ji příkaz ifconfig odvodil z třídy sítě IP, ze které vyplyne síťová maska 255.255.0.0. Rychlé ověření vypíše následující text:
# ifconfig eth0
eth 0 Link encap 10 Mps Ethernet Hwaddr 00:00:C0:90:B3:42
inet addr 191.72.1.2 Bcast 191.72.1.255 Mask 255.255.255.0
UP BROADCAST RUNNING MTU 1500 Metric 1
RX packets 0 errors 0 dropped 0 overrun 0
TX packets 0 errors 0 dropped 0 overrun 0
Můžete si všimnout, že příkaz ifconfig automaticky nastavil vysílací adresu (výše uvedené pole Bcast) na obvyklou hodnotu, což je číslo hostitelovy sítě se všemi nastavenými bity v části hostitele. Také velikost přenosové jednotky (maximální velikost ethernetového paketu, kterou bude generovat jádro pro toto rozhraní) byla nastavena na maximální hodnotu 1500 bajtů. Všechny tyto hodnoty mohou být změněny pomocí speciálních voleb, jež budou popsány dále.
Podobně jako tomu bylo u případu zpětnovazebného rozhraní, musíte nyní nainstalovat směrovací data, která budou jádro informovat o síti, jež je dosažitelná pomocí rozhraní eth0. Pro firmu Virtual Brewery byste měli vyvolat příkaz route následujícím způsobem:
# route add -net 191.72.1.0
Na první pohled to vypadá trochu magicky, protože není zcela zřejmé, jak příkaz route zjistí, přes které rozhraní má směrovat. Náš trik je ale celkem jednoduchý: jádro operačního systému si ověří všechna rozhraní, která byla v minulosti nakonfigurována a porovná cílovou adresu (v tomto případě 191.72.1.0) se síťovou částí adresy rozhraní (to znamená, že bude po bitech porovnávat hodnotu získanou z adresy rozhraní a síťové masky). Jediné vyhovující rozhraní bude eth0.
K čemu tedy slouží volba -net? Používá se z toho důvodu, že příkaz route umí obsluhovat jak směrování do sítí, tak i směrování k jednotlivým hostitelům (jak jsme si ukázali u příkladu s názvem localhost). Je-li mu předána adresa v tečkové notaci, pokusí se příkaz route z prohlédnutých bitů hostitelské části odhadnout, zda se jedná o síť nebo o název hostitele. Je-li hostitelská část adresy rovna nule, bude příkaz route předpokládat, že se jedná o síť, v opačném případě ji bude považovat za adresu hostitele. Takto si bude příkaz route myslet, že je adresa 191.72.1.0 adresou hostitele a nikoliv číslem sítě. Příkaz route nemůže tušit, že používáme podsítě. Tuto informaci mu musíme sdělit explicitně pomocí argumentu -net.
Samozřejmě, že vypisování výše uvedeného příkazu route je únavné a člověk při něm může udělat chyby. Mnohem pohodlnější je použít názvy sítí, které jsme již nadefinovali v souboru /etc/networks. Tento způsob výrazně zlepší čitelnost příkazu route; dokonce můžeme vynechat i argument -net, protože příkaz route již bude vědět, že adresa 191.72.1.0 označuje síť.
# route add brew-net
Po skončení základních konfiguračních kroků se budete chtít ujistit, že vaše ethernetové rozhraní opravdu funguje správně. Z Ethernetu si vyberte hostitele, například vlager, a napište:
# ping vlager
PING vlager: 64 byte packets
64 bytes from 191.72.1.1: icmp_seq=0. time=11. ms
64 bytes from 191.72.1.1: icmp_seq=1. time=7. ms
64 bytes from 191.72.1.1: icmp_seq=2. time=12. ms
64 bytes from 191.72.1.1: icmp_seq=3. time=3. ms
^C
----vstout.vbrew.com PING Statistics
4 packets transmitted, 4 packets received, 0% packet loss
round-trip (ms) min/avg/max = 3/8/12
Pokud neuvidíte výstup podobný výše uvedenému, bude zřejmě něco v nepořádku. Dojde-li k neobvyklé ztrátě paketů, bude zřejmě chyba na straně hardwaru, například špatné nebo chybějící terminátory apod. Pokud nepřijmete vůbec žádné pakety, měli byste si zkontrolovat konfiguraci rozhraní pomocí příkazu netstat. Statistika paketů zobrazená příkazem ifconfig by vám měla říci, zda vůbec byly nějaké pakety poslány rozhraní. Máte-li také přístup ke vzdálenému hostiteli, měli byste zkontrolovat statistiku rozhraní i na tomto počítači.
Takto můžete přesně určit, kde se pakety ztratily. Kromě toho byste si měli pomocí příkazu route zobrazit směrovací informace a zkontrolovat, zda mají oba hostitelé správnou položku směrování. V případě, že je příkaz route vyvolán bez jakýchkoliv dalších argumentů, vytiskne kompletní směrovací tabulku jádra (parametr -n pouze zobrazí adresy v tečkové notaci, bez uvedení parametru zobrazí příkaz route název hostitele):
# route -n
Kernel routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
127.0.0.1 * 255.255.255.255 UH 1 0 112 lo
191.72.1.0 * 255.255.255.0 U 1 0 10 eth0
Podrobný popis těchto polí najdete dále ve stati Kontrola pomocí příkazu netstat. Sloupec Flag obsahuje seznam všech symbolů příslušejících každému rozhraní. Aktivní rozhraní mají vždy nastaven symbol U, symbol H naznačuje, že cílová adresa patří hostiteli. Je-li symbol H zobrazen u směrování, míníme tím směrování sítě, pak je nutné společně s příkazem route specifikovat i volbu -net. To, zda se zadané směrování vůbec používá, zjistíte na základě pole Use, které najdete ve druhém sloupci zprava. Jeho hodnota by se mezi dvěma voláními příkazu ping měla zvyšovat.
V předešlé stati jsme probrali pouze nastavení hostitele v jediné síti Ethernet. Poměrně často se však setkáváme se sítěmi, které jsou vzájemně propojeny pomocí brán. Tyto brány mohou spojovat dva nebo více Ethernetů, ale mohou také poskytovat spojení s okolním světem, a samozřejmě také s Internetem. Abyste mohli využít služeb brán, musíte síťové hladině poskytnout doplňující směrovací informace.
Například Ethernety ve společnostech Virtual Brewery a Virtual Winery jsou propojeny pomocí takovéto brány, tuto funkci konkrétně zastává hostitel vlager. Předpokládáme, že hostitel vlager již byl nakonfigurován, tudíž nám zbývá přidat pouze další položku do směrovací tabulky hostitele vstout, která řekne jádru operačního systému, že všichni hostitelé sítě virtuální vinárny jsou dosažitelní přes bránu vlager. Patřičným zaklínadlem příkazu route je klíčové slovo gw, které sdělí příkazu route, že následující argument označuje bránu.
# route add wine-net gw vlager
Samozřejmě, že každý hostitel v síti vinárny, se kterým chcete hovořit, musí mít odpovídající směrovací položku pro síť pivovaru. V opačném případě byste mohli posílat data pouze z hostitele vstout na hostitele vbardolino, avšak veškeré odpovědi vrácené hostitelem vbardolino by putovaly do koše.
Tento příklad popisuje pouze bránu, která přenáší pakety mezi dvěma izolovanými Ethernety. Nyní budeme předpokládat, že brána vlager je také připojena k Internetu (například pomocí doplňujícího spojení s využitím protokolu SLIP). V tom případě budeme po bráně vlager požadovat, aby se starala o datagramy putující do libovolné cílové sítě, která není identická se sítí pivovaru. To lze provést tak, že označíme bránu vlager jako implicitní bránu pro hostitele vstout:
# route add default gw vlager
Název sítě default je zkratkou adresy 0.0.0.0, která označuje implicitní směrování. Tento název nemusíte přidávat do souboru /etc/networks, protože je zabudován v příkazu route.
Když po aplikaci příkazu ping na hostitele, který se nachází za jednou nebo více branami, dojde k velké ztrátě paketů, může to ukazovat na příliš přeplněnou síť. Ztráta paketů není ani tak způsobena odlišnostmi zařízení, jako spíše dočasným ipiekovým zatížením předávajících hostitelů, což způsobuje z jejich strany prodlevy případně ztrátu příchozích datagramů.
Konfigurace počítače pro posílání paketů mezi dvěma Ethernety je poměrně přehledná. Budeme předpokládat, že jsme zpět u brány vlager, která je vybavena dvěma ethernetovými kartami, z nichž každá je spojena s jednou ze dvou sítí. Pak stačí odděleně nakonfigurovat obě rozhraní, přidělit jim jejich vlastní IP-adresy a to je vše.
Je rozumné přidat informace o obou rozhraních do souboru hosts, protože takto získáme pro tato dvě rozhraní šikovné názvy:
191.72.1.1 vlager vlager.vbrew.com
191.72.1.1 vlager-if1
191.72.2.1 vlager-if2
Sekvence příkazů pro nastavení obou rozhraní je následující:
# ifconfig eth0 vlager-if1
# ifconfig eth1 vlager-if2
# route add brew-net
# route add wine-net
5.7.5 Rozhraní PLIP
Pokud ke spojení dvou počítačů používáte spojení pomocí protokolu PLIP, budou jednotlivá nastavení mírně odlišná od nastavení použitých při konfiguraci Ethernetu. Spojení pomocí protokolu PLIP se také někdy nazývá spojením typu point-to-point, protože se na rozdíl od většiny sítí týká pouze dvou hostitelů ("bodů").
Jako příklad budeme uvažovat počítač v provedení laptop, který mají někteří zaměstnanci společnosti Virtual Brewery. Ten je spojen s bránou vlager prostřednictvím protokolu PLIP.
Vlastní laptop se nazývá vlite a má pouze jediný paralelní port. Při zavádění bude tento port registrován jako rozhraní plip1. Abyste spojení aktivovali, musíte nakonfigurovat rozhraní plip1 za pomoci následujících příkazů:
# ifconfig plip1 vlite pointopoint vlager
# route add default gw vlager
První příkaz nastavuje rozhraní a sděluje jádru operačního systému, že se jedná o spojení typu point-to-point, u něhož má vzdálená strana přidělenu adresu vlager. Druhý řádek nainstaluje implicitní směrování s využitím hostitele vlager jako brány. Na straně brány vlager je nutná podobná konfigurace, která spojení zaktivuje (volání příkazu route není zapotřebí):
ifconfig plip1 vlageg pointopoint vlite
Zajímavé je, že rozhraní plip1 brány vlager nemusí mít zvláštní IP-adresu, ale může mu být také přidělena adresa 191.72.1.1.
Nyní máme vyřešeno směrování z počítače laptop do sítě pivovaru; ale stále ještě nám chybí směrovací cesta z libovolného hostitele pivovaru na počítač vlite. Jeden z poměrně nešikovných způsobů spočívá v přidání konkrétního směrování do každé směrovací tabulky hostitele, v níž přiřadíte hostiteli vlager funkci brány k hostiteli vlite.
# route add vlite gw vlager
Stojíte-li již tváří v tvář problému s dočasným směrováním, je mnohem výhodnijší použít dynamické směrování. Jeden z možných způsobů spočívá v použití směrovacího démona gated, který musí být nainstalován na každém hostiteli v síti, aby si mohli dynamicky předávat směrovací informace. Daleko nejjednodušší způsob však počítá s využitím proxy ARP. Při nainstalovaném proxy ARP bude brána vlager odpovídat na libovolné dotazy ohledně hostitele vlite zasláním své vlastní ethernetové adresy. Výsledkem této funkce bude přivolání všech paketů určených pro hostitele vlite na bránu vlager, která je potom pošle na laptop.
K proxy ARP se vrátíme ve stati Kontrola tabulek ARP dále.
Budoucí verze balíku Net-3 bude obsahovat nástroj zvaný plipconfig, který bude umožňovat nastavení IRQ používaného paralelního portu. Později by mohl být nahrazen obecnějším příkazem ifconfig.
Ačkoliv jsou spojení typu SLIP nebo PPP pouze jednoduchými spojeními typu point-to-point, podobně jako u spojení typu PLIP je vhodné v souvislosti s nimi uvést některé informace.
Uskutečnění spojení typu SLIP obvykle vyžaduje zavolání vzdáleného počítače pomocí modemu a nastavení sériové linky do režimu SLIP. Podobně se používá i protokol PPP. Nástroje potřebné pro konfiguraci spojení SLIP a PPP budou popsány v kapitolách 7 a 8.
Fiktivní rozhraní je skutečně trošku exotické, nicméně je docela užitečné. Jeho hlavní význam souvisí se samostatnými hostiteli a počítači, jejichž jediné síťové IP-spojení je připojení pomocí modemu. Později se ve skutečnosti začalo mnohem více prosazovat i u samostatných hostitelů.
Dilema u samostatných hostitelů spočívá v tom, že mají aktivní pouze jediné síťové zařízení, a to konkrétně zpětnovazebné zařízení. To má obvykle přidělenu adresu 127.0.0.1. Nicméně v určitých situacích potřebujete posílat data na oficiální IP-adresu místního hostitele. Například, uvažujme laptop vlite, jenž byl během trvání tohoto příkladu odpojen od všech sítí. Aplikace na laptopu vlite může chtít poslat nějaká data na vlastního hostitele vlite. Prohledá-li na počítači vlite soubor /etc/hosts/, obdrží IP-adresu 191.72.1.65, tudíž se aplikace pokusí na tuto adresu poslat data. Protože jediným aktivním rozhraním je pouze zpětnovazebné rozhraní, nemůže jádro operačního systému vědět, že se tato adresa ve skutečnosti vztahuje na něj! Následně jádro operačního systému zničí datagram a vrátí aplikaci chybovou hlášku.
V tomto bodě vstupuje do hry fiktivní rozhraní. Vyřeší dilema tím, že bude sloužit jako pozměněné zpětnovazebné rozhraní. V případě laptopu vlite byste mu měli přidělit adresu 191.72.1.65 a přidat směrování hostitele na tuto adresu. Každý datagram pro adresu 191.72.1.65 pak bude doručen lokálně. Správné volání vypadá následovně:
# ifconfig dummy vlite
# route add vlite
Příkaz ifconfig má mnohem více parametrů, než jsme si zatím řekli. Jeho volání v klasické podobě vypadá následovně:
ifconfig interface [[-net|-host] address [parameters]]
Parametr interface představuje název rozhraní, parametr address představuje IP-adresu přidělenou danému rozhraní. Může to být buď IP-adresa v tečkové notaci, nebo název, který příkaz ifconfig vyhledá v souborech /etc/hosts a /etc/networks. Volby -net a -host přinutí příkaz ifconfig, aby považoval adresu za číslo sítě, resp. za adresu hostitele.
Je-li příkaz ifconfig vyvolán pouze s názvem rozhraní, zobrazí konfiguraci příslušného rozhraní. Je-li spuštěn bez parametrů, zobrazí všechny již dříve nakonfigurovaná rozhraní; volba -a donutí příkaz zobrazit i neaktivní rozhraní. Vzorové vyvolání příkazu ifconfig pro ethernetové rozhraní eth0 by mohlo vypadat asi takto:
# ifconfig eth0
eth0 Link encap 10Mbps Ehternet HWaddr 00:00:C0:90:B3:42
inet addr 191.72.1.2 Bcast 191.72.1.255 Mask 255.255.255.0
UP BROADCAST RUNNING MTU 1500 Metric 0
RX packets 3136 errors 217 dropped 7 overrun 26
TX packets 1752 errors 25 dropped 0 overrun 0
Pole MTU a Metric ukazují aktuální MTU a metrickou hodnotu pro dané rozhraní. Metrickou hodnotu tradičně používají některé operační systémy k výpočtu váhy daného směrování.
Linux zatím tuto hodnotu nevyužívá, ale definuje ji z důvodu kompatibility.
Řádky RX a TX ukazují, kolik paketů bylo bezchybně přijato nebo vysláno, ke kolika chybám došlo, kolik paketů bylo zahozeno pravděpodobně z důvodu nedostatku paměti a kolik paketů se ztratilo kvůli přetížení. K přetížení přijímače obvykle dojde v případě, kdy pakety přicházejí rychleji, než stačí jádro operačního systému obsloužit poslední přerušení. Hodnoty příznaků zobrazené příkazem ifconfig zhruba odpovídají názvům jeho voleb na příkazovém řádku; budou vysvětleny dále.
Následuje seznam parametrů, které rozeznává příkaz ifconfig. Odpovídající názvy symbolů jsou uvedeny v kulatých závorkách. Volby, které zapínají určitou volbu, umožňují i její vypnutí. Toho dosáhnete vložením symbolu mínus (-) před název příslušné volby.
up | Označí rozhraní jako "aktivní", tj. přístupné pro IP-vrstvu. Tato volba předpokládá, že je spolu s ní uvedena na příkazovém řádku i adresa address. Lze ji také použít k opětovnému povolení rozhraní, které bylo dočasně zakázáno pomocí volby down. (Této volbě odpovídají symboly UP a RUNNING.) |
down | Označí rozhraní jako "neaktivní", tj. nepřístupné pro IP-vrstvu. Tato volba efektivně znemožní jakýkoliv IP-provoz přes dané rozhraní. Všimněte si, že tato volba automaticky nesmaže všechna směrovací data, která používají dané rozhraní. Pokud toto rozhraní trvale znepřístupníte, měli byste tato směrovací data vymazat a je-li to možné, doplnit je o alternativní směrování. |
netmask mask | Tato volba přidělí masku podsítě, kterou bude rozhraní používat. Může být zadána jako 32-bitové hexadecimální číslo s předponou 0x nebo jako čísla desítkové soustavy oddělená tečkou. |
pointopoint address | Tato volba se používá u spojení IP typu point-to-point, které vyžaduje pouze dva hostitele. Tato volba je nutná například při konfiguraci rozhraní SLIP nebo PLIP. (Byla-li nastavena adresa point-to-point, zobrazí příkaz ifconfig symbol POINTOPOINT.) |
broadcast address | Vysílací (broadcast) adresa je obvykle vytvořena z čísla sítě nastavením všech bitů části hostitele. Některé implementace protokolu IP používají odlišné schéma; tato volba je zde proto, aby se vysílací adresa přizpůsobila těmto podivným prostředím. (Je-li nastavena vysílací adresa, zobrazí příkaz ifconfig symbol BROADCAST.) |
metric number | Tato volba slouží k přidělení metrické hodnoty položce směrovací tabulky vytvořené pro dané rozhraní. Tuto metriku používá směrovací informační protokol (RIP) k vytvoření směrovacích tabulek sítí. Implicitní hodnota metriky používaná příkazem ifconfig je rovna nule. Pokud nepoužíváte démona RIP, je vám tato volba k ničemu; pokud ano, budete jen zřídka potřebovat tuto hodnotu měnit. |
mtu bytes | Tato volba nastavuje tzv. maximální přenosovou jednotku (Maximal Transmission Unit - MTU), která představuje maximální počet oktetů, o něž se může rozhraní postarat při jedné transakci. U sítí typu Ethernet je hodnota MTU implicitně nastavena na 1 500; u rozhraní typu SLIP je MTU nastavena na hodnotu 296. |
arp | Toto je volba typická pro sítě, jako je Ethernet nebo packet radio. Povoluje použití ARP, protokolu pro rozlišení adres, k detekci fyzických adres hostitelů, kteří jsou připojeni k síti. U těchto sítí je tato volba implicitně povolena. (Je-li protokol ARP zakázán, zobrazí příkaz ifconfig symbol NOARP.) |
-arp | Na tomto rozhraní zakáže použití protokolu ARP. |
promisc | Přepne rozhraní do "promiskuitního" módu.
U většiny sítí to bude znamenat, že dané rozhraní bude přijímat všechny pakety,
bez ohledu na to, zda byly určeny pro jiného hostitele či nikoliv. Tato volba umožní
analyzovat síťový provoz pomocí filtrování paketů (tzv. sledování Ethernetu). Je
to dobrý způsob, jak vychytat síťové problémy, které by jinak bylo těžké
vystopovat. Na druhou stranu umožní tato volba útočníkům kromě jiných věcí i zjištění potřebných hesel z vašeho síťového provozu. Jednou z ochran proti tomuto typu útoku je všeobecné zakázání pouhého zastrčení svého počítače do vaší ethernetové zásuvky. Další možností je používat bezpečné ověřovací protokoly, jako například Kerberos, nebo přihlašovací balík SRA. (Této volbě odpovídá symbol PROMISC.) |
-promisc | Tato volba vypne promiskuitní mód. |
allmulti | Multicast-adresy jsou určitým druhem vysílání dat skupině hostitelů, kteří nutně nemusí ležet v jedné podsíti (Tato volba odpovídá symbolu ALLMULTI.) |
-allmulti | Tato volba vypne multicast-adresy. |
Nyní se podíváme na užitečný nástroj pro kontrolu konfigurace sítě a síťové aktivity. Nazývá se netstat a ve skutečnosti jde spíše o sbírku několika nástrojů shrnutých dohromady.
V následujících statích si probereme každou z jeho funkcí.
Spustíte-li příkaz netstat s parametrem -r, zobrazí se směrovací tabulka jádra operačního systému stejným způsobem, jako tomu bylo u příkazu route. Na hostiteli vstout se zobrazí:
# netstat -nr
Kernel routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
127.0.0. * 255.255.255.255 UH 1 0 50 lo
191.72.1.0 * 255.255.255.0 U 1 0 478 eth0
191.72.2.0 191.72.1.1 255.255.255.0 UGN 1 0 250 eth0
Volba -n způsobí, že příkaz netstat zobrazí adresy jako čísla IP oddělené tečkami, a ne jako symbolické názvy hostitelů a sítí. To je užitečné, chcete-li se vyhnout vyhledávání adres po síti (například na DNS nebo NIS-serveru).
Druhý sloupec výstupu příkazu netstat zobrazuje bránu, na kterou ukazují směrovací data. Není-li použita žádná brána, zobrazí se symbol hvězdičky. Sloupec tři ukazuje "všeobecnost" směrování. Je-li zadána IP-adresa, pro kterou se má vyhledat správné směrování, projde jádro systému všechna data směrovací tabulky, na adresu a všeobecnou masku aplikuje bitově orientovanou operaci AND a výsledek porovná s cílem směrování.
Čtvrtý sloupec zobrazuje různé symboly, které popisují dané směrování:
Sloupec Ref ve výstupu příkazu netstat zobrazuje počet odkazů na dané směrování, to znamená, kolik dalších směrování (například přes brány) spoléhá na přítomnost daného směrování. Poslední dva sloupce zobrazují, kolikrát byla použita směrovací data a dále rozhraní, kterými při doručování procházejí datagramy.
Je-li příkaz netstat spuštěn s parametrem -i, zobrazí se statistiky pro aktuálně nakonfigurovaná síťová rozhraní. Je-li připojen i parametr -a, vypíší se všechna zařízení přítomná v jádru operačního systému, nejenom ta, která již byla nakonfigurována.
Pole MTU a Met ukazují aktuální hodnoty MTU a metriky daného rozhraní. Sloupce RX a TX ukazují, kolik paketů bylo bezchybně přijato nebo vysláno (RX-OK/TX-OK), kolik bylo poškozeno (RX-ERR/TX-ERR), kolik bylo zahozeno (RX-DRP/TX-DRP) a kolik se ztratilo z důvodu přetížení (RX-OVR/TX-OVR).
Poslední sloupec zobrazuje symboly nastavené u daného zařízení. Jsou to jednoznakové ekvivalenty dlouhých názvů příznaků, které se vypisují při zobrazení konfigurace rozhraní pomocí příkazu ifconfig.
Příkaz netstat podporuje skupinu voleb pro zobrazení aktivních nebo pasivních socketů. Volby -t, -u, -w a -x ukazují aktivní TCP, UDP, RAW nebo unixová socketová spojení. Pokud k nim doplníte i parametr -a, budou zobrazeny i sockety čekající na spojení (například při naslouchání). Tato kombinace parametrů vám poskytne úplný výpis všech serverů, které právě běží ve vašem systému.
Při použití příkazu netstat -ta se na hostiteli vlager zobrazí následující výpis:
$ netstat -i
Kernel Interface Table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flags
lo 0 0 3185 0 0 0 3185 0 0 0 BLRU
eth0 1500 0 972633 17 20 120 628711 217 0 0 BRU
$ netstat -ta
Active Internet connections
Proto Recv-Q Send-Q Local Address Foreign Address (State)
tcp 0 0 *:domain *:* LISTEN
tcp 0 0 *:time *:* LISTEN
tcp 0 0 *:smtp *:* LISTEN
tcp 0 0 vlager:smtp vstout:1040 ESTABLISHED
tcp 0 0 *:telnet *:* LISTEN
tcp 0 0 localhost:1046 vbardolino:telnet ESTABLISHED
tcp 0 0 *:chargen *:* LISTEN
tcp 0 0 *:daytime *:* LISTEN
tcp 0 0 *:discard *:* LISTEN
tcp 0 0 *:echo *:* LISTEN
tcp 0 0 *:shell *:* LISTEN
tcp 0 0 *:login *:* LISTEN
Tento výpis ukazuje, že většina serverů čeká na příchozí spojení. Nicméně čtvrtý řádek ukazuje příchozí spojení typu SMTP z hostitele vstout a šestý řádek vám sděluje, že existuje výstupní spojení typu telnet s hostitelem vbardolino. Pokud bychom použili pouze argument -a, zobrazí se všechny sockety ze všech rodin.
V určitých situacích je vhodné si prohlédnout, případně změnit obsah tabulek ARP jádra systému. Například máte-li podezření, že příčinou občasných síťových problémů je duplicitní internetová adresa. Pro takovéto situace byl vytvořen nástroj arp. Jeho volby příkazové řádky jsou následující:
arp [-v] [-t hwtype] -a [hostname]
arp [-v] [-t hwtype] -s hostname hwaddr
arp [-v] -d hostname [hostname...]
Všechny argumenty názvu hostitele hostname jsou buďto symbolické názvy hostitelů, nebo IP-adresy respektující tečkovou notaci.
První typ volání příkazu arp zobrazí pro danou IP-adresu nebo pro daného hostitele položku ARP. V případě, že nebyl zadán název hostitele hostname, zobrazí se položky ARP pro všechny známé hostitele. Například vyvolání příkazu arp na hostiteli vlager může vypadat takto:
# arp -a
IP address HW type HW address
191.72.1.3 10Mbps Ethernet 00:00:C0:5A:42:C1
191.72.1.2 10Mbps Ethernet 00:00:C0:90:B3:42
191.72.2.4 10Mbps Ethernet 00:00:C0:04:69:AA
Zobrazí se ethernetové adresy hostitelů vlager, vstout a vale. Pomocí volby -t můžete omezit výpis pouze na zadaný typ hardwaru. Jím může být ether, ax25 nebo pronet, což odpovídá 10Mbps Ethernetu, AMPR AX.25, resp. zařízení IEEE 802.5 Token Ring.
Parametr -s slouží k permanentnímu přidání ethernetové adresy názvu hostitele hostname do tabulek ARP. Argument hwaddr určuje hardwarovou adresu, u níž se implicitně předpokládá, že jde o ethernetovou adresu určenou šesti hexadecimálními bajty oddělenými dvojtečkou. Za pomoci volby -t můžete také nastavit hardwarové adresy pro jiné typy hardwaru.
Někdy bude nutné manuální doplnění IP-adresy do tabulky ARP, například když z nějakých příčin selžou na vzdáleném hostiteli dotazy ARP, k čemuž může dojít, je-li na vzdáleném hostiteli chybný ovladač ARP, nebo když v síti existuje další hostitel, který se chybně identifikuje IP-adresou vzdáleného hostitele. Zapsání IP-adresy napevno do tabulky ARP je opatření (velice drastické), kterým se chráníte proti hostitelům z vašeho Ethernetu, jež se vydávají za někoho jiného.
Použijete-li při spuštění příkazu arp parametr -d, smažou se všechna data ARP, která se vztahují k danému hostiteli. Pomocí tohoto parametru můžete rozhraní přinutit k tomu, aby se znovu pokusilo pomocí dotazu získat ethernetovou adresu odpovídající dané IP-adrese. To je užitečné v případě, kdy ýpatně nakonfigurovaný systém vysílá ýpatné informace ARP (samozřejmě předtím musíte chybného hostitele znovu zkonfigurovat).
Volba -s slouží k implementaci techniky proxy ARP. Je to speciální technika, kdy se hostitel, například gate, chová vůči dalšímu hostiteli fnord jako brána a předstírá, že se obě adresy vztahují ke stejnému hostiteli, konkrétně k hostiteli gate. Provede to tak, že zveřejní ARP položku hostitele fnord, která bude ukazovat na své vlastní ethernetové rozhraní. Když nyní nějaký hostitel pošle dotaz ARP na hostitele fnord, hostitel gate vrátí odpověi, která bude obsahovat jeho vlastní ethernetovou adresu. Potom pošle dotazující se hostitel všechny datagramy na hostitele gate, který je následně zaýle hostiteli fnord.
Tyto záměny jsou nutné například v případě, kdy chcete přistupovat k hostiteli fnord z počítače s operačním systémem DOS, který nemá zcela korektní implementaci TCP s dobrým směrováním. Při použití techniky proxy ARP se bude hostitel jevit počítači s operačním systémem DOS jako by byl fnord v místní podsíti, takže počítač s operačním systémem DOS nemusí vůbec umět směrovat pomocí brány.
Další velice užitečnou aplikací techniky proxy ARP je případ, kdy se jeden z vašich hostitelů chová jako brána vůči nějakému jinému hostiteli jen dočasně, například při připojení pomocí modemu. V předešlém příkladu jsme se již setkali s laptopem vlite, který je občas spojován s bránou vlager spojením typu PLIP. Samozřejmě, že tento způsob bude fungovat pouze v případě, kdy je adresa hostitele, na kterém chcete provozovat techniku proxy ARP, ve stejné podsíti IP jako vaše brána. Například hostitel vstout by mohl používat techniku proxy ARP pro libovolného hostitele sítě pivovaru (191.72.1.0), ale nikdy pro hostitele z podsítě vinárny (191.72.2.0).
Správné vyvolání příkazu arp, kdy bude hostiteli fnord poskytnuta technika proxy ARP, je uvedeno níže; samozřejmě, že předaná ethernetová adresa musí odpovídat hostiteli gate.
# arp -s fnord 00:00:c0:a1:42:e0 pub
Položku proxy ARP můžete opět odstranit následujícím způsobem:
# arp -d fnord
Síťové služby Linuxu se stále vyvíjí. Velké změny v hladině jádra operačního systému s sebou přinesou pružné konfigurační schéma, které vám umožní konfigurovat síťové zařízení i za provozu. Například příkaz ifconfig bude akceptovat argumenty nastavující IRQ a kanál DMA.
V blízké budoucnosti se počítá s doplněním příznaku mtu, který nastaví pro konkrétní směrování maximální přenosovou jednotku. Tato MTU specifická pro dané směrování potlačí MTU specifikované pro dané rozhraní. Tuto volbu budete obvykle používat u směrování přes bránu, kde bude spojení mezi bránou a cílovým hostitelem vyžadovat velmi malou hodnotu MTU. Dejme tomu, že je třeba hostitel wonderer připojen k bráně vlager spojením typu SLIP. Když budete posílat data z hostitele vstout hostiteli wonderer, bude síťová vrstva hostitele wonderer používat pakety o velikosti až 1 500 bajtů, protože jsou tyto pakety posílány po Ethernetu. Na druhé straně však pracuje spojení typu SLIP s MTU o velikosti 296 bajtů, takže síťová hladina hostitele vlager musí rozdělit IP-pakety na menší části, které by nepřesahovaly 296 bajtů. Kdyby bylo naopak možné nastavit směrování na hostiteli vstout tak, aby se od začátku používalo MTU o velikosti 296 bajtů, pak bychom se této poměrně náročné fragmentaci vyhnuli:
# route add wanderer gw vlager mtu 296
Všimněte si, že volba mtu vám umožní selektivně vrátit účinek opatření, které chápe podsítě jako místní (‚Subnets Are Local‚ Policy - SNARL). Toto opatření je konfigurační volbou jádra operačního systému a je popsáno v kapitole 3.