Hlavní navigace

Malá síť - spojujeme počítače

29. 7. 2002
Doba čtení: 9 minut

Sdílet

Možná byste rádi propojili své počítače a získali tak možnost současně prohlížet Internet a občas přenést krátký soubor. Podíváme se na dvě levná řešení – spojení přes sériovou linku a přes USB PC2PC. Názorně si ukážeme, jak nastavit malou síť, aby plnila naše nároky.

Aby malá síť fungovala, je třeba kromě fyzického propojení splnit několik dalších podmínek – síťová zařízení musejí mít podporu v jádře, síť musí být správně nakonfigurovaná a musí být aktivní potřebné služby.

Podpora základních sítových prostředků bývá v jádře u běžných distribucí povolena, a tak jediné, co musíme zapnout, je podpora našeho hardwaru a protokolu, který hodláme používat.

Konfigurace sítě

Při konfiguraci sítě zajišťujeme, aby data odešla správným směrem a odpověď se k nám vrátila.

Každý počítač v síti musí mít unikátní síťové číslo, IP adresu. Tato adresa se přiřazuje podle přesně určených pravidel a při připojení se k Internetu obdržíme pouze jednu IP adresu. Naštěstí v adresním prostoru existují čísla, která jsou vyhrazena právě pro podobné lokální sítě – jsou to bloky adres začínající 10.0.0.1 a 192.168.0.1. Tyto adresy jsou používány pouze pro místní sítě a na Internetu se nevyskytují.

K nakonfigurování sítě slouží dva základní nástroje – ifconfig a route, ladicí nástroje ping a

traceroute, mnoho pomocných nástrojů a speciální nástroje pro konfiguraci různého síťového hardwaru.

Ifconfig slouží k nastavení adres sítě, route definuje směrování dat v síti.

Nastavujeme-li jakoukoliv síť, postupujeme následujícím způsobem:

  1. Nastavení síťových prostředků případnými speciálními nástroji
  2. Nastavení síťových adres pomocí ifconfig
  3. Nastavení směrování dat pomocí route
  4. Případné nastavení speciálních vlastností
  5. Nabídka služeb

Nastavení síťových prostředků

V případě běžné síťové karty nebo níže popisované USB sítě je hned po natažení příslušného jaderného modulu síťové rozhraní viditelné. U jiných jej musíme vytvořit programy specifickými pro daný protokol – slattach pro SLIP/CSLIP,

plipconfig pro PLIP, pppd pro PPP atd. Zde je třeba sledovat dokumentaci příslušného ovladače.

Hardware pro spojení

Nejběžnějším spojením počítačů ve firemní praxi je ethernet spojený pomocí pasivních nebo aktivních prvků do sítě. Taková síť se pak dělí na několik segmentů, podle toho, kam jsou jednotlivé počítače připojeny. V domácích podmínkách obvykle nespojujeme mnoho počítačů, nepřenášíme velké soubory ani nesdílíme disky a cílem spojení počítačů bývá spíš možnost prohlížet na nich Internet na jedné vytáčené lince. K tomu lze s úspěchem použít nejen přímé ethernetové propojení mezi dvěma počítači, ale i jiné, pomalejší metody. Protože potřebný hardware bývá přímo v počítači, může být řešení také levnější.

Spojení sériovou linkou

Spojení sériovou linkou dnes patří k téměř zapomenutým. Přitom zvláště při využití starších počítačů se přímo nabízí. Pokud jsou sériové porty využity, přídavné sériové karty ISA se dají koupit v bazarech za desetikorunu.

Potřebujete jen speciální sériový kabel – tzv. null-modem kabel (někdy též zvaný InterLink, sériový LapLink nebo Fastwire 2). Cena se pohybuje kolem padesáti korun (v nouzi postačí i tři dráty). Při nákupu berte na vědomí, že kabel existuje ve třech různých provedeních pro krátké a dlouhé konektory. Tento kabel využijete též při ladění jádra po sériové konzoli a tehdy, když potřebujete přenést soubory z cizího počítače, na kterém je k dispozici jen hyperterminál nebo sériový přenosový program.

Spojení neoplývá nijak vysokou rychlostí – většinou z něj dostanete 115 kb/s, občas i více. Nejběžnějším sériovým čipem je 16550A a jeho integrované verze. Starší čip 16550 nemá 16bajtovou vyrovnávací paměť, a tak může mít při vyšších rychlostech problémy.

Přes sériovou linku lze komunikovat pomocí univerzálního protokolu PPP, nebo pomocí speciálního protokolu SLIP (Serial Line Internet Protocol) či jeho komprimované podoby CSLIP. Podporu vybraného způsobu zapneme v jádře.

SLIP se aktivuje příkazem slattach. Existuje několik implementací, takže přesné argumenty se mohou lišit (někde je implicitní SLIP, jinde rychlejší CSLIP). V uvedeném příkladu -L aktivuje třídrátový režim (u místních spojení řízení toku dat nepotřebujeme), -s nastavuje rychlost a poslední argument je název zařízení bez úvodního /dev (používám devfs, takže jde o /dev/tts/1).

slattach -L -s 115200 tts/1 &

Spojení přes USB

Spojení přes USB vyžaduje speciální komunikační čip. Pokud máte některou novou základní desku, možná na ní najdete nápis USB PC2PC nebo něco podobného (poznáte to podle téměř čtvercového USB konektoru na zadní stěně počítače). K některým deskám obdržíte i kabel. V takovém případě je pro vás spojení přes USB bez dalších výdajů. Podobný čip je použit i v některých PDA, kde je spojení přes USB často jedinou možností.

Pokud mají obě zařízení ploché USB konektory, budeme potřebovat poněkud dražší kabel, který obsahuje zmíněný komunikační čip.

Některé z nich (momentálně AnchorChip 2720, Belkin, eTEK, GeneSys GL620USB-A {ale ne GL620USB}, iPaq SA-1100, NetChip 1080, Prolific PL-2301/2302) jsou podporovány i Linuxem v jaderném modulu usbnet.

Teoretická rychlost těchto kabelů je kolem 8 Mb/s, ovšem výkon některých linuxových jaderných ovladačů je až 20× menší (je zde tedy značná rezerva na optimalizaci kódu).

Další zajímavé možnosti spojení

Spojení speciálním paralelním kabelem – PLIP je též součástí jádra Linuxu. Kabel je o trochu složitější, ale oproti sériové lince dosahuje několikanásobně vyšších rychlostí. Pozor, existuje několik nekompatibilních typů paralelních kabelů.

Pokud jsou oba počítače vybaveny SCSI řadiči a jeden z nich umí změnit svůj ID, lze je propojit SCSI kabelem. Umožňuje přímé sdílení hardware na linkové úrovní. Operační systémy bohužel nejsou na tento způsob sdílení disků připraveny (nanejvýš pouze na čtení – hardware sice obsluhuje disky korektně, ale počítače si navzájem nesdělují obsahy vyrovnávacích pamětí ani provedené zápisy). Jednou z možností takového spojení je IP-via-SCSI. Viděl jsem projekt, který se touto možností zabýval, zda však přinesl výsledky, nevím. Je to jistě zajímavé nejen jako kuriozita, ale i pro možnou rychlost – s dobrým SCSI řadičem hravě překoná gigabitový ethernet (až 2,5 Gb/s).

Nastavení síťových adres a směrování dat

Postavíme si malou síť:

geometrie sítě

Před nastavením síťových adres si rozmyslíme, jaké číslo kterému počítači přidělíme. Pro usnadnění práce si můžeme počítače pojmenovat (ale není to vůbec nutné). Pro malé systémy nedostupné z Internetu je zbytečné používat DNS (službu doménových jmen) a stačí nám zápis těchto adres do souborů /etc/hosts všech připojených počítačů. Ten může vypadat třeba takto:

127.0.0.1    localhost
192.168.0.1  athlon.offline.cz offline.cz athlon
192.168.0.2  amiga.offline.cz amiga
192.168.0.3  pentium.offline.cz pentium
192.168.0.4  i486.offline.cz i486

Ke každé adrese můžete přidělit tolik přezdívek, kolik je třeba. Pokud jim přiřazujete jména s tečkami, je dobré vybrat taková, která na Internetu neexistují, protože byste se k jejich Internetové verzi nedostali. (Některým programům údajně vadí přítomnost položky localhost v tomto souboru.)

Stejně tak můžete pojmenovat i sítě a jejich segmenty v souboru /etc/networks:

loopback     127.0.0.0
localnet     192.168.0.0

Jeden počítač nemusí mít nutně jen jedinou IP adresu, ale může pro různá rozhraní používat různé adresy. Proto po připojení k Internetu není na ostatních počítačích nutné nastavovat přidělenou IP adresu připojeného počítače.

Předpokládejme, že počítače athlon a pentium propojíme USB PC2PC kabelem, ostatní pak pomocí null-modemových kabelů. Při nastavování IP protokolu už je konkrétní hardwarová realizace sítě zastíněná; jediné, co o ní potřebujeme vědět, jsou vlastnosti rozhraní – jméno (zde usb0), zda se jedná o zařízení pro spojení dvou počítačů (pointtopoint), nebo o spojení více zařízení (broadcast), a několik dalších speciálních vlastností.

Programu ifconfig sdělujeme síťové vlastnosti daného zařízení (tedy co kam přenáší a jaké jsou IP adresy), programu route sdělujeme, kam má směrovat síťové pakety. Součinností obou získáme fungující síť.

Před nastavováním si prosím důkladně prohlédněte startovací skripty vaší distribuce. Zřejmě tam najdete některá nastavení z následujícího odstavce:

# - všechny počítače -
# povolit přeposílání došlých paketů
# (nutné, má-li počítač pracovat jako směrovač)
echo "1" > /proc/sys/net/ipv4/ip_forward
# nastavení místní smyčky na adrese 127.*.*.*
#ifconfig lo 127.0.0.1
ifconfig lo localhost
#route add -net 127.0.0.0 netmask 255.0.0.0 lo
route add -net loopback netmask 255.0.0.0 lo

Programu ifconfig na počítači athlon tedy řekneme zhruba toto: „Aktivuj zařízení usb0. Jedná se o spojení dvou počítačů athlon a pentium.“ Programu

route sdělíme: „Požadavky na počítač pentium směruj na zařízení usb0.“ Tyto řádky můžeme zapsat do startovacího skriptu. Korektnější by bylo zapsat je do příslušného souboru pro hotplug, aby se aktivovaly až při zapojení kabelu na obou koncích. Bohužel podpora funkce check_connect v ovladači usbnet je zatím prakticky nulová a aktivace v okamžiku připojení jedné strany postrádá smysl (zvlášť je-li čip připájen na základní desce). Takže prozatím se musíme spokojit s tím, že pokud počítač pošle pakety do rozpojeného kabelu, nastavení se deaktivuje a budeme ho muset znovu provést.

# - athlon -
# Spojení přes USB na pentium
modprobe usbnet
sleep 1
ifconfig usb0 athlon pointopoint pentium up
route add -host pentium dev usb0

Klíčové slovo up můžeme vynechat – je implicitní. Pokud bychom kabel vytáhli z konektoru, síť jednoduše škrtneme ze seznamu slovem down:

ifconfig usb0 down

Podobně i klíčové slovo dev pro poslední parametr route a většinou i slovo -host můžeme vynechat.

U počítače (pentium) bude příkaz analogický. Navíc přibydou příkazy pro připojení null-modemového kabelu.

# - pentium -
# Spojení přes USB na athlon
modprobe usbnet
sleep 1
ifconfig usb0 pentium pointopoint athlon
route add -host athlon usb0
# Spojení přes CSLIP na i486
slattach -L -s 115200 tts/1 &
sleep 1
ifconfig sl0 pentium pointopoint i486
route add i486 sl0

Zcela analogicky bude vypadat situace i pro i486 (zde ovšem budou rozhraní sl0 a sl1). Rozdíl bude v tom, že na počítač athlon se budeme dostávat přes počítač pentium. Na počítači amiga neběží UNIX, takže jeho nastavení již dále řešit nebudu.

# - i486 -
# Spojení přes CSLIP na pentium
slattach -L -s 115200 tts/0 &
sleep 1
ifconfig sl0 i486 pointopoint pentium
route add pentium sl0
# Spojení přes CSLIP na amiga
slattach -L -s 57600 tts/1 &
sleep 1
ifconfig sl1 i486 pointopoint amiga
route add amiga sl1

To ještě není všechno. Nyní se dostaneme přímými linkami z počítače athlon na pentium, z pentium

na i486, z i486 na amiga, ale na „vzdálenější“ počítače ani náhodou! Ještě jsme je totiž nepřidali do směrovacích tabulek:

Počítači i486 sdělíme, že má-li se dostat na počítač athlon, musí použít počítač pentium jako bránu:

# - i486 -
route add -host athlon gw pentium

Počítači athlon sdělíme, že na počítače i486 a amiga se opět dostane přes pentium (tedy přes zařízení usb0):

# - athlon -
# spojení přes počítač pentium na athlon
route add -host i486 gw pentium
route add -host amiga gw pentium

Pokud se jedná o ethernetové spojení mezi dvěma počítači, situace vypadá podobně jako výše uvedená síť USB/SLIP. Pokud jde o router nebo hub, vypadá asi následovně: „Aktivuj zařízení eth0. Jedná se o spojení vysílající do adres 198.168.0.*.“ K tomu slouží maska sítě (netmask):

ifconfig eth0 athlon netmask 255.255.255.0 up
route add -net localnet netmask 255.255.255.0 eth0

Pro ethernetový hub přichází ke slovu jméno sítě 192.168.0.0 – localnet.

route add -net localnet netmask 255.255.255.0 eth0

Voláním ifconfig bez argumentů si ověříme, co program ve skutečnosti nastavil.

Pokud chceme, aby počítač athlon reagoval na adresu 192.168.0.1, i když není USB spojení v aktivní, můžeme si v jádře aktivovat „Dummy net driver support“ a zadat adresu jemu:

# - athlon -
ifconfig dummy0 athlon

Nyní je naše síť funkční, jak si můžeme ověřit příkazem ping. Jediné, co zbývá, je připojit ji k světu. Pokud bychom měli oficiálně přiděleny IP adresy, stačilo by sdělit: „Cesta ke všem počítačům, neuvedeným v tabulce, vede přes…“

root_podpora

# - pentium -
route add default gw athlon
# - i486 -
route add default gw pentium

Pro počítač athlon nastaví tento příkaz skript pro připojení k providerovi.

Protože však naše adresy nejsou přiděleny v oficiálním prostoru, ostatní počítače se nedají připojit standardní cestou. Musíme se uchýlit k úskokům. Máme hned dvě možnosti – použít proxy, nebo maškarádu. A o tom až v příštím dílu.

Byl pro vás článek přínosný?

Autor článku