Ethernet'i võrk
 

teejuht

                1. Sissejutatus
                2. Vajalik riistvara
                3. Vajalik tarkvara
                4. Võrgu konfigureerimine
                5. Nime panek
                6. Linux ja W95

1. Sissejuhatus

Järgnev jutt püüab anda nõu selle kohta kuidas kahte linuxi masinat ühendada omavahel ehternet'i võrku. Võiks ütelda, et ka lihtsalt võrku. Sõna ethernet rõhutab siis seda, et

- kasutatase ISA siini kaare
- andmevahetuskiirus ca 1MB/s
- juhtmeks kahe arvuti vahel on nn. koaksiaalkaabel või keerupaar.

Kaks mulle teadaolevat muud võimalust arvuteid ühendada oleks modemite abil:

- tavalised modemid nn. leased line rezhiimis (st. ilma telefonifirma 90 V'ta)
- null modem'i kaabliga (serial või parallel portide vahel)
 

Tulemust võiks kujutada ilukirjandulslikul joonisel nii:


 

tehniline joonis tuleb all pool. Kui pärida miks kaks arvutit võrku ühendada, siis võib loaetleda järgmisi põhjused:

- kahe arvuti vahel saab kiiresti infot liigutada
- ühe arvuti peal käivitame programm'i ja selle graafilise väljundi (koos kontrolli ja juhtimisega) suuname teise monitorile.
- õppida käsitlema igasuguseid servereid (www, squid, ftp ...)
- joonisel on rõhutatud, et mõlemad arvutid võivad olla teatud programmide mõttes serverid ja mõnede mõttes kliendid. Ka samaaegselt (nt. www, ja Netscape).

2. Vajalik riistvara

Kumbagi arvutisse on vaja pista üks võrgukaart ja ilmselt on vaja see üle käia kaardi jaoks mõeldud spetsiaalse 'setup.exe' floppiga - tõsi, nagu nimi näitab on see DOS'i programm ja seepärast peaks teil käepärast olema nn. DOS'i boot floppy.
Pange kaart selle programmiga nn. 'jumperless mode'i ja andke IRQ'le ja IO'le sobivad väärtused (tavaliselt see programm ka näitab mis on vabad). Kui teil muid kaarte sees pole siin võtke nt. IRQ 10 ja IO 280 h (hexadecimalis tavaliselt).

Veel on vaja BIOS'i setup'ist panna too IRQ ja IO nn. Legacy ISA moodi.

Iial ei tea kuidas majas faasid on ja sellepärast on parem ühendada

printer ja arvuti ja
monitor ja arvuti ja
arvuti ja arvuti

samasse seinakontakti (vargapessa).

Ning muidugi ühendage võrgukaardid omavahel jutmega:

- keerupaari puhul võite otsad otse sisse pista
- koaksiaalkaabli puhul on vaja ühte juhet, kahte T-connectorit ja kahte terminaatorit. Ühendus on tagantvaates selline:


 

Kus sinised jubinad on need T-connectorid (connector keeratakse otse kaardi külge kuigi jooniselt jääb mulje, et on vaja mingit juhet) ja punased on terminaatorid.
 

3. Vajalik tarkvara

Kõigepealt - kerneli peab võrku toetama, st. oskama suhelda teie konkreetsete võrgukaartidega.

Alustame sellest mida distributsiooniga kaasasolevatest asjadest valida. Kui saate distributsiooni softiga asja enam-vähem tööle, siis on ehk huvitav ja ka praktiliselt põhjust tõmmata netist sama aga uuem verisoon tarkavara.
Muidu on veel nii, et takerdute kompilleerimise juures kuhugi ja ei saagi asja endaga tegeleda.

Niisiis, normaalne oleks kui te installeeriksite muude enda meelest oluliste asjade seas (katke slackware 3.5 setupist):

N - Networking (TCP/IP, UUCP, Mail, News) seeriast (expert):

- apache
- tcpip1
- tcpip2
- lynx

sektsioonid.

Et olla kindel et vajalikud binarid (ja soovitavalt ka man paged) on olemas vaadake käske: hostname, nslookup, telnet, route, ftp ...

Aga kui soovite, siis põhiline võrgutarkvara on 'net-tools-1.33.tar.gz' komplektis ning 'netkit-base-0.10.tar.gz' - otsige netist!

Kompilleerige võrku toetava kernel

Siin me eeldame, et teil linux üldiselt töötab ja et te olete ka varem kernelit ja mooduleid kompilleerinud (selles mõttes, et teate kuidas see üldiselt käib). Võrgu kaardi toetuse võib kernelisse (vmlinuz) endasse sisse kompileerida või teha vastav moodul.

Niisiis, toon ära need kohad mida on vaja kindlasti valida võrgu toetuseks. Osa asju läheb paratamatult kernelisse ja osa moodulitena.
(M - module). Te peate ise teadma mida teil veel vaja on (nt. failisüsteeme). Kasutan kernelit 2.0.34 ja make menuconfig't.
 

- loadable module support -> enable loadable module support [*]
- general support -> networking support [*]
- networking options -> TCP/IP networking [*]
- networking options -> drop source routed frames [*]
- networking options -> allow large windows [*]
- network device support -> network device support [M]
- network device support -> dummy net driver support [*]
- network device support -> ethernet (10 or 100 Mbit) [*]
- network device support -> Other ISA cards [*]
- NE2000/NE1000 ISA support [M]

no muidugi viimased kaks rida tuleb teil panna vastavalt oma kaardile.
kompilleerime kerneli nagu ikka ja moodulid ka nagu ikka ja veendume, et  /lib/modules/2.0.34/net/ kataloogis on muude seas:

dummy.o
ne.o

moodulid kui te tegite nad moodulitena.

Ärge unustage enne make modules_install'i vanad kuhugi tagavaraks liigutada ja teha 'lilo' peale vana kerneli asendamist uuega!

Ning nüüd veenduge, et arvuti käivitamisel õige moodul õigete IRQ ja I/O väärtustega kasutusele võetakse. Need on olulised failid:

/etc/rc.d/rc.S:

# This loads any kernel modules that are needed.  These might be required to
# use your CD-ROM drive, bus mouse, ethernet card, or other optional hardware.
if [ -x /etc/rc.d/rc.modules ]; then
  . /etc/rc.d/rc.modules
fi

/etc/rc.d/rc.modules:

# Ethernet cards based on the 8390 chip.
#/sbin/modprobe 3c503
#/sbin/modprobe ac3200
#/sbin/modprobe e2100
#/sbin/modprobe hp-plus
#/sbin/modprobe hp
/sbin/modprobe ne io=0x300
#/sbin/modprobe smc-ultra
#/sbin/modprobe wd

modprobe on programm mis laeb näidatud  mooduli  (ne) koos võrgukaardi jaoks olulise parameetriga (io). Linux teeb ise kindlaks kaardi IRQ kui ta I/O-d teab.

Kaarte on mitmesuguseid, mõnedel on jumperid peal, mõned on nö. Plug and Play (halb variant) aga võrgukaartidel on linuxi jaoks kaks olulist parameetrit muude seas:

IRQ - katkestuse number, valisin 10
I/O - Input/Output kanali algus, valisin 0x300

Neid saab kaartidel olevate nn. kivide mällu kirjutada kaardile vastava ja tavaliselt kaasasoleva programmiga 'setup.exe' ja linuxi jaoks on need olulised. Oleks võinud ka mingid muud valida, nt
5 ja 0x280 või 9 ja 340 aga ka mitte päris suvaliselt - 0 ja 0x1000. Oluline on teada, et peaaegu igal nö. device'il on oma katkestus ja I/O mida arvestades OS seadmega suhtleb. I/O kohta veel niipalju, et 300 on kanali algus, tegelikult kasutab kaart vahemikku 0x300 - 0x320.

Need arvud on puhtalt tehnilised ja ei seostu sugugi hiljem kõne alla tulevatega:

- MAC numbritega (igal kaardil oma maailmas (vähemalt subdomainis) unikaalne xx:xx:xx:xx:xx:xx ja muutmatu kombinatsioon)
- IP aadressidega ega (igale võrgukaardile tarkvaraliselt omaistatav arv kujul xxx.xxx.xxx.xxx)
 

Kui teil on mitu võrgukaarti arvutis, siis on vist vaja nende kaartide toetus kernelisse sisse kompileerida ja lilosse lisada rida append:

kokkuvõttes on /etc/lilo.conf'i linux'i sektsioon selline:

image = /vmlinuz
    root = /dev/hda7
    label = linux
    append = "ether=10,0x280,eth0 ether=5,0x300,eth1"
    read-only

siin on äranäidatud konkreetselt millesele kaardile mis IRQ j aIO algus vastab

Võimalik, et automaatne append kah toimib:

    append = "ether=0,0,eth0 ether=0,0,eth1"

Seda kas uus kernel võrgukaardi(d) kätte sai on näha bootimisel (siin tuleb bootida - kerneli vahetamisel ja hardware lisamisel ilma ei saa).

loading device 'eth0'...
ne.c:v1.10 9/23/94 Donald Becker ([email protected])
NE*000 ethercard probe at 0x300: 00 00 e8 22 b2 3d
eth0: NE2000 found at 0x300, using IRQ 10.

Kui see tekst liiga kiiresti mööda jooksin saab seda näha käsuga dmesg.

Loodetavasti on asi olemas ja niipalju korras.
 
 

4. Võrgu konfigureerimine

Nii, raud on ära tuntud!

nüüd on vaja ära sättida device eth0'i  mille all kaart esineb parameetrid:

- IP aadress (Internet Protocol)
- broadcast
- netmask

eth0 pole tavaline device mis asub koos teistega /dev kataloogis vaid asub mälus kernelis. Ja kui mingi programm saadab info mõne teise arvuti programmile (nt. kaks ftp'd), siis

- programm saadab info nö, välja,
- see jõuab kernelisse,
- kernel vaatab millisesse oma masina võrgukaarti datagramm saata
- datagramm läheb elekrina jutmesse
- teise arvuti võrgukaart korjab datagrammi üles ja saadab kernelisse
- teise arvuti kernel omakorda programmile, millele see ifo oli mõeldud

Niisiis, kuivõrd võrgukaart on siiamaani kerneli jaoks identifitseeritud kui eth0, aga suhtlemine arvutite vahel toimub kasutades IP aadresse, siis on vaja siduda nende nn. device name'idega IP aadressid. Tegelikult seostatakse iga võrgu device'ga ka netmask ja broacast. Kahe arvuti puhul pole neil aga praktilist tähendust. Sellest tuleb juttu dns'i ja internetti käsitlevatel lehtedel.
 

Seda IP aadresside sidumist saab teha järgmiselt:

bash# ifconfig lo 127.0.0.1
bash# route add -net 127.0.0.0

bash# ifconfig eth0 192.168.1.1
bash# route add -net 192.168.1.0
 

Käsu ifconfig mõte on IP number seostada interfacega.
Käsku route on vaja nn. kerneli staatilise routingu tabeli (pr. k. teede tabel) moodustamiseks.
Routingu tabelis on kirjas millisesse võrku saab datagramme saata läbi millise interface.
nn. C -klassi puhul on tavaliselt IP aadressi viimane koht (1)  konkreetse võrgukaardiga (antud juhul ka masinaga) seotud. Esimesed kolm aga võrguga (192.168.1). Meie puhul on kaks erilist IP aadressi:

192.168.1.0 - nn. võrgu number
192.168.1.255 - nn. broadcast (kui teha ping 192.168.1.255 siis saatetakse pakett kõigile võrgu IP aadressidele. Ärge tehke!)

Meil näitab see tabel

bash# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     0      0       12 eth0
loopback        *               255.0.0.0       U     0      0        7 lo
bash#

kernelile ära, et:

- programmide poolt 192.168.1.0 võrku mõeldud datagrammid tuleb suunata device'le eth0 (IP 192.168.1.1)
- loopback'i ehk 127.0.0.0 võrku mõeldud programmid tuleb saata device'le lo.  (IP 127.0.01)

lo on selline kaval asi, et võmaldab ühe masina peal kuigi seal võrgukaarti pole ikka katsetada võrgu tarkvara. Kui midagi saata lo'le siis tuleb sealt kaudu see kohe ka tagasi ja programmile jääb mulje, et on reaalne võrk on olemas. Proovige ping'i, telnet'i  jne.
Huvi pärast võite lisada käsuga route staatilisse routingu tablelisse veelgi kirjeid, uurige 'man route'  näiteid.

Ja kui soovite mõne rea ära koristada siis tehke:

bash# route del 192.168.1.0

Et näha kuidas asi õnnestus peaks nägema midagi sellist

bash# ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
          UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
          RX packets:880 errors:0 dropped:0 overruns:0 frame:0
          TX packets:880 errors:0 dropped:0 overruns:0 carrier:0 coll:0

eth0      Link encap:Ethernet  HWaddr 00:00:E8:22:B2:3D
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1559 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1837 errors:0 dropped:0 overruns:0 carrier:0 coll:0
          Interrupt:10 Base address:0x300
 

Kui soovite interface maha võtta:

bash# ifconfig 192.168.1.1 down

kui soovite, et Destinationi alla tuleks võrgu nimi, siis redigeerige faili /etc/networks. Ja nii tehke mõlemal arvutil.

Et saada võrguga tegeled peate veel muutma/vaatama üle kolm faili:

/etc/NETWORKING
YES

/etc/hosts.allow
ALL:ALL

/etc/hosts.deny
fail on tühi

Nimed räägivad enda eest.

Nüüd peaks juba saama kasutada arvuteid võrgus kuigi me pole IP aadressidele omakorda nimesid seostanud (proovige ping 127.0.0.1, ping 192.168.1.1, ping 192.168.1.2 kui tegite ka teise arvuti niikaugele).

5. Arvutile nime panek

Esmalt ütleme, et arvuti nimi koosneb tavaliselt kahest osast:

ut.ee, www.netscape.com

- mis jääb enne esimest punkti on nn. 'hostname part' - ut, www
- ülejäänud on nn. 'domainname part' - ee, netscape.ee

ja seda milline nimi arvutil on näitab käsk 'hostname':

võtmega:

- i :näitab nimele vastavat IP aadressi
- f: tervet nime ehk nn. FQDN - Fully Qualified Domain Name
-d: domain name part'i
 

Muide IP aadress koosneb rangelt neljast osas aga FQDN võib olla kuitahes mitme punktiga!
Muuta nime kõiki osi on vaja teha järgmist:
 

a.
/etc/hosts muuta read nii (kõik kolm välja on tingimata vajalikud, eriti viimane):

192.168.1.1      ut.ee            ut

b.
bash# hostname ut
(et domaini nime muuta tuleb teha seda käsitsi /etc/hosts faili sisu muutes)

c.
käimasolevat sessiooni see ei mõjuta, aga tuleks muuta ka /etc/HOSTNAME
sisu vastavaks

d.
et prompt muutuks logida korra välja

e.
kusjuurs /etc/host.conf on selline:
order hosts
multi on

f.
ja /etc/resolve.conf selline
domain ee

(See on vajalik, et arvuti mõistatakse õieti teie pöördumist ut poole pöördutes tegelikult ut.ee poole)

Muide, et üks arvuti teaks teise nime tuleb see kirjutada samas formaadis /etc/hosts faili.
 

Mida võib lõpuks kontrolliks teha on:

a) ping

bash# ping localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.3 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.2 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.2 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.2 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.2 ms

--- localhost ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.2/0.2/0.3 ms
bash#

või ping 192.168.1.2 või ping ut.ee või ping juta.ee (eeldades te te need nimed valisite - tulemus peak olema sama).

b) telnet

bash# telnet ut.ee
Trying 192.168.1.1...
Connected to ut.ee.
Escape character is '^]'.

Linux 2.0.34 (ut.ee) (ttyp1)
 

ut login:
 

c) ftp

bash# ftp ut.ee
Connected to ut.ee.
220 ut.ee FTP server (Version wu-2.4.2-academ[BETA-15](1) Tue Nov 11 20:12:26 CST 1997) ready.
Name (ut:root):

d) lynx

bash# lynx ut

Tegelikult on olemas üks oluline fail : /etc/rc.d/rc.inet1. See on üks nn. startup scriptidest.

Kui te olete talitanud nii nagu tegite siis järgmisel boodil on kõik settingut taas kadunud. Startup scriptide mõte on settingud paika seada automaatselt peale arvuti käivitamist. Ma ei soovita seda faili inet1 just maha võtta aga, et ise käsi valgeks saada uurige seda ja lõpuks kirjutage oma settingud faili /etc/rc.d/rc.local (või kirjutage inet1 ümber). inet1'es kommenteerige kõik välja.

Teie local'i võrgule vastav sektsioon oleks siis selline:

ifconfig lo 127.0.0.1
route add -net 127.0.0.0
ifconfig eth0 192.168.1.1
route add -net 192.168.1.0
#HOSTNAME=`cat /etc/HOSTNAME`
#hostname $HOSTNAME
 

Tegelikult määratakse hostname juba enne: /etc/rc.d/rc.M's; sellepärast, et osa daemon'e (nt. sendamail) tahab, et nende käivitamisel oleks teada millise nimega masinal ta käib.
 

Lõpuks olgu toodud ka tabel, kus on kirjas olulised võrku puutuvad asjad:
 
üks arvuti  teine arvuti 
device'i nimi eth0 eth0
FQDN  ut.ee juta.ee
IP  192.168.1.1 192.168.1.2
MAC - aadress 00:00:E8:22:AD:78 00:00:E8:22:B2:3D 
Netmask 255.255.255.0 255.255.255.0
gateway "" ""

MAC aadress on võrgukaardi nimi, ütleme, et elektriimpulliside jaoks.
 

Huvitav käsk on 'arp'. See näitab milline füüsiline st. MAC number vastab kohaliku võrgu muude masinate kaarditide IP numbritele. Tegelik nö. elektri liikumine käib ikka MAC numbrite peale.

bash # arp -a
Address                 HWtype  HWaddress           Flags Mask            Iface
ohoo.ee                 ether   00:00:E8:30:7A:0F   C     *               eth0
bash #
 

Õigluse huvides üleme, et olemas on ka programm (script) netconfig mis teeb kõik automaatselt ära :)
 
 
 

9. Linuxi ja Windows 95 masinate ühendamine

Ma kasutan samu masinaid: suvi on linux ja laura on Windows 95. Töötagu suvi nii nagu ta eelmises näites sätitud sai ja eeldame, et Windowsi masinal on installikad kataloogis C:\WIN95OSR. Control Panel -> Network on puhas.
 
 
 
1. Avame Control Panel -> Network ja Add -> Adapter:
Accton -> Accton EN1660 PnP LAN Card
Properties: IRQ 10, I/O 300
Remove'me kõik peale adapteri
2. Protocol - > Microsoft -> TCP/IP 
Properties:IP 192.168.1.2, Netmask 255.255.255.0
3. loome faili c:\windows\hosts sisuga: 
192.168 .1.1 ut.ee ut
192.168.1.2 juta.ee juta

NB! Control Panel -> Network on kahe reaga. Kaart ja Protokoll.
Peaks

1. saama pingida kummaltki poolt nii nime kui numbri peale.
2. töötama Windowsi FTP klient nt. WS_FTP
3. töötama Netscape
4. telnet

Arusaadavalt ei saa teha 3 viimast Windowsi masinasse - seal pole servereid. Tõsi nt. www.tucows.ibs.ee on olemas rohkelt Windowsi servereid (ftp, web ...).

Täiendavaks võimalused:

- maili kliendi tööle panek
- linuxi kataloogide mappimine 95-le - samba
- vastupidi - samba
- trükkimine linuxi printerile - samba
- vastupidi - samba
- passwordi authentimine linuxis

viit viimast vaata samba alt!

NB! Ärge imestage, et W95 puudub Network, seal ei oleks nii kui nii midagi.
 
 
 
 

gfgfg