Megjegyzések hálózattal és "route-olással" kapcsolatban
-------------------------------------------------------
Az egész sokkal egyszerûbb, mint gondolnád. A lényeg három alapprogram, az
IFCONFIG, ROUTE és az ARP mibenlétén és használatán van.
IFCONFIG
--------
Az IFCONFIG.EXE hozza létre az Internethez (hálózathoz) való kapcsolódást
elôsegítô interészt. Ez az interfész lehet pl. slip interfész, ami mindig
egy soros portot és egy modemet jelent. A slip interfészek nevekkel vannak
ellátva, pl. sl0, sl1, sl2,... stb.
Az interfész lehet hálózati kártya is. Ilyenkor a lan0, lan1, lan2,... stb.
nevek használatosak.
Végül, létezik egy "loopback" nevû interfész is, amelyik nem kapcsolódik
sehová sem. Ez pontosan úgy mûködik, mint egy tükör. Minden, amit erre az
interfészre küldünk, azonnal visszapattan. A "loopback" interfésszel tehát
a gép "magához beszélhet". Ezt az interfészt lo-val jelölik.
Ha konfigurálni akarunk egy interfészt, akkor csak ki kell adnunk az IFCONFIG
parancsot az interfész nevével és számával, mint paraméterekkel (többek
között).
Például "loopback" interfészt definiálhatunk a 127.0.0.1-as IP címre, ha
kiadjuk az alábbi parancsot:
ifconfig lo 127.0.0.1
Az sl0 nevû slip interfészt a következô módon adhatjuk meg:
ifconfig sl0 199.99.99.99 199.99.99.88 netmask 255.255.255.0
Itt két IP címet is megadtunk. A címek a slip vonal két végén lévô
interfészekhez tartoznak. Az elsô cím a helyi géphez, a második a
hívott géphez tartozik. Ha a hívott gépben hálózati kártya is van, akkor
ahhoz egy másik IP cím is kell, hogy tartozzon. A "netmask" paraméter
azt adja meg, hogy az sl0 interfész egy olyan hálózaton van, ahol minden
IP szám 199.99.99-el kezdôdik és csak az utolsó számban van eltérés.
Ha a hálózati kártya interfészét akarjuk konfigurálni a 199.99.99.77-es
címmel, akkor azt a következô paranccsal tehetjük meg:
ifconfig lan0 199.99.99.77 netmask 255.255.255.0.
A konfigurált interfész tesztelése
----------------------------------
Ha jól konfiguráltad az interfészt, akkor tudod "pingetni". Ha pl. a géped
nem kapcsolódik sehova sem, de konfiguráltad a "loopback" interfészt a
127.0.0.1-es címre, akkor az alábbi paranccsal letesztelheted:
ping 127.0.0.1
Ha a slip a 199.99.99.99-es (otthoni) gépet a 199.99.99.88-as (munkahelyi)
géppel köti össze, akkor nem fogod tudni a 199.99.99.99-es interfészt
"pingetni" csak akkor, ha a slip kapcsolat fennáll. Ez elsô pillanatban
meglepô lehet, hiszen a 199.99.99.99-es interfész az otthoni gépre lett
definiálva. Ez azonban nem így van, mert az erre az interfészre küldött
adatok a modemhez továbbítódnak, és ha az nincs összeköttetésben egy másik
modemmel, akkor az otthoni interfész sem fog mûködni.
Számítógépnevek és IP címek
---------------------------
A számítógépek közötti kommunikációban gyakran a gépek nevét használjuk az
IP címek helyett. Ha pl. a "loopback" interfész konfigurálva van, akkor a
ping localhost
parancs mûködni fog, ha a HOSTS fájlban (a \TCPIP\ETC vagy az \MPTN\ETC
könyvtárban van) össze van kapcsolva a 127.0.0.1 szám a "localhost" névvel.
Ha nem lenne HOSTS fájl a megadott könyvtárakban (vagy abban a könyvtárban,
amelyikre az ETC környezeti változó mutat), akkor készíts egyet, ami
legalább az alábbi sort tartalmazza. Természetesen a név és az IP szám más
is lehet.
127.0.0.1 localhost
Ha a "home" (199.99.99.99) és a "work" (199.99.99.88) nevû gépek között
létesítesz slip kapcsolatot, akkor írd bele a HOSTS fájlba az alábbi sorokat
is:
199.99.99.99 home
199.99.99.88 work
Hogyan találja meg a TCP/IP a gépeket: a RESOLV fájl és a DNS
-------------------------------------------------------------
Tegyük fel, hogy kiadjuk az alábbi parancsot:
ping somebody
A hálózato programnak meg kell tehát találnia a "somebody" nevû gépet.
Elôször a HOSTS fájlt fogja megvizsgálni. (Csak akkor, ha a Config.Sys-ben
benne van a SET USE_HOSTS_FIRST=1 sor! - A fordító) Ha itt nem találja meg a
keresett gép IP címét, akkor egy másik gépet, a DNS-t (Domain Name Server,
Tartománynév kiszolgáló) fog megkérdezni. Ha DNS-nél regisztrálva van a
"somebody" nevû gép, akkor megadja a hozzá tartozó IP címet és a "pingetés"
sikeres lesz.
A dolog azonban egy kicsit bonyolultabb. A "home" nevû gép az egy olyan gép,
amely a saját alhálózatodon (subnetwork) van. Mivel a "subnet mask"
255.255.255.0, a "home" IP címében lévô elsô három szám az alhálózat száma
(199.99.99), míg az utolsó szám (99) a "home" gépet azonosítja. Az
alhálózatoknak a gépek nevéhez hasonlóan van nevük. A saját alhálózatod neve
kell, hogy az ETC könyvtárban található RESOLV fájl elsô sorában szerepeljen.
Ha az alhálózatodat pl. "my.private.net"-nek nevezik, akkor a RESOLV fájl elsô
sorában a következô bejegyzésnek kell állnia:
domain my.private.net
Az IP címhez hasonlóan a gép teljes neve a "home" nevébôl és a "subnet mask"
nevébôl tevôdik össze, tehát ez esetben "home.my.private.net" lesz.
A HOSTNAME.EXE programmal megnézhetjük a használt gép nevét. Ha például
konfiguráltuk a "loopback" interfészt és a HOSTS fájlban hozzárendeltük a
127.0.0.1-es IP számot a "localhost" névhez, akkor a HOSTNAME parancs
kiadásakor a "localhost" nevet kell kapnunk.
Ha a slip interfészt és a "route-olás" is megfelelôen konfiguráltunk, akkor a
HOSTNAME parancs kiadásakor a teljes nevet ("home.my.private.net") fogjuk
megkapni.
Elvileg bármilyen nevet választhatunk a gépünk és az alhálózat számára. Ha
azonban azt akarjuk, hogy más gépekkel is tudjunk kapcsolatot létesíteni,
akkor olyan nevet és alhálózatot kell használnunk, amelyek a DNS-nél nyilván
vannak tartva.
A DNS
-----
A DNS egy olyan számítógép, amelyiket arra használunk, hogy a neveket IP
címekké konvertáljuk. Ehhez persze tudnunk kell a DNS IP címét, egyébként
a 22-es csapdájába esünk. A DNS gép(ek) IP számát a RESOLV fájl tárolja.
Például a szerzô RESOLV fájlja a következôképpen néz ki:
domain chem.ualberta.ca
nameserver 129.128.5.233
nameserver 129.128.76.233
nameserver 129.128.4.241
Tegyük fel, hogy van egy mûködô slip kapcsolatod. Ekkor "pingethetjük" a
gépen lévô sl0 interfészt az IP száma alapján. Ha a számhoz tartozó név
benne van a HOSTS fájlban, akkor a név alapján is "pingethetjük" az
interfészt. Ha ezek a dolgok mûködnek, akkor a "home" és "work" gépek
közötti összeköttetés tökéletes.
A következô kérdés az, hogy hogyan tudunk más gépekkel érintkezni. Tegyük
fel, hogy "pingetni" akarjuk az "otherwork" nevû gépet:
ping otherwork.my.private.net
A "home" gép a parancs kiadása után megpróbálja meghatározni az "otherwork"
IP számát. Ha az adat benne van a HOSTS fájlban, akkor a gép megkezdi a
"pingetést". Ha ott nem találja, akkor megpróbálja megkérdezni a DNS-t, de
mivel még nincs minden megfelelôen konfigurálva, ez sem fog mûködni. Ha tovább
akarunk lépni, akkor beírhatjuk a HOSTS fájlba "otherwork" IP számát is:
199.99.99.55 otherwork.my.private.net
Akkor most már a ping otherwork.my.private.net parancs ugyanúgy mûködni fog,
mintha a ping 199.99.99.55 parancsot adnánk ki.
Fog ez mûködni? Hát nem igazán. Két ok miatt sem.
Probléma 1. Tegyük fel, hogy konfiguráltuk gépünkön az lo és sl0
interfészeket. Ha "pingetni" akarjuk "otherwork"-ot, akkor melyik
interfész fogja az adatokat kiküldeni? Ezt a problámét oldja meg az
alapértelmezés szerinti út (default route) bevezetése. Ez azt jelenti,
hogy az otthoni gép minden olyan csomagot, amelynek a rendeltetési helye
nem ismert, az alapértelmezési út végén lévô másik gépnek (ami slip kapcsolat
esetén a slip vonal másik oldalán lévô gép,"work") fogja küldeni.
Az alapértelmezés szerinti utat a ROUTE.EXE programmal adhatjuk meg:
route add default 199.99.99.88 1
A TCP/IP eljáráson alapuló hálózatok úgy mûködnek, hogy a csomagok egyik
géptôl a másikra továbbítódnak addig, amig a csomagok el nem érik a
rendeltetési helyüket. Ha egy csomag rendeltetési helyének IP címe nem
ismert, akkor az adott gép a csomagot az alapértelmezés szerinti út felé
továbbítja.
A kiadott ping 199.99.99.55 parancs tehát továbbítódik a munkahelyi géphez
és annak helyes mûködése esetén eljutnak a 199.99.99.55-ös géphez.
Vizsgáljuk meg, hogy "work" hogyan továbbítja a csomagokat "otherwork"-nek.
Esetünkben mindkét gép az Interneten van. Mivel az IP számuk elsô három
darabja megegyezik és a netmask 255.255.255.0, ezért ugyanazon az
alhálózaton is vannak. Ha a csomagok az alhálózaton kívülre kellene küldeni,
akkor "work" az alapértelmezés szerinti útra küldené a csomagokat. Mivel
ez esetben azonban az alhálózaton belül van mindkét gép, az adatcserét
kizárólag nekik kell lebonyolítaniuk.
Az ethernet hálózatra kapcsolt gépek a hálózati adapterük (MAC) címe
segítségével érintkeznek. A MAC cím egy olyan betû-szám kombináció, amellyel
a gyárban látják el a kártyát. Minden kártyának saját MAC címe van. Egy ilyen
cím pl.: 00:0c:11:22:33:44
Ha "work" csomagot akar küldeni "otherwork"-nek, akkor tudnia kell "otherwork"
MAC címét. Ilyen esetben "work" kiküld egy üzenetet a hálózatra, amelyben azt
kérdezi, hogy melyik gép rendelkezik a 199.99.99.55-as IP számmal. Válaszul
"otherwork" kiküldi a MAC címét, amelyet "work" is megkap. Ezek után "work"
minden "otherwork"-nek küldött csomag elé fogja tenni "otherwork" MAC címét,
így kizárólag "otherwork" fogja fogadni a (neki küldött) csomagokat.
Amikor "otherwork" megpróbál válaszolni a "home" által kiadott ping
parancsra, akkor kiad egy üzenetet, amiben megkérdezi, hogy mi a
199.99.99.99-es gép MAC címe. Az alhálózatra küldött üzenetek nem jutnak
el mind automatikusan "home"-hoz, hiszen ez feleslegesen lassítaná a slip
kapcsolatot, ami amúgy sem gyors. Ezért elvileg "otherwork" nem lenne képes
megkapni "home" MAC címét, így a ping parancsra sem fog tudni válaszolni.
A megoldás az, hogy "otherwork" "work"-nek küldi a "home"-nak szánt
csomagokat, amelyeket aztán "work" továbbküld "home"-nak. Ezért, amikor
"otherwork" keresi a 199.99.99.99-es gép MAC címét, "work"-nek kell
válaszolnia a saját MAC címével.
Ezt az eljárást "proxy arp"-nak hívják. A "proxy" megbízást jelent, tehát itt
arra céloz ez az elnevezés, hogy "work" a "home" megbízottjaként mûködik.
Ehhez a következô parancsot kell kiadni "work"-ön:
arp -s 199.99.99.99 00:c0:11:22:33:44 pub
Az "arp" címmeghatározási eljárást (Address Resolution Protocol) jelent. A
parancs végén szereplô "pub" szó arra utal, hogy "work"-nek a saját MAC címét
(00:c0:11:22:33:44) kell kiadni, amikor valamelyik gép a 199.99.99.99-es
gép MAC címét keresi.
Ha a megadott "arp" parancsot végrehajtották "work"-ön, akkor a "home"-on
kiadott "ping otherwork" parancs minden további nélkül mûködni fog.
A teljes kép . Miért ne használjunk saját hálózatot?
----------------------------------------------------
A slip kapcsolat alapvetô szabályai a következôek. Az IP címe az otthoni PC
sl0 interfészének ugyanazon az alhálózaton kell lennie, mint az a slip
interfész, amelyikhez kapcsolódsz.
Elvileg lehetséges, hogy a munkahelyi PC slip és ethernet interfész
különbözô alhálózaton legyen. Ez megnehezíti a dolgunkat, azonban nem
lehetetlen megoldani. A fô megoldandó probléma az, hogy a nem slip-es
alhálózaton kiadott üzenetek megtalálják a slip-es alhálózatot. Ez azonban
nem egyszerû dolog, ezért mi nem is fogunk vele foglalkozni.
Ha viszont a sl0 és lan0 interfészek egy alhálózaton vannak, nagyon
könnyû dolgunk van, mivel az otthoni gépnek küldött csomagok a munkahelyi
gép alhálózatára érkeznek, így az minden gond nélkül tovább tudja adni az
otthoni gépnek a slip vonalon keresztül.
Mivel a slip vonal mindkét vége ugyanazon az alhálózaton van, mint a
lan0 interfész, e csomag használatához még két IP címre lesz szükséged a
munkahelyi gép már meglévô lan0 interfészéhez tartozó IP címén kívül. Az
elôbb említett okok miatt mindhárom címnek ugyanazon az alhálózaton kell
lennie.
Mivel más gépek név alapján is fogják keresni az otthoni gépedet, a DNS-nél
regisztrálva kell lennie az otthoni gép sl0 interfészéhez használt IP
cím-név párosnak. A munkahelyi gép sl0 interfészéhez használt IP címet csak
az otthoni gép fogja használni, ezért ennek nem muszály regisztrálva lennie.
Arra azonban ügyeljünk, hogy az alhálózatunkon más gép ne használja ugyanezt
a címet, mivel abból problémák adódhatnak. A legjobb az, ha megkéred a
hálózat rendszergazdáját, hogy adjon neked használaton kívüli IP címeket.
Saját hálózat bekapcsolása
--------------------------
Tegyük fel, hogy létrehoztál egy saját hálózatot, és e csomag segítségével
Internet hozzáférést szeretnél biztosítani egy gépen keresztül a saját
hálózatban lévô gépek számára. Két lehetséges eset van:
(1) A saját hálózat ugyanazon az alhálózaton van, mint "work".
(2) A saját hálózat más alhálózaton van.
Az elsô esetben nagy valószínüséggel meg tudod oldani, hogy a saját hálózatban
lévô minden gép elérje az Internetet, viszont a második esetben ez nem
lehetséges, az alábbiak vázolt okok miatt.
Tegyük fel, hogy az otthoni alhálózat száma 199.11.11 és a hálózati kártya
által használt IP szám 199.11.11.11 Ennek az interfésznek nem lehet "home" a
neve, hiszen azt az sl0 interfésze (199.99.99.99) használja. Hívjuk ezért
"etherhome"-nak. Legyen egy másik gép is a saját hálózaton "otherhome" névvel
és 199.11.11.22 IP címmel.
Ezt a hálózat a következôképpen kell konfigurálni, hogy mûködjön, ha a
slip kapcsolat nem él:
Mindkét gépen készítsük el a HOSTS fájlt az alábbiak alapján:
199.11.11.11 etherhome
199.11.11.22 otherhome
Mindegyik gépen állítsuk be, hogy az alapértelmezés szerinti út a másik
gépre mutasson:
"Etherhome" route parancsa: route add default 199.11.11.22 1
"Otherhome" route parancsa: route add default 199.11.11.11 1
Ezek után a gépek a két gép tud kapcsolatot létesíteni egymással. DNS-re
nincs is szükség. A RESOLV fájlban tehát elég megadni az alhálózatunk nevét:
domain my.private.net
Most pedig vizsgáljuk meg, hogy mi történik, amikor a "home" az Internetre
kapcsolódik a munkahelyi gépen keresztül.
A slip kapcsolat létrejötte után az alapértelmezés szerinti út a munkahelyi
gépre fog mutatni, mivel végrehajtódik az alábbi parancs:
route add default 199.99.99.88 1
Ez azonban nem fogja befolyásolni a két otthoni gép egymás közötti
adatforgalmát, mivel ezek ismerik egymás IP címét és az alapértelmezés
szerinti útat csak azok a csomagok követik, amelyeknek ismeretlen a
rendeltetési helye.
A "home" gép valószínüleg kifogástalanul fog az Interneten mûködni. Amikor
például elindítod a WebExplorer-t és egy, az otthoni hálózaton kívülre mutató
URL-t adsz meg, akkor a TCP/IP eljárás az alapértelmezési utat használva, a
munkahelyi gépre fogja irányítani a csomagokat, amelyik aztán célba juttatja
azokat.
Probléma csak akkor lesz, ha "otherhome" akarja elérni az Internetet.
Tegyük fel, hogy "otherhome" megpróbálja "pingetni" "otherwork"-öt. Ha
"otherwork" IP címe benne van "otherhome" HOSTS fájlában, akkor a csomagok
elôször az "etherhome" interfésznek, majd pedig (a slip vonalon keresztül)
"work"-nek továbbítódnak. "Work" lan0 interfészén át a csomagok tehát rendben
eljutnak "otherwork"-höz. "Otherwork" azonban nem fog tudni válaszolni, mivel
a csomagok egy olyan géptôl jönnek, amelynek nem ismert az alhálózata.
Természetesen ez a probléma áthidalható, de a megoldás nem egyszerû és nem
is minden esetben használható. Ha például véletlenszerûen választottad az
otthoni alhálózat számát, akkor az "otherhome" által válaszul küldött csomagok
azon az alhálózaton fognak kikötni, amelyiknek elloptad a számát.
Az elsô esetben leírt hálózat konfigurálása
-------------------------------------------
Ebben az esetben az otthoni alhálózat a munkahelyi alhálózat része. A
hálózat adminisztrátorának IP címeket kell adnia az összes otthoni PC-nek,
valamint szükség lesz egy extra IP címre a munkahelyi PC sl0 interfészéhez.
Két otthoni géphez jó néhány IP számra lesz szükséged. Az alábbiakban
találsz egy példát:
munkahelyi gép lan0 199.99.99.77 (DNS-nél regisztráltnak kell lennie.)
munkahelyi gép sl0 199.99.99.88 (Használatlan IP szám, lehet regisztrálatlan
is.)
otthoni gép 1 sl0 199.99.99.99 (DNS-nél regisztráltnak kell lennie.)
otthoni gép 1 lan0 199.99.99.11 (Használatlan IP szám, lehet regisztrálatlan
is.)
otthoni gép 2 lan0 199.99.99.22 (DNS-nél regisztráltnak kell lennie.)
Kövessük újra végig az elôzô bekezdésben vizsgált esetet. Amikor tehát
"otherhome" "pingeti" "otherwork"-öt, a csomagok rendben eljutnak
"otherwork"-höz. Ezúttal azonban "otherwork" látni fogja, hogy "otherhome"
ugyanazon az alhálózaton van, ezért kiadja az alhálózatra az üzenetet,
amelyben keresi a 199.99.99.22-es gép MAC címét. "Otherhome" azonban nem
lesz képes válaszolni, csak akkor, ha "work" "proxy arp" szolgáltatást
nyújt a második otthoni gép számára is. Ezért a munkahelyi gépen ki kell
adni a következô parancsot is:
arp -s 199.99.99.22 00:c0:11:22:33:44 pub
Kiterjedt otthoni hálózat
-------------------------
Tegyük fel, hogy sok gépünk van otthon, a munkahelyivel megegyezô
alhálózaton és egy slip kapcsolat segítségével az Internetre akarjuk az
összes gépet csatlakoztatni. Ekkor, a két gépes otthoni hálózat esetében
megadott módon kell konfigurálni egy otthoni és egy munkahelyi gépet a
slip kapcsolatra. Mindegyik otthoni gépre fel kell tenni egy olyan HOSTS
fájlt, amelyik tartalmazza az összes gép IP címét és nevét, így az otthoni
hálózat akkor is mûködni fog, ha a slip kapcsolat nem él.
Amikor a slip kapcsolat felépült, a munkahelyi gépnek "proxy arp"
szolgáltatást kell nyújtania az összes otthoni gép számára. Az alapértelmezés
szerinti út az otthoni gepek számára az az otthoni gép legyen, amelyiken
a slip interfész konfigurálva lett. E gép esetében viszont az alapértelmezés
szerinti út a munkahelyi gép kell, hogy legyen.
Vizsgálati eszközök
-------------------
A már az elôzôekben is említett PING.EXE program mellett nagyon hasznos
segédprogram a NETSTAT.EXE, amelyet például az alábbi módon használhatunk:
netstat -r
Ez a parancs kilistázza az összes konfigurált utat a konfigurált IP címekkel
és interfészekkel egyetemben. Ha az ARP táblázatot akarjuk megnézni, akkor az
a opciót használhatjuk:
netstat -a