Thuisnetwerken, een overzicht
ArticleCategory:
System Administration
AuthorImage:
TranslationInfo:
original in en Guido Socher
en to nl Tom Uijldert
AboutTheAuthor:
Guido is al lang een Linux-fan. Al zijn computers zijn thuis geïntegreerd in een netwerk.
Abstract:
Netwerken worden steeds populairder. Je oude 486 kan nog prima dienst doen als een
bestandsserver of IP-imitator om zo het hele gezin toegang te geven tot Internet vanaf
verschillende computers. Dit artikel geeft alle benodigdheden voor het starten van je eigen
thuisnetwerk. Het behandelt de gangbare begrippen die nodig zijn voor het begrijpen van de
boeken hierover. We richten ons met name op het kleine netwerk thuis.
ArticleIllustration:
ArticleBody:
10Base2
Dit is Ethernet met een snelheid van 10 Megabit per seconde over een coaxiale kabel. De
uiteinden moeten worden afgesloten met een 50 Ohm weerstand. De maximale lengte is daarbij
185 meter. De minimale afstand tussen twee kaarten moet een halve meter bedragen. De
netwerkkaarten worden middels een T-plug verbonden met het netwerk. Hierdoor is er geen Hub
nodig en kunnen de kaarten direct aan de kabel aangesloten worden. Dit is waarschijnlijk het
goedkoopste alternatief voor een netwerk thuis. Het wordt ook wel cheapernet
genoemd. Het is daarbij belangrijk dat de kabel direct van kaart naar kaart loopt (bustopologie) en
dat er geen kabel loopt tussen de T-plug en de kaart.
10BaseT
Ethernet op 10 Mbit/s met tweelingsnoer (twisted pair). Iedere kaart is verbonden
aan een centraal punt via het snoer. Dit punt heet een hub. Een dergelijk netwerk
geeft een stertopologie. Het snoer tussen kaart en hub mag niet langer zijn dan 100 meter. Wil je
slechts twee kaarten aansluiten dan kan dat ook zonder hub met het kruislings aansluiten van het
snoer.
100BaseT en 100BaseT4
Deze typen netwerken gebruiken ook tweelingsnoer (net als 10BaseT) maar hebben een
snelheid van 100 Mbit/s. Voor de meeste netwerken thuis is 10 echter meer dan voldoende.
100BaseT gebruikt de paren 2 en 3 van het snoer. 100BaseT4 gebruikt alle vier de paren.
RJ-45 connector
Dit is de plug die wordt gebruikt voor de 10BaseT, 100BaseT en 100BaseT4 netwerken. Het is
een kleine plastic plug met 8 contacten.
- 10BaseT gebruikt de paren 2 en 3.
- 100BaseT gebruikt de paren 2 en 3.
- 100BaseT4 gebruikt de paren 1, 2, 3 en 4.
Pin |
Naam |
Beschrijving 10baseT |
1 |
TX+ |
Tranceive Data+ |
2 |
TX- |
Tranceive Data- |
3 |
RX+ |
Receive Data+ |
4 |
n/c |
100BaseT4 only |
5 |
n/c |
100BaseT4 only |
6 |
RX- |
Receive Data- |
7 |
n/c |
100BaseT4 only |
8 |
n/c |
100BaseT4 only |
|
NB: |
TX & RX worden verwisseld op Hub's. |
NB: Je hebt speciaal gereedschap nodig voor het aansluiten van RJ-45 pluggen aan een snoer.
Kabels
De volgende soorten kabels worden gebruikt:
- 50 Ohm coaxiale kabel. In gebruik bij 10BaseT netwerken, maximaal 10Mbit/s.
- Tweelingsnoer (Twisted Pair)
- UTP (Unshielded Twisted Pair) kabel, het goedkoopste soort tweelingsnoer,
dun en flexibel want er zit geen afscherming omheen. Kans op interferentie is hoog. Interferentie
kan twee richtingen op werken. Met het snoer zou je de radio-ontvangst kunnen verstoren en in
geval van langere snoeren kan deze ook sterke elektromagnetische signalen opvangen zoals een
elektrische kachel die aan- of afslaat. Dit type kabel is echter meer dan goed genoeg voor thuisgebruik,
de afstanden bedragen meestal niet meer dan een paar meter.
- STP (Shielded Twisted Pair) kabel met afscherming over het gehele snoer.
Dit is een zeer gangbare kabel. Hij is nog steeds enigszins flexibel en redelijk te betalen. De kans
op interferentie wordt aanzienlijk verkleind.
- STP (Shielded Twisted Pair) kabel met aparte afscherming per snoerenpaar.
Duur en niet aan te bevelen voor thuisnetwerken.
De diverse kabels zijn in standaard categorieën onderverdeeld, aan de hand van hun
demping:
- Cat 3 kabel: maximaal 16 MHz bandbreedte, in gebruik bij 10BaseT.
- Cat 5 kabel: maximaal 100 MHz bandbreedte, in gebruik bij 10BaseT, 100BaseT en
100BaseT4.
Iedere draad van een tweelingsnoer heeft een vaste aansluiting op een aansluitpin van de RJ-45
plug.
Er bestaan meerdere standaarden die alleen in de draadkleur iets verschillen. De volgende
toewijzingen aan pinnen gelden:
Snoer paar nummer |
Plug pinnen |
standaard 1 |
standaard 2 |
standard 3 |
standaard 4 |
1 |
4/5 |
blauw/wit |
wit/blauw |
wit/blauw |
wit/bruin |
2 |
3/6 |
wit/groen |
rood/oranje |
cyaan/paars |
groen/geel |
3 |
1/2 |
wit/oranje |
zwart/groen |
wit/oranje |
grijs/rose |
4 |
7/8 |
wit/bruin |
geel/bruin |
cyaan/paars |
blauw/rood |
Bekabeling is eigenlijk alleen van belang als je 20 meter of meer wil aanleggen door je huis.
Indien je slechts een aantal computers in dezelfde kamer aan elkaar wilt aansluiten dan kun je
hiervoor goedkope, kant en klare kabels kopen, inclusief connectoren. Deze zijn meestal
verkrijgbaar in standaard lengten tussen de 1 en 10 meter.
Kruiskabel
Dit is een speciale kabel om slechts 2 netwerkkaarten te verbinden via een tweelingsnoer. Je
hebt alleen een hub nodig als je er meer dan 2 aan wilt sluiten. De kruising
verwisselt de draden Rx en Tx. De twee connectoren zijn verder als volgt aangesloten:
Pin Nr |
Pin Nr |
1 sluit aan |
op 3 |
2 sluit aan |
op 6 |
3 sluit aan |
op 1 |
4 sluit aan |
op 5 (100baseT4) |
5 sluit aan |
op 4 (100baseT4) |
6 sluit aan |
op 2 |
7 sluit aan |
op 8 (100baseT4) |
8 sluit aan |
op 7 (100baseT4) |
9 sluit aan |
op 9 (100baseT4) |
Ook dit soort kruiskabels zijn kant en klaar te verkrijgen.
Hub
Een hub heb je nodig voor een netwerk met tweelingsnoer en meer als twee
computers. De hub versterkt het signaal van een computer en geeft dit door aan alle andere
aansluitingen. Voor thuisnetwerken kun je volstaan met een 5- of 8-poorts "work group
hub". Ethernet switches kunnen in plaats daarvan ook worden gebruikt maar deze zijn
véél duurder en hebben alleen zin als je veel verkeer over het netwerk verwacht
met veel aangesloten computers.
LAN
LAN is de afkorting van Local Area Network en slaat meestal op een
broadcast netwerk. In een dergelijk netwerk kan iedere computer iedere andere
computer bereiken zonder dat er een router nodig is. Aldus vormen alle computers
die zijn aangesloten op dezelfde coaxkabel of op dezelfde hub een LAN.
Netwerkkaarten
Mijn ervaring leert dat de goedkoopste kaarten de beste zijn. De duurdere exemplaren leveren
meestal geen extra's. ISA PNP kaarten kunnen problemen geven. De meeste ISA PNP kaarten
worden geleverd met een DOS floppy en software waarmee je de flash ROM
instellingen van dergelijke kaarten kan wijzigen zodat ze geen PNP gebruiken. Je kunt hiermee
een vaste interrupt en IO-adres instellen (Pas op: als je een PNP bios hebt moet je deze ook nog
duidelijk maken dat hij geen PNP moet gebruiken voor deze interrupt). Het standaard IO-adres is
meestal io=0x300. Je kunt zien welke adressen en interrupts al in gebruik zijn
door in te tikken:
$ cat /proc/interrupts /proc/ioports | more
(Pas op: dit zijn interrupts en adressen die écht worden gebruikt door een
aansturingsprogramma op dat moment).
Als je een dergelijke ISA PNP kaart hebt gekocht dan zul je niet veel aan een DOS floppy hebben
als je alleen Linux gebruikt. Wellicht heb je zelf (of een vriend van je) nog een oude DOS-flop
vanaf dewelke je kunt opstarten. Kopieer het programma wat met de kaart werd meegeleverd naar deze
diskette en start hiermee op om dan de instellingen van de kaart te veranderen. De
instellingen worden opgeslagen in flash ROM dus je hoeft het maar één keer in te
stellen en daarna nooit weer.
De goedkoopste zijn meestal NE2000 kaarten en kosten rond de $15 (of 15 Euro). Ze worden
goed ondersteund door Linux. NE2000 kaarten zijn verkrijgbaar voor de ISA- alsook de PCI-bus.
Een ISA kaart heeft de kernel modulen ne en 8390 nodig. Je
kunt het aansturingsprogramma er zelf naar laten zoeken of het IO-adres en de interrupt opgeven
via de commandoregel. Het laden van de kernel-modulen zonder auto-probing kan
als volgt:
$ insmod 8390
$ insmod ne irq=10 io=0x300
Met PCI-kaarten heb je meestal geen gedoe met interrupts en IO-adressen maar ze zijn iets
duurder. De kernel modulen voor NE2000 PCI kaarten heten ne2k-pci en
8390.
Netwerk koppeling
De netwerk koppeling (interface) wordt fysiek vertegenwoordigd door je netwerkkaart
maar de term slaat ook op het stuk software wat erachter zit en aanspreekbaar is via het in te
stellen IP adres. Indien je een modem en een netwerkkaart hebt dan heb je al twee IP adressen
en dus twee netwerk koppelingen voor die ene computer. Een IP adres wordt altijd aan een
netwerk koppeling toegekend, nooit aan een computer (host). Je kunt een unieke
naam voor de computer afleiden van het IP adres maar meestal is er een 1 op n relatie tussen de
naam van je computer en het IP adres. Het commando ifconfig wordt gebruikt om
de instellingen van de diverse actieve netwerk koppelingen te laten zien. Je kunt dit commando
tevens gebruiken voor het configureren van de koppelingen. Hier is een voorbeelduitdraai:
> /sbin/ifconfig -a
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:1664 errors:0 dropped:0 overruns:0
TX packets:1664 errors:0 dropped:0 overruns:0
eth0 Link encap:10Mbps Ethernet HWaddr 00:80:AD:71:52:19
inet addr:10.0.0.1 Bcast:10.255.255.255 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5993 errors:0 dropped:0 overruns:0
TX packets:4073 errors:0 dropped:0 overruns:0
Interrupt:5 Base address:0x300
dummy0 Link encap:10Mbps Ethernet HWaddr 00:00:00:00:00:00
inet addr:10.0.0.1 Bcast:10.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
ppp0 Link encap:Point-Point Protocol
inet addr:199.94.253.30 P-t-P:199.94.253.4 Mask:255.255.255.0
UP POINTOPOINT RUNNING MTU:552 Metric:1
RX packets:7 errors:0 dropped:0 overruns:0
TX packets:8 errors:0 dropped:0 overruns:0
Zoals te zien zijn er vier netwerk-koppelingen in het bovenstaand voorbeeld.
Routeren
Je Linux kernel heeft een interne IP router. De routeringstabel vertelt hem wat hij
moet doen met een binnenkomend IP-pakketje. Afhankelijk van het adres in dat pakketje kun je
via de routeringstabel beslissen waar het pakketje heen moet worden gezonden. Onder Linux
kun je /sbin/route of netstat -r intikken om de routeringstabel te
zien maar het standaard Unix commando is netstat -r. Een beschrijving over hoe
je deze tabel opzet gaat voor dit artikel te ver maar hier zal nog een apart artikel over
verschijnen. De Linux Network Administrator's Guide is een goede online
raadgever voor het opzetten van routering.
PLIP
Parallel port IP geeft de mogelijkheid om de parallelle poort als netwerk koppeling te
gebruiken. De instelbare kernel parameter hiervoor heet CONFIG_PLIP en deze
moet bij voorkeur als module zijn ingesteld. PLIP is een goedkope mogelijkheid om je laptop aan
een andere computer te hangen en, via deze verbinding, aan het thuisnetwerk. Je moet hiervoor
een kabel voor parallelle poorten aanschaffen met 2 mannelijke pluggen, ook wel bekend als
LapLink kabel. Voor als je hem zelf wilt maken volgen hier de aansluitingen:
Pin Nr |
Pin Nr |
17 | naar 17 |
25 | naar 25 |
2 | naar 15 |
3 | naar 13 |
4 | naar 12 |
5 | naar 10 |
|
Pin Nr |
Pin Nr |
6 | naar 11 |
15 | naar 2 |
13 | naar 3 |
12 | naar 4 |
10 | naar 5 |
11 | naar 6 |
|
PLIP is niet zo snel als Ethernet maar de snelheid is voldoende voor normale netwerkapplicaties
zoals NFS.
IP adressen
Je moet bepalen welke adressen je gaat gebruiken in je netwerk. Normaal gesproken krijg je een
adres toegewezen van de Internet provider wanneer je "online" gaat. Dit adres krijg je
min of meer automatisch toegewezen via je PPP koppeling. Daar hoef je je normaal gesproken
geen zorgen over te maken. Je moet nu wel beslissen welke adressen je toe zult gaan kennen
aan je andere netwerkkoppelingen (zoals eth0 en plip1).
Een aantal adressen zijn gereserveerd voor privé-gebruik. Deze adressen worden in het
Internet niet gerouteerd en geven geen problemen als je ze hergebruikt. Dit zijn de volgende
series:
Netmasker |
Netwerk Adressen |
255.0.0.0 | 10.0.0.0 - 10.255.255.255 |
255.255.0.0 | 172.16.0.0 - 172.31.255.255 |
255.255.255.0 | 192.168.0.0 - 192.168.255.255 |
Welk adres te gebruiken? Nou, dat doet er niet zo toe maar het is aan te bevelen om
opeenvolgende nummers te gebruiken. Je hebt bijvoorbeeld 2 computers op je netwerk
aangesloten en hebt nu dus 2 adressen nodig voor de beide netwerkkaarten (deze ken je toe aan
de software-representatie van de kaarten. Die software noemen we de koppeling). Gebruik
gewoon 192.168.0.1 en 192.168.0.2 (Let op: begin niet te nummeren bij 0 want deze
representeert het gehele netwerk en is dus geen echt adres).
Bestanden
Diverse pakketten worden tegenwoordig met mooie grafische interfaces geleverd voor het
instellen van je netwerk (zoals yast of netcfg). Deze kun je
naar hartelust gebruiken. Zie de gebruikerhandleiding van jouw Linux distributie voor het gebruik
van dergelijke programma's. Dit artikel zal niet ingaan op een specifiek pakket. Het zal ingaan op
de onderliggende bestanden die op magische wijze veranderd worden door het gebruik van
dergelijke pakketten. Hiermee kun je ook nagaan wat een dergelijk pakket heeft gedaan na
gebruik.
/etc/hosts en /etc/host.conf
Voor een klein netwerk heeft het geen zin om een complete DNS (Dynamic Name Server) te
hebben draaien. In plaats daarvan kan worden volstaan met het invullen van de namen van de
machines in het bestand genaamd /etc/hosts. Voorbeeld:
# ipaddr. fullname alias
127.0.0.1 localhost
192.168.0.1 obelix.mynet obelix
192.168.0.2 asterix.mynet asterix
192.168.0.3 idefix.mynet idefix
Bij het bestand /etc/hosts hoort ook het bestand
/etc/host.conf die vertelt hoe de namen moeten worden gekoppeld aan
adressen. Het volgende moet in dit bestand staan:
# /etc/host.conf
order hosts bind
# Allow multiple addrs
multi on
/etc/resolv.conf
Het bestand /etc/resolv.conf geeft aan waar namen en adressen te vinden zijn
die niet in /etc/hosts staan. Hiervoor moet je het adres hebben van de DNS
server die je Internet provider heeft draaien. Je moet meerdere DNS servers opgeven als dit
enigszins mogelijk is. Indien de eerste server niet beschikbaar is of te traag is, kan de tweede worden
aangesproken. De schrijfwijze is als volgt:
#/etc/resolv.conf
#nameserver ipaddr.
nameserver 123.456.789.1
# alternative DNS server:
nameserver 123.456.111.9
de hostnaam instellen
/etc/HOSTNAME (of /etc/sysconfig/network voor RedHat) is
het bestand waar de meeste distributies die naam instellen. In het echt wordt echter de hostnaam
van een machine ingesteld door het commando hostname. Wat er gebeurt is dat
tijdens opstarten (oftewel tijdens uitvoeren van /etc/rc.d/rc.sysinit) de inhoud
van het bestand /etc/HOSTNAME wordt gelezen en als argument aan dit
commando wordt meegegeven. Welk bestand wordt gebruikt hangt af van de eigenaardigheden
van je distributie. Dit moet nu echter niet moeilijk te vinden zijn, je hoeft slechts een
grep los te laten op hostname. Voorbeeld:
$ hostname obelix.mynet
tcp wrapper
/etc/hosts.allow is een configuratiebestand voor een beveiligingssysteem
genaamd tcp wrapper. Het enige dat je hoeft te weten is dat je alle adressen van de
machines in je netwerk hier in moet zetten met uitzondering van de locale machine, achter het
keyword ALL:.
Voorbeeld: obelix heeft twee netwerkkoppelingen naar andere machines in het
netwerk. De koppeling met adres 192.168.0.2 gaat naar asterix en de
koppeling met adres 192.168.0.3 gaat naar idefix. In dat geval vul je in:
# hosts.allow
# See tcpd(8) and hosts_access(5) for a description
ALL: 192.168.0.2 192.168.0.3
Als je een NFS server hebt draaien op obelix dan moet je bovendien invullen:
portmap: 192.168.0.2 192.168.0.3
Network File System (NFS) geeft je de mogelijkheid om bestanden te benaderen op andere
machines alsof ze op je eigen machine staan.
/etc/hosts.deny is ook voor tcp wrapper en moet je niet
veranderen en dient er als volgt uit te zien:
portmap: ALL
ALL: ALL
/etc/hosts.equiv
/etc/hosts.equiv geeft gebruikers de mogelijkheid om op andere machines in te
loggen (met bijvoorbeeld rsh) zonder wachtwoord. Je moet zelf beslissen of je dit
wilt. De schrijfwijze is één bekende hostnaam per regel (als in
/etc/hosts). Bijvoorbeeld:
asterix.mynet
idefix.mynet
/etc/hosts.lpd
Het bestand /etc/hosts.lpd is van belang als je wilt afdrukken via het netwerk
met lpd. Het instellen van printen via het netwerk is een ander verhaal maar dit
bestand moet aanwezig zijn op de machine van waar je lp-daemon draait en het
moet alle namen bevatten van de machines die mogen afdrukken. De schrijfwijze is dezelfde als
bij hosts.equiv. Het instellen van de netwerkprinter zelf kun je het beste doen
met de hulpmiddelen die bij je distributie worden geleverd (bijvoorbeeld yast in
Suse en printtool in RedHat). De Printing HOWTO van het Linux
Documentation Project beschrijft hoe je dit kunt instellen zonder gebruik te maken van deze
hulpmiddelen.
sendmail
Het bestand /etc/service.switch wordt gebruikt door sendmail.
Op de machines in je netwerk (diegene die geen directe verbinding hebben met het Internet)
schrijf je:
hosts files
aliases files
Je stelt daarbij sendmail zo in dat alle post wordt doorgestuurd naar de machine met
het modem. Die wordt dan gebruikt als mailhost (postbode).
sendmail leest bij het opstarten een configuratiebestand genaamd
/etc/sendmail.cf in dat vrij onduidelijk is. Daarom wordt de macrotaal
m4 gebruikt om sendmail.cf bestanden te genereren vanuit een
(leesbaar) macrobestand. Hiervoor heb je de m4 macro processor nodig (is waarschijnlijk al
geïnstalleerd op je systeem) en een deel van de sendmail sources. RedHat
Linux zal deze al installeren in /usr/lib/sendmail-cf, andere distro's doen dit niet
maar je kunt de sources altijd nog zelf uitpakken. Documentatie over hoe
sendmail te configureren is te verkrijgen bij
www.sendmail.org.
Een centrale mail machine noemt men een mail-hub. Het idee daarbij is dat alle mail
naar deze hub wordt gestuurd en daar opgeslagen. Deze mail is vervolgens te benaderen via
NFS of POP/IMAP. Een m4 bestand om net dit te doen gaat als volgt:
#divert(-1)
include(`../m4/cf.m4')
VERSIONID(`mc file for asterix, A HOST INSIDE THE PRIVATE NETWORK')
undefine(`UUCP_RELAY')
undefine(`BITNET_RELAY')
OSTYPE(`linux')
# put here your outside mail domain. E.g if your user id is
# joe and your mail address [email protected] then you write:
MASQUERADE_AS(linuxnet.somewhere.org)
# Do not show these internal hostnames to the outside world:
MASQUERADE_DOMAIN(asterix.mynet)
MASQUERADE_DOMAIN(asterix)
MASQUERADE_DOMAIN(localdomain)
MASQUERADE_DOMAIN(localhost)
FEATURE(masquerade_envelope)
#the /etc/passwd entry: mail:*:8:12:mail:/var/spool/mail:
define(`confDEF_USER_ID',``8:12'')
# the centail mail hub is obelix, Note dot at the end
define(`MAIL_HUB', `obelix.mynet.')dnl
define(`confHOSTS_FILE',/etc/hosts)dnl
MAILER(smtp)dnl
MAILER(local)dnl
Om het bijbehorende sendmail.cf bestand te genereren uit bovenstaande
sendmail.mc ga je naar de cf directory van de sources
(RedHat: /usr/lib/sendmail-cf/cf) en zet daar sendmail.mc
neer. Daarna geef je het commando:
$ m4 sendmail.mc >/etc/sendmail.cf
Let op: om alleen het netwerk gewoon draaiende krijgen heb je geen sendmail nodig en je kunt
nog steeds mailen met Netscape zonder je over deze configuratie druk te maken.
sendmail is meer iets voor de gevorderde gebruiker.
Wat moeilijker is de configuratie van je mailhost. Die moet lokale mail afleveren en externe mail
doorsturen. Externe mail kan worden doorgestuurd via bijvoorbeeld smtp (Simple
Mail Transfer Protocol). In dat geval moet je de sendmail documentatie
(www.sendmail.org) lezen
over "define ('SMART_HOST',smtp:provider.mail.host)dnl". Voor uitgaande mail op je
computer heb je nog het bestand /etc/service.switch nodig dat zoeken via DNS
mogelijk maakt.
hosts files dns
aliases files
Je kunt ook nog UUCP en andere methoden gebruiken. Dat hangt een beetje af van wat je
provider levert.
UUCP staat voor Unix to Unix CoPy en is een oud berichtensysteem dat echter zeer
geschikt is voor het ophalen van mail bij je provider. Nogmaals, je provider moet het wel aanbieden.
De meer Windows georiënteerde bedrijven zullen misschien niet eens
weten wat UUCP is. Wat kan UUCP voor je doen?
Voorbeeld: het domein van je provider is ergens.org en je host wordt opgebeld
van buiten linuxnet (buiten slaat op de ppp-koppeling, intern in onze voorbeelden hebben we het
tot nu toe obelix genoemd). Je provider geeft je alle mail die is gericht aan
<iemand>@linuxnet.ergens.org. Je kunt nu sendmail
gebruiken voor het distribueren hiervan. Iedere lokale gebruiker heeft zijn/haar eigen postadres
die jij op kan zetten. Dat is een kwestie van het toevoegen van een Unix
gebruiker. Helaas leveren de meeste providers alleen nog een POP mail adres en is dit alles niet
van toepassing. Gebruik in die gevallen Netscape of fetchmail.
IP-Masquerading (NAT)
IP-Masquerading is een Linux-term, de meeste noemen het Network Address
Translation (NAT). Dit is heel handig voor een klein thuisnetwerk. Het geeft je de
mogelijkheid om het Internet te benaderen via iedere machine in het netwerk, hoewel er slechts
één PC echt op het net is aangesloten. Die is dan via het modem/PPP aangesloten
en heeft een geldig, door het gehele Internet gerouteerd IP adres dat hem dynamisch of statisch
is toegewezen via de ppp0 koppeling. Met behulp van IP-Masquerading kunnen meerdere
mensen tegelijkertijd bij jou thuis het Internet op. _LF_ zal nog een apart artikel wijden aan hoe
je dit instelt. Aanbevolen is ook het lezen van de howto over IP-Masquerading.
We zullen hier alleen het principe uitleggen.
Om te begrijpen hoe het werkt moet je weten hoe een IP verbinding tot stand komt. Als je via je
bladerprogramma verbinding maakt met een machine op het Internet dan maak je eigenlijk
verbinding met een programma op die machine via een IP adres. Dat
programma (hier dus de web server) wordt gekozen via het zogeheten
poortnummer. Deze poortnummers zijn van tevoren vastgesteld. Poort 80 is het poortnummer
van de webserver. Als je nu dus www.linuxfocus.org intikt in Netscape,
dan weet dit bladerprogramma dat hij verbinding moet maken met IP adres
192.53.25.18 (=www.linuxfocus.org) op poort 80.
Voor een volledige IP verbinding waarbij je kunt zenden en ontvangen heb je paren van IP
adressen en poortnummers nodig. Dus 195.53.25.18 en 80 plus je eigen IP adres en jouw lokale poort
waarop de web server antwoord kan geven. Het lokale nummer van de poort is meestal
willekeurig. Bijvoorbeeld:
www at www.linuxfocus.org: your.machine.at.your.isp:
IP=195.53.25.18 Port=80 ----- IP=123.123.456.1 Port=4123
Wanneer je een tweede venster in Netscape opent en nog een connectie maakt met
www.linuxfocus.org dan wordt er weer een nieuw lokaal poortnummer
gekozen:
www at www.linuxfocus.org: your.machine.at.your.isp:
IP=195.53.25.18 Port=80 ----- IP=123.123.456.1 Port=4123
IP=195.53.25.18 Port=80 ----- IP=123.123.456.1 Port=4541
Let op: twee keer poort 80 kan niet maar dat laten we voor de eenvoud even zo.
Wanneer nu een TCP pakket terugkomt van de web server dan weet het naar welk window het
moet gaan door het verschil in poortnummers op jouw machine. In het geval van je thuisnetwerk
achter je machine your.machine.at.your.isp is de situatie nu als volgt:
www at www.linuxfocus.org --- your.machine.at.your.isp --- privatehost1.mynet
|
+- privatehost2.mynet
Geen van de IP adressen of koppelingen van privatehost1.mynet zijn bekend
in het Internet. Daarom kan er vanuit het Internet geen pakket worden gestuurd naar
privatehost1.mynet. Geen enkele router zou weten waar dit naar toe zou
moeten. your.machine.at.your.isp echter, heeft wel een IP adres dat bekend is
op het Internet en zoals we hierboven hebben kunnen zien, kunnen er naar dit adres meerdere verbindingen
worden gelegd via verschillende poortnummers.
privatehost1.mynet kan een verbinding aanvragen met
www.linuxfocus.org en poort 80. Het zou een poortnummer uitkiezen (3211
bijvoorbeeld) en een pakketje sturen in de richting van
your.machine.at.your.isp. Normaal gesproken zou jou machine dit pakketje
(zonder IP-masquerade) gewoon doorsturen naar het Internet, alwaar het zou verdwijnen
(althans, het antwoord van www.linuxfocus.org zou nooit terugkomen).
Mét IP-masquerade zal your.machine.at.your.isp het pakketje herkennen en het omzetten
naar een nieuwe verbinding met behulp van een willekeurig lokaal poortnummer en het geldige IP-adres.
Het onthoudt daarbij dat antwoorden die op die poort binnenkomen, door moeten worden gestuurd naar
privatehost1.mynet op poort 3211.
IP-masquerade bouwt dus een nieuwe connectie op en onderhoud deze namens een lokale
machine waarbij lokale adressen en poorten worden omgezet.
IRQ
Problemen met interrupts komen niet alleen bij netwerken voor. Dit kan iedere keer dat je nieuwe
hardware aansluit gebeuren. Helaas heeft de PC slechts 16 interrupts en de meeste daarvan zijn
al in gebruik. Het is mogelijk om een interrupt te delen tussen twee PCI kaarten ten koste van wat
CPU tijd. Het is niet mogelijk om interrupts te delen met ISA kaarten. Als je een PNP BIOS hebt
waarop je een ISA kaart aan wilt sluiten met een vast interrupt adres dan zul je eerst in de BIOS
instellingen dit adres moeten reserveren omdat ander de BIOS het adres aan andere hardware
toe zou kunnen wijzen en dan gaat het fout.
Onder Linux kun je zien hoe vaak bepaalde hardware een interrupt heeft gebruikt met het
commando cat /proc/interrupts. Hardware die niet in gebruik is zal geen interrupts
genereren.
Nu volgt een lijst met van tevoren vastgestelde interrupt-adressen. Deze kun je alleen gebruiken
als hij niet in gebruik is door componenten die hieraan zijn toegewezen. Als je bijvoorbeeld SCSI
disks gebruikt in plaats van IDE dan kan je dus interrupts 14/15 hergebruiken.
IRQ |
Bestemd voor |
0 | timer |
1 | toetsenbord |
2 | cascade (programmeerbare interrupt controller) |
3 | serial 2 |
4 | serial 1 |
5 | vrij, meestal geluidskaart |
6 | floppy |
7 | parallelle poort, onder linux genereren printers echter
geen interrrupts |
8 | real time klok |
9 | vrij |
10 | vrij |
11 | vrij |
12 | ps2 muis (/dev/psaux) |
13 | reken co-processor |
14 | IDE 1 |
15 | IDE 2 |
Voorbeeld-netwerk
Na al deze theorie dan nu een voorbeeld-netwerk. Waarom een thuisnetwerk? Hier wat
suggesties:
- Met netwerken kun je dingen delen. Eén computer heeft een modem en Internet
verbinding, allen kunnen dit delen en gebruiken. Eén computer heeft een printer, alle
computers kunnen dit delen. Eén computer kan speciale opslag hebben (zoals ZIP-drive,
CD-ROM, DVD), alle computers kunnen deze gebruiken en benaderen via NFS. Eén
computer kan een dikke disk hebben met veel plaatjes en muziekbestanden, alle computers
kunnen dit benaderen.
- Het is technisch interessant.
Nu dan het voorbeeld-netwerk. We hebben een computer met modem en een met printer. De
twee zijn aangesloten via Ethernet. Beiden hebben een CD-ROM en floppy disks. Dan is er ook
nog een laptop zonder modem, printer of CD-ROM. Deze sluiten we aan via de parallelle poort op
de eerste computer, waarmee deze toegang heeft tot modem, printer en CD-ROM.
Hoe zou je een dergelijk netwerk op gaan zetten? Welnu, allereerst moet je de hardware kopen.
Je hebt nodig (afgezien van computers, modem en printer); 2 netwerkkaarten, een kruiskabel en
een LapLink kabel. Een hub is niet nodig. Je installeert de hardware, sluit de kabels aan en
vergewist je ervan dat er geen conflicten zijn met andere interrupts. Daarna her-configureer je de
kernel of je laad je de betreffende modules als deze reeds aanwezig zijn. Ondersteuning voor de
meeste hardware zit er al in als je een kant-en-klare kernel gebruikt van je distributie. Daarna
gebruik je ifconfig voor het instellen van de IP adressen van je nieuwe kaarten.
Hierna gebruik je route om te bepalen welke pakketten waarheen moeten worden
gestuurd. Hierna zou je basis-netwerk al moeten werken. Je kunt dan nog geen gebruik maken van
domeinnamen en IP-Masquerade zal ook nog niet werken maar je kunt een ping
sturen en de LED op je kaart in actie zien.
Als je de volgende adressen gebruikt:
192.168.0.1 eth0 op machine 1
192.168.0.2 eth0 op machine 2
dan kun je op machine 1 intikken: ping 192.168.0.2:
>ping 192.168.0.2
PING 192.168.0.2 (192.168.0.2): 56 data bytes
64 bytes from 192.168.0.2: icmp_seq=0 ttl=64 time=0.9 ms
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=0.8 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.9 ms
--- ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.8/0.8/0.9 ms
Dit stop je met ctrl-C. Ga eens kijken met het commando cat /proc/interrupts waar
je de kaart zou moeten zien, of PLIP in het geval van de laptop verbinding. Het commando
cat /proc/ioports laat je nieuwe hardware zien en het commando netstat -i
laat zien hoeveel IP pakketjes er naar welke koppeling zijn gegaan.
Op dit moment kun je al ftp gebruiken en bestanden oversturen.
De basis van je netwerk ligt er nu maar de echt gave spullen werken nog niet. Het is nu tijd om al
die configuratie bestanden aan te passen (maak daarbij gebruik van die mooie grafische
hulpmiddelen die bij je distributie worden geleverd). Als laatste zet je IP-Masquerade en NFS op.
Je netwerk is nu compleet.
Ik hoop dat dit een aardig overzicht heeft gegeven. Zit niet bij de pakken neer als ik niet
uit de doeken heb gedaan hoe iets precies moet worden ingesteld. Er zullen aparte artikelen
verschijnen over ifconfig/route/netstat, IP-Masquerade, PPP instellen,
afdrukken via het netwerk met lpd en NFS. Dit artikel moest een goed overzicht
geven om zo volgende artikelen over netwerken beter te kunnen begrijpen.
Veel plezier met netwerken
PS: _LF_ is altijd blij met nieuwe artikelen over netwerken. Niet alle artikelen zijn al geschreven en
dit is slechts de start van een hele serie. Laat het ons weten als je een ervaren gebruiker bent en
hierover een artikel wilt publiceren.
Referenties: