Thuisnetwerken, een overzicht

ArticleCategory:

System Administration

AuthorImage:

[Foto van de Auteur]

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:

[Illustratie]

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.
10Base2

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.
10BaseT

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. RJ-45
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: De diverse kabels zijn in standaard categorieën onderverdeeld, aan de hand van hun demping: 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 joe@linuxnet.somewhere.org 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:
  1. 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.
  2. 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.
example network 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: