Portál AbcLinuxu, 15. května 2024 03:11

Domácí síť - I

1. 5. 2003 | Vlastimil Ott
Články - Domácí síť - I  

Jak vytvořit malou domácí síť ze dvou počítačů. Snadno srozumitelný návod podle vlastních zkušeností.

Určitě jste se -- stejně jako já -- alespoň jednou dostali do situace, kdy jste zjistili, že počet počítačů v domácnosti značně pokulhává za počtem uživatelů, kteří právě teď potřebují pracovat, případně musí nutně odpovědět na e-mail. Dlouho jsem se bránil myšlence koupit další počítač, ale když jsem zjistil, že cena starého Pentia 200 i s kvalitním monitorem zdaleka nepřesáhne 3000 korun, spočítal jsem si, že tyto investované peníze se mi rychle vrátí. Byl jsem si ovšem vědom závažnější skutečnosti: nevím, jak postavit síť (i když má pouze dva počítače), a už vůbec nevím, jak se to dělá v Linuxu. Dnes už to vím, a protože mě to stálo dost času, chci poradit i čtenářům AbcLinuxu. Proto také prosím odborníky o shovívavost a korekci nepřesností, protože všechno, o čem budu psát, jsem se naučil sám, takže některé věci možná budou nepřesné. Ale výsledek funguje!

Cíl našeho snažení

Hned na začátek tohoto miniseriálu vám chci sdělit, co že to vlastně budeme budovat, k čemu vám to bude a co tím vším získáte. Podle těchto návodů byste měli být schopní postavit si domácí síť běžící na Linuxu. Síť bude mít dva počítače (server, terminál), ale neměl by být problém rozšířit ji o další stanice. Na (každé) stanici bude možné spouštět aplikace ve vašem grafickém prostředí, které je nainstalované na serveru (např. KDE 3.x); problém nebude činit ani tisk. Vytvoříte komfortní pracovní prostředí, které by mělo být pro každého uživatele na kterémkoliv počítači v síti totožné (myšleno pro srovnání strojů, ne uživatelů).

Než začneme

Co všechno musíte koupit...

Na začátek si řekněme, co je k vytvoření domácí sítě (síťky) potřeba. Vycházím pochopitelně ze své situace, ale pokusím se abstrahovat ;-). Síť postavíme na bázi klient-server. Na serveru poběží všechny procesy, které budou poskytovány klientovi na žádost. Na klientovi spustíme pouze procesy nutné pro jeho správu a pro síťové spojení. Co všechno tedy potřebujeme?

...a kolik to stojí?

Předpokládám, že server máte; snad i klienta. Pokud máte jen jeden počítač a koupíte druhý, jako server by měl sloužit ten rychlejší. (Ale to je snad jasné...) Pokud budete pořizovat klienta, pak vězte (kdo se neorientujete), že zmíněné Pentium 200 v konfiguraci 32 MB RAM/1.2 GB harddisk/disketová mechanika/grafická karta 1--4MB RAM stojí cca 1500 Kč. Součástí asi nebude CD-ROM, ale to nevadí, naopak si myslím, že je zbytečná. Kvalitní digitální monitor se značkovou elektronikou ("vnitřkem") přijde na cca 1500 Kč. Síťovou kartu koupíte v bazaru za 50--100 korun, jedná se o "krabicové" zboží (jsou naházené v krabici někde v rohu a obsluhu otravuje už to, že vám kvůli tomu musí vypsat paragon). Může se stát, že síťovka nebude funkční, proto je vhodné koupit raději novou (cca 200 Kč/kus); záleží na vás. Relativně velký problém nastává při koupi kabelu. V prodejnách VELICE neradi stříhají kabel na míru, protože celá práce neodpovídá ceně kabelu (10 Kč/m); proto počítejte s tím, že největší položkou v ceně kabelu bude práce. Není vhodné natahovat kabel venkovním prostředím, hrozí nejen zničení počítačů, ale dokonce i vyhoření domu/bytu (blesk si vybírá to nejlepší místo). Také není vhodné instalovat kabel delší než 50 metrů -- není pro to určen (elektromagnetické pole, ztrátovost při přenosu). Optimální délka kabelu by tedy neměla přesáhnout 20 metrů (z místnosti do místnosti podél zdi to vyjde na cca 10--15 metrů).

Velice důležitým faktorem je typ kabelu. Požadujte křížený kabel pro 10/100 MBit ethernet. Je to velmi důležité (jeden z vodičů -- bílý? -- kříží na jednom konci ostatní). Pokud si tímto nejste jisti, z problémů se nedostanete. Cena kabelu by neměla přesáhnout 200-300 korun. Celkové náklady se tedy pohybují kolem 3000-3500 Kč (nepočítám v to cenu operačního systému, který je zadarmo ;-) ).

Táhneme!

První zásadní věcí je pochopitelně natažení kabelu po bytě. Zmiňuji se o tom pouze proto, že vám to zabere určitou dobu. Kabel veďte tak, aby nebyl na žádném místě "skřípnutý" (např. pod prahem dveří), neměl by být ohnutý násilím. Do zdířky síťové karty by měl být zacvaknutý pod přirozeným úhlem. Všechny takové kritické body jsou potenciálním zdrojem nepříjemností.

Začněme Stanicí

Pojmenujme si pro naše účely oba počítače jmény Server a Stanice. Nainstalujte síťovou kartu (fyzicky) do počítače a ujistěte se v setupu, že používá jedinečné IRQ a adresu. Do setupu se dostanete při startu počítače v okamžiku, kdy se "počítá" paměť nejčastěji stiskem klávesy Del nebo podobné (měla by být zobrazena na monitoru). U starších počítačů (se kterými pracujeme) nemáte možnost nastavovat takové "citlivé" hodnoty, stačí když víte, která IRQ jsou volná. Pokud dvě IRQ kolidují, počítač stoprocentně "tuhne", a to nejen ve Windows. Na tomto místě je nutné poznamenat, že síťová karta má vlastní paměť, kde tyto informace uchovává. Lze je nastavit programem, který získáte na webových stránkách výrobce. Tyto utility běží obvykle v DOSu, pokud nemáte starý MSDOS, použijte kupř. DR-DOS. Vytvořte si bootovací disketu spolu s uvedenou rutinou a kartu řádně nastavte (na hodnoty, které si poznačíte). Jako způsob spojení nastavte 10/100Mbitový ethernet. Obvykle se není vhodné zadávat zde způsob konfigurace PlugAndPlay, nastavte hodnoty "natvrdo". Tuto fázi se nevyplácí podceňovat, měli byste ji provést každopádně.

Pokud jste kartu nastavili a jste přesvědčeni, že nebude kolidovat s jinými zařízeními, je hardwarová příprava Stanice u konce. Zasuňte konektor kabelu do síťové karty a přesuňte se k Serveru.

Na řadě je Server

Tvrdé zboží (hardware)

Nainstalujte na Serveru síťovou kartu stejným způsobem jako na Stanici. Spusťte Linux. Sledujte výpisy jádra, jestli se objeví (přibližný) název síťové karty. Pokud ano (měl by), je vše v pořádku (alespoň z 50%). Přihlaste se jako root a zadejte

dmesg | less

Tento příkaz vám znovu zobrazí informace jádra, které se produkují při startu systému. Zkontrolujte, zda údaje o síťové kartě (IRQ, adresa) odpovídají těm údajům, které jste nastavili dosovou utilitou. Výpis může vypadat např. takto:

...
PCI: Found IRQ 11 for device 00:03.0
PCI: Sharing IRQ 11 with 00:07.2
3c59x: Donald Becker and others. www.scyld.com/network/vortex.html
00:03.0: 3Com PCI 3c590 Vortex 10Mbps at 0x1040. Vers LK1.1.16
00:03.0: Overriding PCI latency timer (CFLT) setting of 64, new value is 248.
...

Kromě stránky, kde lze najít novou verzi ovladačů této síťové karty, jsme se dozvěděli, že se jedná o kartu 3com, model 3c590, která má IRQ nastavené na 11, adresu na 0x1040 hexadecimálně a způsob komunikace na 10Mbps. Modul pro ovládání karty se tedy v pořádku načetl.

Pokud ve výpisu informace o kartě nenajdete, je nutné načíst modul ručně. Pokud znáte název karty nebo chipsetu, zadejte:

modprobe -l | grep nazev_karty_nebo_chipsetu

Pokuste se odhadnout nebo určit, který modul je ten pravý. Vložte jej příkazem modprobe nazev_modulu. Pokud na vás nevystřelí množství chybových hlášení, našli jste jej; přesvědčte se příkazem lsmod. Pokud se chybová hlášení objeví, nastává čas natáhnout Google a hledat. Je to velice nepravděpodobné, proto hodně štěstí :-(.

Měkké zboží (software)

Modul je načten, nastává čas nastavit síťové služby. Způsob nastavení se v každé distribuci nepatrně liší. Ať už to provedete prostřednictvím nějaké utility, nebo ručně, výsledek musí být stejný. Proto přímo popíšu nastavení konfiguračních souborů; jejich umístění v adresářové struktuře se v jednotlivých distribucích může lišit. Předpokládám, že váš systém přišel na svět standardní instalací se síťovou podporou, proto zde tento proces neřeším.

První věcí, kterou nastavíme, jsou síťové adresy Serveru a Stanice. Existuje způsob, jak adresu stanicím přidělovat dynamicky, ale v případě jedné stanice to nemá význam. Adresy všech stanic v síti (tedy i Serveru!) jsou uloženy v souboru /etc/hosts:

# hosts # This file describes a number of hostname-to-address
# mappings for the TCP/IP subsystem. It is mostly
# used at boot time, when no name servers are running.
# On small systems, this file can be used instead of a
# "named" name server. Just add the names, addresses
# and any aliases to this file...
#
# By the way, Arnt Gulbrandsen says that 127.0.0.1
# should NEVER be named with the name of the machine. It causes problems
# for some (stupid) programs, irc and reputedly talk. :^)
#

# For loopbacking.
127.0.0.1         localhost
192.168.1.20      stanice.byt stanice
192.168.1.10      server.byt server

# End of hosts.

Tento soubor, zde konkrétně pocházející z mého Slackwaru 9.0, poskytuje základní informace o tom, jak zadávat údaje do souboru. Dočteme se, že na malých systémech je tento soubor vhodnější než nameserver (který v podstatě totéž dělá na velkých systémech). Je také nevhodné pojmenovávat loopback adresu jménem počítače. (Tento pomyslný klient slouží k testování funkčnosti sítě; počítač vlastně komunikuje sám se sebou, ale přes síťovou kartu.) Formát údajů je následující:

sitova_adresa nazev_pocitace.nazev_site aliasy

Položka localhost s adresou 127.0.0.1 je "téměř" povinná. Setkal jsem se názorem, že by měla být uvedena jako první. Něco o tom, jakou adresu vybrat, se dočtete v Networking HOWTO. Adresní prostor pro soukromé sítě nepřipojené do Internetu začíná právě na hodnotě 192.168.1.0.

Nyní přiřadíme síťovou adresu vlastní kartě. Ve Slackwaru se jedná o soubor /etc/rc.d/rc.inet1 (výřez):

IPADDR="192.168.1.10" # REPLACE with YOUR IP address!
NETMASK="255.255.255.0" # REPLACE with YOUR netmask!
GATEWAY="" #REPLACE with YOUR gateway!
BROADCAST=`/bin/ipmask $NETMASK $IPADDR | cut -f 1 -d ' '`

/sbin/ifconfig lo 127.0.0.1
/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo
/sbin/ifconfig eth0 ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK}
/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo

Tento soubor používá z důvodu flexibility proměnné, nastavení ale můžeme provést pomocí přímých hodnot. Bránu (gateway) není nutné nastavovat. K podrobnostem vizte výše zmíněné HOWTO. Kontrolu nastavení provedeme příkazem ifconfig. Výpis by měl vypadat nějak takto:


/etc/rc.d: ifconfig
eth0  Link encap:Ethernet HWaddr 00:A0:24:CC:A7:34
      inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
      RX packets:8143 errors:0 dropped:0 overruns:0 frame:0
      TX packets:7321 errors:0 dropped:0 overruns:0 carrier:0
      collisions:118 txqueuelen:100
      RX bytes:4289868 (4.0 Mb) TX bytes:2572950 (2.4 Mb)
      Interrupt:11 Base address:0x1040

lo    Link encap:Local Loopback
      inet addr:127.0.0.1 Mask:255.0.0.0
      UP LOOPBACK RUNNING MTU:16436 Metric:1
      RX packets:80 errors:0 dropped:0 overruns:0 frame:0
      TX packets:80 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0
      RX bytes:5632 (5.5 Kb) TX bytes:5632 (5.5 Kb)

Další fází je spuštění požadovaných služeb. Opět zde platí, že každá distribuce poskytuje jiné nástroje pro jejich nastavení. Zásadní program se jmenuje portmapper a spouští se (ve startovacích skriptech v adresáři /etc/rc.d/) příkazem rpc.portmap. Zprostředkovává základní komunikaci mezi počítači. Pokud neběží, spusťte jej a přesvědčte se příkazem rpcinfo, výpis by měl být následující:

rpcinfo -p

program verz proto port
100000    2   tcp   111 portmapper
100000    2   udp   111 portmapper

Tento díl ukončíme testem, zda je síťová komunikace na serveru funkční. Zadejte příkaz ping server a sledujte výpis (musíte jej sami ukončit klávesami Ctrl-C). Pokud vypadá nějak takto,

ping server

PING server.byt (192.168.1.10): 56 octets data

--- server.byt ping statistics ---
324 packets transmitted, 0 packets received, 100% packet loss

tak není síť nastavená správně. Hledejte v archívu diskuzí na AbcLinuxu, je to častý dotaz. Bezchybný výpis je např. ten následující:

ping server

PING server.byt (192.168.1.10): 56 octets data
64 octets from 192.168.1.10: icmp_seq=0 ttl=64 time=0.3 ms
64 octets from 192.168.1.10: icmp_seq=1 ttl=64 time=0.1 ms
64 octets from 192.168.1.10: icmp_seq=2 ttl=64 time=0.1 ms

--- server.byt ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.1/0.1/0.3 ms

Pokud všechno funguje, máme Server téměř připravený pro síťovou instalaci Linuxu na Stanici. O té bude pojednávat druhý díl našeho vašeho seriálu. Zatím uvažujte o tom, jakou distribuci nainstalujete na Stanici. Už máte kabel?

Související články

AbcSeriály: Linux Terminal Server Project
Nastavení síťové karty

Odkazy a zdroje

Networking HOWTO
DR-DOS

Seriál Domácí síť (dílů: 3)

První díl: Domácí síť - I, poslední díl: Domácí síť - III.
Následující díl: Domácí síť - II

Další články z této rubriky

PowerDNS – přívětivý a jednoduchý DNS server
Bootování ze sítě: pxelinux a kořenový adresář na NFS
Těžký život Do Not Track
OpenAFS – servery
Architektura IPv6 – konfigurace adres a objevování sousedů (2)

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.