teejuht
1. Sissejutatus
2. Vajalik riistvara
3. Vajalik tarkvara
4. Võrgu konfigureerimine
5. Nime panek
6. Linux ja W95
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).
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.
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.
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).
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