- p°edchozφ Φlßnek - nßsledujφcφ Φlßnek - obsah - ·vodnφ strßnka -

LinuxovΘ noviny Kv∞ten 1998

IPX v Linuxu

Milan Ker╣lßger, 11. kv∞tna 1998

┌vod do IPX/SPX

S protokolem IPX/SPX se setkßvßme denn∞, zejmΘna v prost°edφ Novell NetWare, kde je klφΦov²m protokolem. Protokol IPX/SPX poΦφtß s vysokou rychlostφ a nφzkou chybovostφ lokßlnφch sφtφ a je jednodu╣╣φ ne╛ protokol TCP/IP, kter² je pou╛φvßn v rozlehlΘm sv∞t∞ Internetu. To je hlavnφ d∙vod, proΦ je v lokßlnφch sφtφch tolik pou╛φvßn. Jeho konfigurace i implementace je jednoduchß a neskr²vß mnoho ·skalφ. Protokol IPX (Internetwork Packet eXchange) pracuje jako datagramovß slu╛ba a je tak obdobou protokolu IP. Naproti tomu SPX (Sequenced Packet eXchange) je navazovßnφm spojenφ velice blφzk² protokolu TCP.

K Φemu to bude dobrΘ

V╣echny poΦφtaΦe v sφti jsou si p°i vzßjemnΘ komunikaci rovny. P°esto majφ n∞kterΘ v²znamn∞j╣φ postavenφ ne╛ ostatnφ. Jsou to v∞t╣inou specializovanΘ stanice, kterΘ nabφzejφ svΘ slu╛by ostatnφm stanicφm. Takov²m poΦφtaΦ∙m °φkßme servery, stanicφm pak klienti a °φkßme, ╛e pou╛φvßme architekturu klient-server. UrΦit∞ je velmi v²hodnΘ um∞t i z Linuxu vyu╛φvat v╣ech slu╛eb, kterΘ nabφzejφ servery Novell Netware. Abychom mohli s t∞mito servery komunikovat, musφme um∞t nakonfigurovat sv∙j Linux tak, aby jim rozum∞l. V dal╣φm povφdßnφ budu p°epoklßdat, ╛e mßme k dispozici sφ╗ typu Ethernet (nap°. tenk² koaxißl nebo kroucenou dvoulinku), a podφvßme se blφ╛e, jak to v╣echno za°φdit. ZaΦneme od zaΦßtku, tedy od toho, jak komunikace na Ethernetov²ch sφtφch vlastn∞ funguje.

Nejprve se pokusφm objasnit v²znam pojm∙ datagram, paket a rßmec. Datagram je celistvß informace, kterou p°enß╣φme mezi poΦφtaΦi. Datagram m∙╛e b²t p°i p°eprav∞ d∞len na vφce Φßstφ a takov²mto samostatn²m Φßstem °φkßme pakety. Aby mohl b²t paket p°epravovßn po sφti typu Ethernet, je ho pot°eba doplnit o dal╣φ nezbytnΘ informace nutnΘ pro jeho p°epravu po sφ╗ovΘm mΘdiu, a takovΘmuto roz╣φ°enΘm paketu °φkßme rßmec.

EthernetovΘ rßmce

Zßkladem p°epravy dat na sφtφch typu Ethernet jsou takzvanΘ rßmce, kterΘ p°epravujφ obecn∞ jakßkoliv data mezi jednotliv²mi poΦφtaΦi. Ka╛d² rßmec p°edstavuje balφk dat, kter² je mo╛no vyslat v rßmci jednoho segmentu k jinΘmu poΦφtaΦi. Sklßdß se z hlaviΦky, t∞la (obsahuje p°enß╣enß data, tedy paket vy╣╣φ vrstvy) a traileru (zakonΦenφ rßmce s kontrolnφm souΦtem). Hlavnφ Φßst hlaviΦky tvo°φ hardwarovß adresa odesφlatele a p°φjemce (oznaΦovanß takΘ jako fyzickß MAC adresa), podle kterΘ sφ╗ovΘ rozhranφ dokß╛e samo rozeznat rßmce, kterΘ jsou mu urΦeny a nemusφ tak ru╣it poΦφtaΦ zbyteΦn²mi p°eru╣enφmi. MAC adresa je pevn∞ dßna v²robcem sφ╗ovΘ karty a v∞t╣inou ji nenφ mo╛nΘ m∞nit. Teoreticky by se na sv∞t∞ nem∞ly vyskytovat dv∞ EthernetovΘ karty se stejnou MAC adresou, ale m∙╛e se to stßt, i kdy╛ v²bor IEEE (Institute of Electrical and Electronics Engineers) p°id∞luje ka╛dΘmu v²robci blok adres. Pokud na takovΘ karty narazφte, je to nep°φjemnΘ a mßte z pekla ╣t∞stφ :-).

Rßmec je zßvisl² na pou╛itΘm p°epravnφm mΘdiu. Kdy╛ datagram opou╣tφ Ethernet a je dßle p°epravovßn nap°φklad po sΘriovΘ lince, jsou zachovßna pouze data z t∞la rßmce a ta pak putujφ dßle obalena jin²m p°epravnφm protokolem.

Abychom nem∞li pocit, ╛e je v╣echno jednoduchΘ, existuje vφce norem, kterΘ p°edepisujφ, jak mß hlaviΦka rßmce v sφtφch typu Ethernet vypadat (viz tabulka EthernetovΘ rßmce). Sφ╗ovß karta musφ um∞t sprßvn∞ dek≤dovat p°ijat² rßmec, jinak ho m∙╛e pova╛ovat za chybn². Proto je vhodnΘ pou╛φvat na segmentu pokud mo╛no jen jeden rßmec a nep°ivßd∞t jak sφ╗ovou kartu tak administrßtora do schizofrenickΘho stavu. Otßzkou pak ov╣em z∙stßvß, kter² rßmec je ten prav².

Nßzev rßmceCharakteristika
Ethernet 802.2dne╣nφ standard firmy Novell, umφ p°epravovat pouze IPX/SPX
Ethernet 802.3p∙vodnφ standard firmy Novell, umφ p°epravovat pouze IPX/SPX
Ethernet IIumφ p°epravovat IPX/SPX i TCP/IP, nejroz╣φ°en∞j╣φ, nejjednodu╣╣φ
Ethernet SNAPumφ p°epravovat IPX/SPX i TCP/IP

Tabulka Φ. 1: EthernetovΘ rßmce

Pokud chcete pou╛φvat ve svΘ sφti protokol TCP/IP, nevyhnete se pou╛itφ jednoho z poslednφch dvou rßmc∙. Nejv²hodn∞j╣φm je urΦit∞ Ethernet II, proto╛e je nejjednodu╣╣φ ze v╣ech a hlavn∞ je univerzßlnφ (lze v n∞m p°epravovat krom∞ IPX/SPX a TCP/IP spoustu dal╣φch protokol∙). O rßmci 802.2 se n∞kdy °φkß, ╛e je p°enß╣en v rßmci 802.3 (p°i pou╛itφ paketovΘho analyzßtoru se tak jeho struktury jevφ). Ethernet SNAP je kombinacφ rßmc∙ 802.2 a 802.3. Rozumn² d∙vod, proΦ firma Novell tak vehementn∞ prosazuje prßv∞ prvnφ dva, neznßm.

N∞kdy nenφ mo╛nΘ na jednom segmentu vystaΦit jen s jednφm rßmcem, proto╛e nap°φklad n∞kterΘ BootROMky nebo stanice se star╣φmi ovladaΦi rßmec Ethernet II neum∞jφ. Ov╣em urΦit∞ platφ, ╛e v jednoduchosti je sφla. Proto rad∞ji d∙kladn∞ zva╛te, co v╣echno Vßm na segmentu bude b∞hat. Neexistuje ╛ßdn² d∙vod, proΦ by nem∞l b²t rßmec Ethernet II pou╛φvßn.

Osobn∞ pou╛φvßm na segmentech jen jeden rßmec (Ethernet II) a ostatnφ p°idßvßm jen v p°φpad∞ nezbytnΘ nutnosti. Windows 95 nenφ vhodnΘ nechßvat u protokolu IPX/SPX pou╛φvat autodetekci rßmc∙, proto╛e to obΦas vede k nepochopiteln²m v²padk∙m, zvlß╣t∞ ve v∞t╣φch sφtφch.

D∞lenφ na vφce sφtφ

Proto╛e rßmce neobsahujφ mo╛nost, jak je jednodu╣e sm∞rovat mezi vφce segmenty (ani to nenφ jejich ·kol), je sm∞rovßnφ zaji╣t∞no protokolem vy╣╣φ vrstvy, v na╣em p°φpad∞ tedy protokolem IPX. Adresa se v IPX datagramu sklßdß z Φφsla sφt∞ a Φφsla uzlu, kterΘ kopφruje uz v²╣e zmφn∞nou MAC adresu sφ╗ovΘ karty. Ka╛d² segment musφ mφt jinΘ Φφslo sφt∞ a pokud provozujeme na jednom segmentu vφce rßmc∙, pak i ka╛d² rßmec musφ mφt r∙znß Φφsla sφtφ. V╣echna sφ╗ovß rozhranφ na jednom segmentu se stejn²m rßmcem pou╛φvajφ stejnß Φφsla sφtφ. Ta urΦuje administrßtor p°i instalaci server∙ a pokud dojde ke konfliktu, v hor╣φm p°φpad∞ to vy°adφ z provozu cel² segment. Stanice si obvykle zjistφ Φφslo sφt∞ ze serveru sama, bez nutnosti p°esnΘ konfigurace.

Vnit°nφ sφt∞

Vnit°nφ sφt∞ (tzv. internal network) slou╛φ pro snadnΘ sm∞rovßnφ datagram∙ ze stanic na mφsto, kterΘ Vßm poskytuje n∞jakou slu╛bu. Vnit°nφ Φφslo sφt∞ proto pot°ebuje jen server, stanice bez n∞j bude pracovat a vlastn∞ ho ani na nic nepot°ebuje. Vnit°nφ Φφslo sφt∞ definuje jakousi virtußlnφ sφ╗ uvnit° serveru, na kterΘ sice nenφ urΦen ╛ßdn² rßmec, ale p°esto musφ b²t jejφ Φφslo jedineΦnΘ a nesmφ se tedy shodovat s jin²m Φφslem sφt∞ v na╣φ lokßlnφ sφti.

Spoluprßce Linuxu s NetWare servery

Servery Novell NetWare nejΦast∞ji komunikujφ se stanicemi pomocφ protokolu IPX, ten je ov╣em pouze p°epravnφm protokolem. Dnes m∙╛eme jako p°epravnφ protokol vyu╛φt takΘ TCP/IP a p°ekroΦit tak mnohem v∞t╣φ vzdßlenosti ne╛ s protokolem IPX, ov╣em konfigurace sφ╗ov²ch rozhranφ u stanic je pak v²razn∞ slo╛it∞j╣φ. Navφc je podpora TCP/IP pro NetWare na stran∞ Linuxu zatφm v plenkßch. Proto se dßle budeme zab²vat pouze prvnφ a z°ejm∞ takΘ nejroz╣φ°en∞j╣φ variantou.

Protokoly v prost°edφ NetWare

Aby si stanice se servery p°i vzßjemnΘm rozhovoru rozum∞ly, p°epravovanß data m∞la logiku a strukturu, pot°ebujeme dal╣φ protokoly, kterΘ budou v IPX p°epravovßny. Nejv²znam∞j╣φm takov²m protokolem je NCP (NetWare Core Protocol), kter² umo╛≥uje klient∙m p°φstup k sφ╗ov²m disk∙m, tiskßrnßm a dal╣φm sdφlen²m za°φzenφm. Pomocφ tohoto protokolu se u╛ivatelΘ takΘ k server∙m NetWare p°ihla╣ujφ. Dal╣φm protokolem, se kter²m se setkßme, je SAP (Service Advertisement Protocol). Tφmto protokolem jednotlivΘ servery ohla╣ujφ a nabφzejφ svΘ slu╛by v sφti pomocφ broadcast∙. Poslednφm zajφmav²m protokolem je RIP (Routing Information Protocol), pomocφ kterΘho si mezi sebou IPX sm∞rovaΦe (routery) vym∞≥ujφ informace o znßm²ch sφtφch. Ty se pak odrazφ ve sm∞rovacφch tabulkßch a tφm je umo╛n∞no, aby sm∞rovaΦe mohly p°edßvat datagramy i do jin²ch sφtφ, ne╛ ve kterΘ pracuje stanice. P°es router m∙╛e b²t zaji╣t∞n i p°eklad rßmce, ale pokud se tak d∞je na jednom segmentu, povede to k duplikaci provozu. To je dal╣φ d∙vod, proΦ je vhodn∞j╣φ pou╛φvat na v╣ech stanicφch v sφti pouze jeden jedin² rßmec.

Konfigurace IPX v Linuxu

Pokud mß Linux vystupovat jako obyΦejnß stanice, kterß rozumφ protokolu IPX, bude vystupovat jako klient a bude vyu╛φvat zdroje a slu╛by (nap°. sdφlenφ disk∙ a tisk na sφ╗ov²ch tiskßrnßch), kterΘ mu budou pomocφ sφt∞ poskytovßny servery.

P°i konfiguraci musφme zaΦφt od zßkladu a tφm je protokol IPX. Podpora protokolu IPX musφ b²t povolena p°i kompilaci jßdra Linuxu (CONFIG_IPX). Pokud ji mßme p°ipravenu jako modul, musφme ho nejprve do jßdra ruΦn∞ zavΘst (neplatφ pro nejnov∞j╣φ verzi NCP utilit). Pokud podporu IPX v jßdru nemßme, nezbude nßm nic jinΘho, ne╛ si p°elo╛it jßdro znovu. Pak je pot°eba sprßvn∞ nakonfigurovat sφ╗ovΘ rozhranφ, k Φemu╛ pot°ebujeme n∞kolik utilit, kterΘ najdeme v balφku ncpfs. V tomto balφku se nachßzφ v∞t╣ina utilit, kterΘ pro prßci s IPX budeme v Linuxu pot°ebovat. U╛ivatel∙m distribuce RedHat 5.0 staΦφ nainstalovat balφk ncpfs-2.0.11-3.i386.rpm nebo podobn², IPX je v jßdrech k dispozici jako modul.

Sφ╗ovΘ rozhranφ m∙╛eme nechat nakonfigurovat automaticky, pokud je na sφti u╛ IPX pou╛φvßno. Automatickou konfiguraci obstarßvß jßdro odposlechem provozu na sφti. Pokud na sφti nenφ ╛ßdn² IPX provoz, musφme rozhranφ nakonfigurovat ruΦn∞. Pro b∞╛n² provoz automatickou konfiguraci nedoporuΦuji, proto╛e Windows 95 vysφlajφ do sφt∞ chybnΘ pakety a to pak m∙╛e vΘst k nesprßvnΘmu rozpoznßnφ Φφsla sφt∞ a pou╛φvan²ch typ∙ rßmc∙, proto je vhodnß spφ╣e jen pro prvnφ kroky. Pro manußlnφ konfiguraci pot°ebujete znßt Φφslo sφt∞ pro ka╛d² pou╛φvan² rßmec. Pokud ho nevφte, informujte se u svΘho administrßtora.

Automatickß konfigurace:

 modprobe ipx
 ipx_configure --auto_interface=on --auto_primary=on
 cat /proc/net/ipx_*

Automatickou konfiguraci je vhodnΘ zkontrolovat podle v²pisu souboru /proc/net/ipx_interface, kter² obsahuje seznam v╣ech registrovan²ch IPX rozhranφ vΦetn∞ typ∙ rßmc∙ a Φφsel sφtφ. AutomatickΘ nakonfigurovßnφ rozhranφ m∙╛e chvφli trvat (cca 10-30 vte°in).

K ruΦnφ konfiguraci IPX rozhranφ m∙╛eme pou╛φt utilitu ipx_interface. Prßv∞ jedno rozhranφ by m∞lo b²t p°epφnaΦem -p oznaΦeno jako primßrnφ. TakovΘ rozhranφ je pova╛ovßno za implicitnφ a je pou╛ito, kdy╛ v programu p°i otevφrßnφ soketu neuvedeme Φφslo sφt∞.

 ipx_interface Φinnost [-p] rozhranφ typ_rßmce Φφslo_sφt∞

╚innostPopis
addp°idßvß IPX rozhranφ, v╛dy je nutnΘ uvΘst nßzev rozhranφ a typ rßmce. Pokud nenφ uvedeno Φφslo sφt∞, je zji╣t∞no odposlechem.
delru╣φ na uvedenΘm rozhranφ uveden² rßmec
delallru╣φ v╣echna rozhranφ
checkzobrazφ konfiguraci p°φslu╣nΘho rozhranφ

Typ rßmce m∙╛e b²t 802.2 pro rßmec Ethernet 802.2, 802.3 pro rßmec Ethernet 802.3, EtherII pro rßmec Ethernet II a Snap pro rßmec Ethernet SNAP.

P°φklad ruΦnφ konfigurace rozhranφ pro rozhranφ eth0, rßmec Ethernet II, Φφslo sφt∞ 12 (primßrnφ interface) a rßmec 802.3, Φφslo sφt∞ 13:

   modprobe ipx
   ipx_interface add -p eth0 etherii 12
   ipx_interface add    eth0 802.3   13

Po t∞chto krocφch si m∙╛eme ov∞°it konfiguraci nap°φklad takto:

 monkey: # cat /proc/net/ipx_interface
 Network  Node_Address Primary Device Frame_Type
 00000012 00A024D6F9F9 Yes     eth0   EtherII
 00000013 00A024D6F9F9 No      eth0   802.3

 monkey: # cat /proc/net/ipx_route
 Network    Router_Net   Router_Node
 00003333   00000012     0020AFF67402
 00001111   00000013     0020AFF67402
 00000013   Directly     Connected
 00000012   Directly     Connected

 monkey: # ifconfig eth0
 eth0   
   Link encap:Ethernet  HWaddr 00:A0:24:D6:F9:F9
   inet addr:10.1.1.1  Bcast:10.1.1.255  \
     Mask:255.255.255.0
   IPX/Ethernet II addr:00000012:00A024D6F9F9
   IPX/Ethernet 802.3 addr:00000013:00A024D6F9F9
   UP BROADCAST RUNNING MULTICAST  MTU:1500  \
     Metric:1
   RX packets:587 errors:0 dropped:0 overruns:0
   TX packets:141 errors:0 dropped:0 overruns:0
   Interrupt:10 Base address:0x6100

Sprßvnou funkci sφ╗ovΘho rozhranφ m∙╛eme ov∞°it nap°φklad v²pisem dostupn²ch NetWare server∙ pomocφ p°φkazu slist:

 monkey: > slist
 Known NetWare File Servers Network   Node Address
 -------------------------------------------------
 PRUM                       0003333   000000000001
 PAT                        0001111   000000000001

Pokud bychom cht∞li nakonfigurovanß rozhranφ z n∞jakΘho d∙vodu zru╣it, mohli bychom postupovat nap°φklad takto (na va╣em systΘmu nemusφ b²t nutn∞ pou╛ity v╣echny uvedenΘ p°φkazy):

    ipx_configure --auto_interface=off \
	   --auto_primary=off
    ipx_interface delall
    rmmod ipx

Linux jako IPX sm∞rovaΦ

Pokud si to budeme p°ßt, Linux m∙╛e fungovat jako sm∞rovaΦ IPX protokolu mezi r∙zn²mi sφt∞mi. Sm∞rovßnφ je provßd∞no na ·rovni jßdra operaΦnφho systΘmu podle ·daj∙ ve sm∞rovacφ tabulce IPX (vypsat si ji m∙╛eme u╛ zmφn∞n²m p°φkazem

cat /proc/net/ipx_route

Tuto Φinnost Linux vykonßvß podobn∞ jako NW server a stejn∞ jako on musφ ohla╣ovat ostatnφm sm∞rovaΦ∙m a stanicφm, jakΘ jsou dostupnΘ sφt∞, a zßrov∞n musφ sßm dle hlß╣enφ ostatnφch sm∞rovaΦ∙ automaticky upravovat svΘ sm∞rovacφ tabulky pro IPX protokol. O tuto Φinnost se starß zvlß╣tnφ program.

Tento zvlß╣tnφ program b²vß oznaΦovßn jako dΘmon a staΦφ ho vlastn∞ jen spustit. O v╣e ostatnφ se postarß sßm, pokud p°ed tφm sprßvn∞ nakonfigurujeme v╣echna sφ╗ovß rozhranφ, co╛ u╛ ale perfektn∞ umφme. ZajφmavΘ je, ╛e pokud budeme pou╛φvat program Mars, o kterΘm je╣t∞ bude °eΦ, nebudeme dΘmona pot°ebovat, proto╛e je p°φmo souΦßstφ Marsu. To je velmi sympatickΘ, i kdy╛ mo╛nß n∞kdy u╛ mΘn∞ praktickΘ. *


- p°edchozφ Φlßnek - nßsledujφcφ Φlßnek - obsah - ·vodnφ strßnka -