Slovnicek pojmu:
datagram=paket=blok dat+hlavicka posilany mezi pocitaci
router=smerovac=krabice smerujici pakety mezi sitemi jez propojuje
gateway=brana=zprostredkovava spojeni s vnejsimi sitemi
daemon=demon=program jez ceka na preruseni (napr. od ser. portu), bezi na pozadi
Zde bych se nejprve zminil o dvou z rodiny protokolu, kterymi komunikuji UNIX systemy. Jak jiste vite je to TCP/IP. TCP/IP vzniklo proto, ze pocitace v dobe vzniku tohoto standartu byly propojeny ruznym hardwarem. Pozadavkem bylo spojit pocitace do siti tak, aby aplikace nevedely nic o slozitosti spojeni pocitacu a mohly komunikovat jednoduse pres standartni systemove sluzby/rozhrani.
Tyto datagramy jsou posilany mezi pocitaci ruznym hardwarem. Od lokalniho loopbacku pres jednoduche spojeni pres seriovy kabel nebo modem (zapouzdrovaci protokoly SLIP,CSLIP,PPP) pres paralelni kabel (PLIP) po Ethernet nebo jinou sit ci typ pripojeni (T1, ARCNET, fddi, atm,.....) a treba i amaterskou radio sit. Konfiguraci nekolika nejobycejnejsich typu spojeni nyni uvedu.
V TCP/IP se adresuji site, pakety jsou smerovany mezi sitemi zarizenimi zvanymi routery (krabice co vedi kam co poslat) pouze na zaklade adresy cilove site. Po doruceni do koncove site se datagram preda cilovemu pocitaci.
Aby se predeslo konfliktum s ruzne velkymi sitemi, tak se zavedly tri typy, kazdy s jinym moznym maximalnim poctem pocitacu. Rozdil v adresovani techto 3 typu siti je v tom, kolik bytu z IP je pouzito na identifikaci site a zbytek na identifikaci pocitace v siti. Pri smerovani paketu je nutne znat velikost cilove site - tu si
routery zjisti z 1. bajtu IP adresy a vyslou datagram dal podle svych tabulek.
Adresa kazde site musi byt unikatni (existuje organizace ktera vam na pozadani prideli adresu site na Internetu, ale vubec to neznamena ze vase domaci spojeni s kamaradem pomoci PPP musite registrovat jako sit).
Jeden pocitac muze mit i vic IP adres, pricemz se necisluji IP adresou pocitace ale rozhrani ("koncove draty sitovych karet a propojeni"). Routery maji na sobe vetsinou pripojky na vice siti a prepojuji pakety smerem k cilove siti (behaji v nich skritci s lopatama a prehrabujou pakety sem a tam).
V tabulce jsou uvedeny typy siti, rozsahy jejich IP adres a masky pro konfiguraci routovaci tabulky jadra. To je dulezite kdyz se budete
pripojovat do existujici site/vytvaret svou vlastni.
Kdyz v Linuxu konfigurujete jakekoli sitove zarizeni musite u neho krome jeho IP adresy uvest tez masku site (podle typu site A,B,C).
Maska je dulezita pouze pro vas system, ktery na rozdil od routeru si nezjistuje typ site podle IP ale natvrdo udela IP and MASKA, to co vyjde porovna se svoji interni tabulkou a podle toho co pasuje smeruje datagram dal. To co se
oreze je pouze cislo stanice v siti (zajimave az po doruceni do cilove site). Jadro totiz musi behat rychle a tudiz prohledani tabulky s par cislama pro primo dosazitelne site je to nejrychlejsi co jde napsat. Pokud jadro nenajde cilovou sit/prijemce v tabulce, posle pakety na gateway (u PPP parametr defaultroute
).
sit | filozofie | mozne IP | maska |
---|---|---|---|
A | hodne pocitacu-malo siti | ![]() | 255.0.0.0 |
B | stredne pocitacu-stredne siti | ![]() | 255.255.0.0 |
C | malo pocitacu-hodne siti | ![]() |
255.255.255.0 |
D | adresovani skupiny pocitacu zaroven | ![]() |
|
E | rezerva pro budouci pouziti | ![]() |
Jeste nez uvedu konkretni nastaveni jednotlivych zarizeni, upozornuji vas na zajimavy adresar
/proc/net/ pomoci ktereho je mozno dozvedet se spoustu zajimavych veci o siti (pristup ordinernich uzivatelu je kontrolovan pristupovymi pravy adresare /proc/) . V nem jsou statisticke
informace v souborech (o delce 0 ale toho si nevsimejte) ktere je mozno vypsat pomoci cat [soubor]
. Napr. cat
route
vypise toto:
Iface Destin. Gateway Flags RefCnt Use Metric Mask MTU Window eth0 00FFFFDF 00000000 01 0 0 0 00FFFFFF 1436 0 lo 0000007F 00000000 01 0 19990 0 000000FF 1936 0
00FFFFDF odpovida 223.255.255.0 -->> adresa site 223.255.255.x s maskou 255.255.255.0 Takhle divne vypada adresa v hexa tvaru proto, ze pro sitovani pod IP se snad zvolilo jine poradi ukladani bajtu do pameti nez pouziva INTEL (little vs big endian).
Dalsi zajimava informace je pomoci
cat dev
coz vypisuje statistiku instalovanych a pouzitelnych zarizeni.
lo - loopback
ppp - PPP kanaly
sl - SLIP kanaly (muze jich byt bud 4 nebo 16, zalezi jak nastavite pri kompilaci)
eth - ethernet
dummy - neco jako loopback co navic preklada IP adresu zdrojove stanice (lze tim simulovat spojeni z jineho pocitace kdyz odladujete sitovou aplikaci jen na jedne masine)
Inter-| Receive | Transmit face |packets errs drop fifo frame|packets errs drop fifo colls carrier lo: 0 0 0 0 0 18952 0 0 0 0 0 dummy: No statistics available. ppp0: 0 0 0 0 0 0 0 0 0 0 0 ppp1: 0 0 0 0 0 0 0 0 0 0 0 ppp2: 0 0 0 0 0 0 0 0 0 0 0 ppp3: 0 0 0 0 0 0 0 0 0 0 0 sl0: 0 0 0 0 0 0 0 0 0 0 0 sl1: 0 0 0 0 0 0 0 0 0 0 0 sl2: 0 0 0 0 0 0 0 0 0 0 0 sl3: 0 0 0 0 0 0 0 0 0 0 0 sl4: 0 0 0 0 0 0 0 0 0 0 0 sl5: 0 0 0 0 0 0 0 0 0 0 0 sl6: 0 0 0 0 0 0 0 0 0 0 0 sl7: 0 0 0 0 0 0 0 0 0 0 0 sl8: 0 0 0 0 0 0 0 0 0 0 0 sl9: 0 0 0 0 0 0 0 0 0 0 0 sl10: 0 0 0 0 0 0 0 0 0 0 0 sl11: 0 0 0 0 0 0 0 0 0 0 0 sl12: 0 0 0 0 0 0 0 0 0 0 0 sl13: 0 0 0 0 0 0 0 0 0 0 0 sl14: 0 0 0 0 0 0 0 0 0 0 0 sl15: 0 0 0 0 0 0 0 0 0 0 0 eth0: 74 0 0 0 0 79 0 0 0 0 0Poznamka: u nove verze jadra linuxu 2.0 uz tento vypis neuvidite, tam se totiz kanaly vytvareji dynamicky. Uvidite tam tedy jen aktivni kanaly.
Pokud by se nasel zajemce o hlubsi vyklad muzu ho sem napsat. Specielne deleni siti do subnets, neco o bootp a arp atd.
V Slackware je skript netconfig, dostupny i z prikazu setup, ktery vam nastavi zakladni veci okolo site. Linky PPP,SLIP,PLIP si ovsem musite zkonfigurovat sami, ale pro mnoho lidi bude netconfig dobrym zacatkem.
Muj pocitac je jmenuje smrt
a ma domenu peklo.cz (jeho cela adresa je tedy smrt.peklo.cz, je ulozena v /etc/HOSTNAME)
ja nechci pouzivat pouze loopback...
IP adresa tehle ethernet karty je 220.200.240.1 . Ted se automaticky nastavi aliasy v /etc/hosts
vypis /etc/hosts (preklada symbolicka jmena na IP adresy, jako nameserver pro lokalni system):
# # hosts This file describes a number of hostname-to-address # mappings for the TCP/IP subsystem. It is mostly # used at boot time, when no name servers are running. # On small systems, this file can be used instead of a # "named" name server. Just add the names, addresses # and any aliases to this file... # # By the way, Arnt Gulbrandsen (agulbra@nvg.unit.no) says that 127.0.0.1 # should NEVER be named with the name of the machine. It causes problems # for some (stupid) programs, irc and reputedly talk. :^) # # For loopbacking. 127.0.0.1 localhost 220.200.240.1 smrt.peklo.cz smrt # End of hosts.
a v siti je pocitac 220.200.240.6 (router/gateway) ktery zprostredkovava spojeni se svetem
pouzivam sit typu C a proto je maska 255.255.255.0
a skutecny nameserver je nekde v internetu ...
na adrese 194.50.16.71 (ulozeno v /etc/resolv.conf)
vypis /etc/resolv.conf:
domain peklo.cz nameserver 194.50.16.71
jsem za vodou...alespon s ethernetem
Pokud si date podporu sitovani v jadre, loopback je prvni sitove zarizeni jehoz podpora je vzdy prikompilovana, nicmene musi se nastavit stejne jako ethernet.
Je to v podstate neco jako odbocka v sitovych rutinach jadra ktera presmerovava pakety na vas pocitac (konvencne se loopbacku prideluje IP=127.0.0.1 a MASKA=255.0.0.0). Znamena to tedy, ze pokud si lokalne chcete na
jedinem pocitaci zkouset neco s TCP/IP (treba zkusit rozchodit ftp server) nemusite krome obecne
podpory site zahrnovat zadne hardwarove zarizeni.
Loopbacku se prirazuje alias localhost (v /etc/hosts). Pak muzete zkusit jak dlouho trva echovani paketu
sluzbou ping.
ping localhost
je ekvivalentniping 127.0.0.1
PING smrt.peklo.cz (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.8 ms 64 bytes from 127.0.0.1: icmp_seq=1 ttl=255 time=0.8 ms 64 bytes from 127.0.0.1: icmp_seq=2 ttl=255 time=0.7 ms 64 bytes from 127.0.0.1: icmp_seq=3 ttl=255 time=0.7 ms 64 bytes from 127.0.0.1: icmp_seq=4 ttl=255 time=0.7 ms 64 bytes from 127.0.0.1: icmp_seq=5 ttl=255 time=0.7 ms 64 bytes from 127.0.0.1: icmp_seq=6 ttl=255 time=0.7 msVariantou loopbacku je zarizeni dummy. To navic jeste zmeni jakoby adresu zdrojoveho pocitace. Takze kdyz pak date
telnet <adresa prirazena dummy rozhrani, dopor. 127.0.0.2>
tak pak budete vypadat jaky by jste prichazeli skutecne z teto adresy.
smrt:/# 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:15971 errors:0 dropped:0 overruns:0 TX packets:15971 errors:0 dropped:0 overruns:0 dummy Link encap:10Mbps Ethernet HWaddr 00:00:00:00:00:00 inet addr:127.0.0.2 Bcast:127.255.255.255 Mask:255.0.0.0 UP BROADCAST RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0 Interrupt:0 Base address:0x0
Predpokladam ze zatim nemate pevnou linku do Internetu a chcete se pripojit pres nejcasteji modem. Pro transport mezi vami a stranou jez vam poskytne pripojeni do Internetu muzete pouzit zapouzdrovaci protokoly SLIP a PPP, stejne tak i pro privatni spojeni mezi pouze 2 pocitaci.
SLIP - Serial Line Internet Protocol
nebo kompresovany SLIP:
CSLIP - Compressed SLIP
PPP - Point to Point protocol
Oboje tyto varianty nejsou vzajemne slucitelne tj. pokud vam nekdo nabizi PPP tak vy se s nim musite spojit pres protokol PPP a nikoli SLIP. Jeste male upozorneni: microsoft obslehl tyto protokoly v windoze NT trochu jinak, takze spoluprace LINUX<->NT neni uplne 100%.
V Linuxu je potreba mit v jadre zkompilovanu podporu pro prislusny protokol. Kde to udelat viz konfigurace jadra.
Prehled vlastnosti, vyhod a nevyhod:
Zakladni princip seriovych protokolu je asi takovy, ze se pripoji hardwarove zarizeni tty[#portu] pod
zapouzdrovac ppp[#kanalu] (ppp0 <==> ttyS0 a zaroven muze byt ppp1 <==> ttyS3 i sl0 <==> ttyS13).
To se provede nekde dole v systemovych rutinach asi tak ze se oznami jadru ze seriovou linku tu a tu ma zacit pouzivat
jako PPP nebo SLIP kanal. Od tohoto okamziku komunikujete s nadrazenym zarizenim ppp[neco] nebo
sl[neco].
Nazev PPP (Point to Point Protocol) napovida ze jde o pouze dvoubodove spojeni dvou pocitacu pres seriovy kabel. Protokol zajistuje autorizaci obou stran, dohodu na kompresi, velikosti datagramu atd.
Vlastni program ktery ma na starosti konfiguraci seriove linky se jmenuje pppd (ppp daemon), vetsinou v adresari /usr/bin/. Po spousteni bezi na pozadi a kontroluje tok dat na lince. Pri jeho spusteni je mozne mu zadat konfiguracni parametry, ktere dale popisu. V Slackware je balik ppp kde se tento demon naleza a v nem par pomocnych a uzitecnych prikazu (ppp-off ukonci PPP linku, ppp-on ji nahodi, pppstats ukazuje statistiku proslych paketu ad.)
Spusteni pppd:
pppd zarizeni [rychlost] [argumenty a priznaky]
Pro spojeni dvou pocitacu mezi sebou (zatim neuvazujme nejakou
autorizaci) staci na obou spustit pppd s parametrem zarizeni
seriove linky spojujici oba pocitace a rychlosti (bez parametru
rychlost se pouzije aktualni rychlost serioveho portu).
Priklad:
POCITAC A: pppd /dev/ttyS1
POCITAC B: pppd /dev/ttyS0
kde na pocitaci A je kabel na COM2 a na B na COM1.
Pro tento konkretni pripad se stane to, ze kazdy z pocitacu se
budou snazit spojit asi 30 sekund, a pokud se mu to nepovede,
tak z pppd vyskoci. Takze lepsi by asi bylo
POCITAC A: pppd /dev/ttyS1 passive
POCITAC B: pppd /dev/ttyS0
argument passive rika POC A ze se ma snazit navazat spojeni, ale pokud se mu to nepovede, tak ma v tichosti cekat na spojeni z druhe strany.
POCITAC A: pppd /dev/ttyS1 passive 38400 lock xonxoff 223.255.255.4:223.255.255.6
POCITAC B: pppd /dev/ttyS0 passive 38400 lock xonxoff noipdefault
Takto mam udelane spojeni s kamaradem. Znamena to ze prvni z
nas kdo zapne pocitac bude cekat na pripojeni toho druheho.
Mate-li pomalou linku, muze pomoci nasledujici (urychluje
odezvu napr. pro telnet):
POCITAC A: pppd /dev/ttyS1 passive mtu 296 mru 500
POCITAC B: pppd /dev/ttyS0 passive
mtu
(MAXIMUM TRANSMIT UNIT) - max. delka vyslaneho datagramu
mru
(MAXIMUM RECEIVE UNIT) - max. delka datagramu jez je poc.
schopen zpracovat
coz znamena ze POC A rika: nemohu vysilat delsi datagramy nez 296 byte a prijimat delsi nez 500 byte. Pri spojeni se obe strany dohodnou na nejvyssich moznych velikostech ktere splnuji omezujici podminky. Bez argumentu se predpoklada mtu=mru=1500. Prakticka zkusenost: nektere terminalservery mohou datagram prijmuty od vas dlouhy 1500 B poslat do site s mtu=1000 coz ma za nasledek orezani paketu. Snizenim mtu u vas jako vysilajici strany eliminuje tuto potencialni hrozbu (mne se to projevovalo tak, ze neslo ftp ven pro soubory>~1300-1500 bytu)
CRTSCTS
- pouzivani hardwaroveho toku dat mezi pocitaci (nebo
pocitacem a modemem). Pokud lze pouzit, doporucuji.
XONXOFF
- pouziti flow control. Doporucuji pouzit v poripade,
ze mate pocitace (pocitec/modem) spojene jen 3 draty (pak musi
byt RTS/CTS a DSR/DTR na strane pocitace zakonceny samy do sebe (looped back))
noipdefault
- rika, ze mate obdrzet IP adresu od druheho konce
(napr. terminalserveru). Toto klicove slovo budou chtit zaradit
vsichni kdo bude vyuzivat komercnich terminalserveru s
dynamickou alokaci IP a toto bude jejich jedine spojeni do internetu.
[XX.XX.XX.XX]:[YY.YY.YY.YY]
timto prepinacem lze nastavit [vasi lokalni]:[vzdalenou]
IP adresu
priklad
192.23.55.66:
- nastavuji jen svemu pocitaci adresu 192.23.55.66
:126.0.12.1
- nastavuje druhemu pocitaci adresu 126.0.12.1
192.23.55.66:126.0.12.1
- nastavuje lokalne 192.23.55.66 a
vzdalenou 126.0.12.1 (takhle se konfiguruji terminalservery)
Vystraha: nepouzivejte adresy vyssi jak 223.255.255.255
napr. 224.0.0.0 zpusobi chybovou hlasku bad
local/remote ip address
proxyarp
- predstavte si ze mate ethernetovou sit 192.0.0.XXX
v ktere ma pocitac 192.0.0.1 na sobe jeste PPP linku k druhemu
pocitaci 192.0.0.3 Uzivatele ethernetu vsak normalne neuvidi
pocitac 192.0.0.3 protoze pakety budou chodit pres
pocitac s ethernet 192.0.0.1 a PPP 192.0.0.2
Volba proxyarp apusobi to, ze 192.0.0.3 bude z site
192.0.0.XXX viditelny jako by v ni byl fyzicky. Pocitac s rozhranimi 192.0.0.1 a 192.0.0.2 bude muset mit zapnuty IP_FORWARDING v jadre (bude to vlastne router).
defaultroute
- vsechny pakety ktere nebudou pasovat do lokalne pripojenych siti budou posilany tudy ven ("defaultni cesta v routovaci tabulce")
asyncmap XXXXXXXX
- 32 bitove cislo v hexa tvaru, v kterem jednotlive bity nastavene do 1 znamenaji
ktere znaky 0-31 se maji escapovat. Napr. asyncmap 200a0000
je binarne
00100000000010100000000000000000
coz znamena znaky 29, 17, 19 decimalne se maji escapovat, tedy posilat
pres linku jako 2byte sekvence. Pouziva se kdyz modem odchytava XON/XOFF znaky, nebo nektere z
techto znaku nelze protlacit.
lock
- zamkne seriovy port na dobu behu pppd
debug
- hodne ukecany (v syslogu /var/adm/messages)
vsechny nebo jen nektere argumenty mohou byt ulozeny v souboru
/etc/ppp/options .
Pak staci spustit pppd a on si precte argumenty z prikazove
radky a z tohoto souboru.
Pri startu pppd se vykona skript /etc/ppp/ip-up
a po skonceni /etc/ppp/ip-down (oba musi byt nastaveny jako
executable), takze si do nich muzete dat
neco jako
echo "CHANNEL ppp0 going up" | wall
Dalsi prepinace najdete v manualove strance k pppd
man pppd
nebo v nekterem z HOWTO dokumentu.
Zatim jsem nepopsal nejcastejsi situaci, totiz ze se budete muset nekam zalogovat, tam rict "chci mod PPP" a spustit PPP demona.
Ukazu to na priklade meho kamarada, jez ma ucet na MFF UK terminalserveru.
Pripojeni v terminalovem modu VT102 (napr. pres minicom):
atd234435 OK CISCO Terminal Server SISAL MFF UK User Access Verification Username: pmit2218 Password: tserv>ppp Entering PPP mode. Async interface address is unnumbered (Ethernet0) Your IP address is 194.50.16.204. MTU is 1500 bytes Header compression will match your system.
~~ÿ}#À!}!}!} }4}"}&} }*} }
}%}&+<‰A}'}"}(}"æ«~~ÿ}#À!}!}"} }4}"}&} }*} }
}%}&+<‰A}'}"}(}",}6~~ÿ}#À!}!}#} }4}"}&} }*} }
}%}&+<‰A}'}"}(}"e…~
V tomto okamziku se na druhe strane spustil pppd nebo ekvivalent (klicove slovo ppp prepina terminalserver - asi skript jez nejprve vypise kecy "Entering...atakdale" a pak spusti vlastni PPP).
Pokud nebudete pouzivat terminalserver ale Linux masinu kde bude bezet getty program, tak se nejprve zalogujete jako v predeslem pripade a potom napisete primo pppd
nebo pppd passive
. pppd totiz pokud nezadate fyzicke zarizeni (ser. port) tak pouzije standartni vstup a vystup.
Welcome to Linux 1.2.13 running on i486 it's 01:20:32 Mon Nov 6 1995 on ttyS1 address smrt.peklo.cz online 9 users smrt login: user Password: Linux 1.2.13. (POSIX). Smrt prichazi necekane You have mail. Die, v.: To stop sinning suddenly. -- Elbert Hubbard smrt:~$ pppd passive ~ÿ}#¤!}!}!} }2}!}$}%Ü}%}&0ë;}'}"}(}"p¤~~ÿ}#¤!}!}!} }2}!}$}%Ü}%}&0ë;}'}"}(}"p¤~~ÿ}#¤!}!}!} }2}!}$}%Ü}%}&0ë;}'}"}(}"p¤~~ÿ}#¤!}!}!} }2}!}$}%Ü}%}&0ë;}'}"}(}"p¤~~ÿ}#¤!}!}!} }2}!}$}%Ü}%}&0ë;}'}"}(}"p¤~~ÿ}#¤!}!}!} }2}!}$}%Ü}%}&0ë;}'}"}(}"p¤~~ÿ}#¤!}!}!} }2}!}$}%Ü}%}&0ë;}'}"}(}"p¤~~ÿ}#¤!}!}!} }2}!}$}%Ü}%}&0ë;}'}"}(}"p¤~To co se vam zda jako rozsypanej caj jsou pakety PPP. Takze v tomto okamziku kdy se zacnou pakety objevovat na obrazovce vyskocim z minicomu (bez resetu modemu) a jako root spustim pppd. Cele se to chytne a gamesi. Ukonci se ppp-off (i kdyz spadne linka, tak to pppd vetsinou nepozna, musi se ukoncit rucne).
Sitove karty maji podporu v jadru. Musite mit nekterou z podporovanych karet+zkompilovane jadro s
jeji podporou. Sitove karty jsou reprezentovany pomoci eth0, eth1 atd.
Standartne se testuje pri startu jen prvni ethernetova karta, pokud tedy chcete pouzit Linux
jako bridge/router mezi dvema sitemi, musite pri startu zadat jadru parametry druhe sitove karty (resp. obou)
ve tvaru ether=IRQ,BASE_ADDR,[param1,][param2,]NAME
napr. ether=11,0x280,eth1
Totez lze i pro prvni eth. kartu (v pripade vice karet aby bylo jasne jejich poradi nebo kdyz je nestandartne
nastavena a neni detekovana jadrem pri startu).
Konfigurace zarizeni se delaji pomoci prikazu ifconfig a route. ifconfig je program jez rekne jadru ze ma akceptovat urcite zarizeni, priradit mu tuto IP adresu a netmask, nejake flagy (treba P-t-P) a nakonec jestli ma byt zarizeni aktivni/neaktivni (up/down). Samotny ifconfig vypise seznam instalovanych zarizeni. Priklad:
prompt# 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:2000 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:18952 errors:0 dropped:0 overruns:0 eth0 Link encap:10Mbps Ethernet HWaddr 00:00:C0:28:72:62 inet addr:223.255.255.1 Bcast:223.255.255.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2365 errors:0 dropped:0 overruns:0 TX packets:2370 errors:0 dropped:0 overruns:0 Interrupt:9 Base address:0x310 Memory:cc000-ce000
prompt# route Kernel routing table Destination Gateway Genmask Flags MSS Window Use Iface localnet * 255.255.255.0 U 1436 0 2506 eth0 loopback * 255.0.0.0 U 1936 0 19990 lo
Pokud budete mit vlastni sit a nekde v ni bude pocitac/router pro zbytek sveta, tak si vyplnte do promenne GATEWAY jeho IP adresu, ponevadz co se nenajde lokalne tak pujde pres nej.
Priklad rc.inet1:
#! /bin/sh # # rc.inet1 This shell script boots up the base INET system. # # Version: @(#)/etc/rc.d/rc.inet1 1.01 05/27/93 # HOSTNAME=`cat /etc/HOSTNAME` # Attach the loopback device. /sbin/ifconfig lo 127.0.0.1 /sbin/route add -net 127.0.0.0 # IF YOU HAVE AN ETHERNET CONNECTION, use these lines below to configure the # eth0 interface. If you're only using loopback or SLIP, don't include the # rest of the lines in this file. # Edit for your setup. IPADDR="220.200.240.1" # REPLACE with YOUR IP address! NETMASK="255.255.255.0" # REPLACE with YOUR netmask! NETWORK="220.200.240.0" # REPLACE with YOUR network address! BROADCAST="220.200.240.255" # REPLACE with YOUR broadcast address, if you # have one. If not, leave blank and edit below. #GATEWAY="" # REPLACE with YOUR gateway address! # Uncomment ONLY ONE of the three lines below. If one doesn't work, try again. /sbin/ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST} #/sbin/ifconfig eth0 ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK} # /sbin/ifconfig eth0 ${IPADDR} netmask ${NETMASK} # Uncomment these to set up your IP routing table. /sbin/route add -net ${NETWORK} netmask ${NETMASK} #/sbin/route add default gw ${GATEWAY} metric 1 # End of rc.inet1Napoprve doporucuji pouzit konfiguracni skript netconfig, ten za vas nastavi hlavni veci a toto zde uvadim jen pro uplnost a informaci. Myslim totiz, ze pokud budete chtit zmenit jen svoje IP v siti, nema smysl prochazet znovu celym netconfig skriptem, protoze ten vam napriklad smaze aliasy pocitacu jez si date do /etc/hosts.
SLIP se chova v podstate jako ethernetova karta (co se tyce systemu zapojeni do systemu), tedy programem ifconfig a route. Problem je vetsinou v tom, ze ethernetovku si nakonfigurujete pri startu systemu natrvalo, kdezto SLIP se vetsinou pouziva pro dialup spojeni, kdy je nutne
Donedavna jsem pro pripojeni do skoly pres SLIP pouzival trochu zasmodrchany postup:
zavolal jsem z
minicomu na skolni modem, vyskocil z minicomu, poslal autorizaci na modem ( cat autorizacni_soubor > /dev/modem
), precetl si co vratil modem za IP cislo (cat /dev/modem
) a spustil skript jez pripojil zarizeni sl0 jako defaultni cestu do systemove routovaci tabulky. Fuj.
Mnohem lepsi je pouzit programu dip, ktery ma ve slackware svuj vlastni balik v serii n -
[ ] N Networking (TCP/IP, UUCP, Mail, News)
Vytvoril jsem si skript, ktery sam zresetuje modem, nastavi rychlost seriove linky, zavola do skoly, posle autorizaci a zjisti, jake IP ma zrovna nastavit (to vrati skolni terminalserver) a sam zaradi slipa do systemu jako defaultni cestu. V pripade ze se nedovola, nebo je linka obsazena, vrati se s vypisem ''error''. No jeste uvidite.
Vypis skriptu skola.dip:
############################################################################### # DIP script to connect to a Xylogics Micro Annex # Written by Kevin Layer (layer@franz.com) with help from John # Foderaro (jkf@franz.com). # Fetch the IP address of our target host. main: echo on # Set the desired serial port and speed. Tady radeji /dev/modem port /dev/ttyS1 speed 38400 #muj skolni terminalserver (resp cisco router) ma vzdy stejnou adresu: get $remote 192.108.160.6 # Reset the modem and terminal line. reset # Prepare for dialing. send ATZ\r wait OK 10 if $errlvl != 0 goto error dial p24357552 if $errlvl != 1 goto error # 1 # wait CONNECT 70 # if $errlvl != 0 goto error # We are connected. Login to the system. login: wait LOGIN 20 if $errlvl != 0 goto error send USER Vladimir Myslik xmyslik\r\n send PASSWORD mojeHesLSO\r\n send \r\n wait addr 10 # if $errlvl != 0 goto error get $local remote 1 # if $errlvl != 0 goto error done: print CONNECTED with address $local default mode SLIP goto exit error: print error. exit:Mno jak jiste vidite, trochu jsem upravil nejaky cizi skript. Vsechno co je za#zovany, je komentar (jiste chapete). Takhle se to spusti (jako root):
smrt:# dip -v -m 1500 skola.dipTen parametr
-v
je tam pouze proto, aby bylo videt co se vypisuje (verbose - klidne ho muzete vyhodit.), -m #
je mtu (maximum transfer unit). Pro ty co budou uzivat stejny terminalserver jako ja (CVUT FEL-self-built), je 1500 nutnost (kvuli tomu ze ten terminalserver to neumi rozlozit na mensi pakety kdyz je to vetsi jak mtu slipu). Take je mozne udelat pripojeni tak, aby si kazdy uzivatel (nebo jen ten vyvoleny) mohl zavolat pres skript sam, aniz by musel znat heslo roota. Ja si to nepamatuju, kouknete se na man dip
, nebo do adresare /usr/doc/dip , kde je vetsinou dokumentace k dipu.
Zde je vypis toho, co dip pise do syslogu (resp. /var/adm/messages). Silne jsou spousteni syst. prikazu, ktere vola dip automaticky:
Apr 20 14:06:04 smrt dip[2772]: DIP: tty_open: /dev/ttyS1 (9) Apr 20 14:06:07 smrt dip[2772]: waiting for "OK" for 10 sec's. Apr 20 14:06:38 smrt dip[2772]: waiting for "LOGIN" for 20 sec's. Apr 20 14:06:44 smrt dip[2772]: waiting for "addr" for 10 sec's. Apr 20 14:06:44 smrt dip[2774]: slip: set_disc N_SLIP (1) Apr 20 14:06:44 smrt dip[2774]: slip: set_encap(0x0000) Apr 20 14:06:44 smrt dip[2774]: >>> ATTACH "/sbin/ifconfig sl0 192.108.160.86 pointopoint 192.108.160.6 mtu 1500 " Apr 20 14:06:44 smrt dip[2774]: >>> ATTACH "/sbin/route add 192.108.160.6 sl0" Apr 20 14:06:44 smrt dip[2774]: >>> ATTACH "/sbin/route add -net default gw 192.108.160.6 metric 1 sl0" Apr 20 14:06:44 smrt dip[2774]: root dial-up 192.108.160.86/192.108.160.86 to remote 192.108.160.6/192.108.160.6 with SLIP/296Doufam ze to je dostatecna inpirace k experimentum s programem dip. Pomoci dipu lze pripojit i PPP spojeni. U vseho ale pozor: at nikdo nevidi, jake username a password ten skript posila na druhou stranu!! (radsi ani nepouzivejte parametr verbose
-v
u dipu, aby to nevypisovalo na obrazovku). Nejlepe ho chownete rootovi a nastavte cteni jen pro neho (-rwx------).
Mno tak to by bylo. Linux ma velmi silnou podporu sitovani, specielne nova jadra maji hodne ovladacu pro vsechny mozny sitovy karty (uz i ISDN, WaveLAN). V linuxu je zatim sice slabsi podpora nfs (to uz neplati u linuxu 2.0), ale jako server ma nepochybne nejlepsi pomer cena/vykon a vyuziti pameti (na server neni nutne mit grafiku).
V soukrome siti mne a mych kamaradu jede jeden linux server na starem 386SX25 a funguje zaroven jako fax, dial-in server a dialup-router(toto obstarava program mgetty). Navic na nem bezi sendmail a irc, takze si muzeme posilat maily a kecat dohromady a kdyz prijde fax, dostane o tom zpravu spravce faxu. Tento pocitac jede bez monitoru a klavesnice a bez floppy mechanik, takze az prijde M$ softwarova inkvizice s tim, abychom je nechali "zdokumentovat obsah disku" , tak je tak akorat privedeme na WC kde bude bezet terminal....linux login inside...
Dokonce i s ftp lze z tohoto pocitace dosahnout uzasnych 290 kB/s , coz je na SX s 8-bitovou starou WD ethernetovkou docela vykon. Puvodne bylo v tomto pocitaci pouze 2MB pameti (a linux jel jeste s 1200kb volnymi !!!), ale ted jak spadly ceny je tam 5 MB a maly 60MB 2.5 tichy disk. K tomuto pocitaci se pripojuje jeden clovek s winshitem95&linuxem a druhy s slipem na amize (pres asi 50m 4zilovy stineny tlf. kabel na 57600 baudech - bez zesilovacu).
Mozna nainstalujeme na tento pocitac demon diald, coz je program, ktery kdyz zjisti, ze je pozadavek na spojeni s pocitacem "venku", tak sam vytoci na modemu cislo a zavola ISP. Zatim tam mame pouze zapnut IP_MASQUERADING, coz je vymozenost linuxu 2.0 . Je to takovy chytry router (ci paket forwarder), ktery umi vyuzit jedine IP cislo (modemu) pro celou lokalni sit jako gateway ven. Takze treba douzy bezici na jinem pocitaci pouzivajici tento pocitac jako gateway muzou telnetit, ftpit (po insmodnuti kernel modulu ip_masq_ftp.o) , webit az do aleluja (jedine co nefungi je ping).
Nekdy az budu mit naladu, tak sem vrazim schemata spojeni seriovych, paralelnich kabelu a kabelu pro ethernet (AUI).
Vezmetez si toto povidani jako inspiraci jak vyuzit stary hardware (ten co mel jeste malou spotrebu nekolika W) na komunikacni ucely za pouziti TCP/IP.