De naam van een computer opvragen
|
Dit hoofdstuk gaat over enige basale zaken m.b.t. het internet protocol versie 4. Op zich is de informatie ook wel in HOWTO's en manuals te vinden, maar veel handleidingen gaan uit van een behoorlijke basiskennis. Het configureren van een netwerk wordt, terecht, gezien als de taak van een hiervoor opgeleide systeembeheerder.
Ik ga in de bespreking in eerste instantie uit van Linux. Linux is een goed gedocumenteerd open source software netwerk besturingssysteem. Het Linux Documentatie Project richt zich niet alleen op hackers , maar bevat ook uitstekende overzichtsartikelen voor autodidacten en leken zoals u en ik.
Bovendien gaan deze auteurs van de netwerkprotocollen en configuratiebestanden uit. Hier leert u meer van dan van vaak slecht gedocumenteerde Wizards waar de computerbladen over schrijven.
OS/2 netwerk eigenaardigheden komen in OS/2 Warp in het net aan bod. Voor Windows XP zie: Het netwerk instellen.
Het Transmission Control Protocol en het Internet Protocol zijn de standaarden van het internet(werk). TCP/IP is een zeer betrouwbaar protocol.
De TCP/IP stack van uw besturingssysteem maakt gebruik van Internet Protocol (IP) adressen om computers op het netwerk (hosts) te identificeren. Hiertoe krijgt iedere computer via zijn netwerkkaart of modem een voor het netwerk uniek IP-adres toegewezen.
Een IP versie 4 adres is een 32 bits getal (32 enen en nullen), dat voor het gemak wordt opgedeeld in 4 delen van 8 bits, die elk als een driecijferig decimaal getal worden geschreven (dotted-decimal notatie). Het binaire getal 11000000 10101000 00000001 01100101 wordt dan als 192.168.1.101 geschreven. Maar omdat deze getallen ook niet te onthouden zijn worden aan de IP adressen weer hostnamen gekoppeld door een domeinnamendienst (domain name service, DNS).
Het aan het IP protocol gebonden Transmission Control Protocol (TCP) zorgt ervoor dat de in kleine pakketjes verzonden data héél overkomt. Dit gebeurt zonder dat u er wat van merkt. Want hostnamen worden via de DNS in IP adressen omgetoverd en de transmissie van host naar host vindt op de achtergrond plaats.
Internet applicaties werken meestal als een client-server systeem. Een server is ieder met het netwerk verbonden computer (host) die internetwerkdiensten aanbiedt. Een client computer vraagt ze via datzelfde netwerk op. De diensten worden uitgevoerd door serverprogramma's op de server (servers) en opgevraagd door client programma's op de clients.
Server en client programma's kunnen op dezelfde computer zitten (localhost), op hetzelfde netwerk (LAN) zitten of ver van elkaar verwijderd zijn (WANs of internet). Achter een client programma kan een persoon zitten, maar ook een automaat (batch, daemon). Zolang ze maar de internettaal TCP/IP spreken is het voor het internet protocol wel goed.
servers |
Een server is te vergelijken met een bank of andere dienstverlenende instantie. Het is gehuisvest in een gebouw (host) met meerdere loketten die in een portiek (interface) staan. Elk loket (poort) herbergt een dienst (service). Iedere dienst heeft een poortnummer en kent zijn eigen voorwaarden en procedures. Zo is de informatiebalie een loket met nummer 80 waar iedereen terecht kan. Voor andere diensten (met HTTPS geld ophalen op poort 443) moet u zich als klant min of meer legitimeren (gebruikersauthentificatie). Achter gesloten deuren (firewall) zijn er tenslotte interne diensten waarvan alleen bankmedewerkers gebruik van kunnen maken. |
Netscape is een client van poort 80 (HTTP ) en 443 (secure-HHTP) van een internet server. HTTP is een van vele de internetprotocollen (diensten) die op het internet te vinden zijn. Vrijwel alle besturingssystemen kunnen met deze internetprotocollen overweg. Ze hebben een soortgelijke ingangen in het bestand /etc/services.
Realiseert u zich dat een IP adres aan een netwerkinterface wordt toegewezen. Dus aan de plaatsen waarmee uw computer met een netwerk verbonden is. Als u via een analoog modem of via ISDN kaart tijdelijk inbelt of via een kabel of ADSL modem of ethernetkaart altijd met het internet verbonden bent, zal uw PC dus een of meer IP adressen toegewezen hebben. Die IP adressen moet u zelf instellen (configureren). Soms doet een ander (programma, installateur) dat ongemerkt voor u. Maar het zijn wel uw brievenbussen en het is daarom belangrijk als u ze kent.
Als u na uw netwerkconfiguratie de computer uitzet, niet meer belt en/of of de verbindingskabel uit de ethernetkaart trekt is de verbindingsplaats (interface met een IP adres) van uw computer met andere netwerken op non-actief gesteld. Uw computer heeft dan niet meer niet meer een op het internet geldig IP adres dat anderen kunnen benaderen. U bent dan offline. Maar u bent nog niet offline als u via een actieve modemverbinding op het internet aangesloten bent, maar zelf niets doet.
Omdat TCP/IP een geautomatiseerd systeem is kunnen anderen actieve netwerkinterfaces misbruiken. Bijv. door een rotje in een niet afgesloten brievenbus te plaatsen. En zo'n rotje komt dan in uw systeem terecht. Het kan door een firewall onderschept worden (relatief veilig), maar anders zal het in de TCP/IP stack van het besturingssysteem of in een gebruikersprogramma terecht komen. Als ze zich erin verslikken loopt u gevaar. Want als zo'n rotje ontploft zonder dat een virusscanner alarm slaat, kan een ander uw PC via de achter de interface aangetroffen kwetsbare (vulnerable) programma's overnemen. En dan kan hij doen wat hij wil. Meestal zal de aanvaller een server installeren of indien die reeds op het systeem voorhanden is, voor zijn eigen doel configureren.
Verbindingen tussen clients en servers worden sessies genoemd. Als u chat, email verstuurt of informatie opvraagt moet u op de een of andere manier contact met een server hebben. Dat kan op verschillende manieren. De pakketjes kunnen via een verbindingsloos (User Datagram Protocol, UDP) of een verbindingsgeoriënteerd protocol (Transfer Control Protocol, TCP) internet protocol verstuurd worden.
Bovendien kunnen de server en client applicaties de aard van de verbinding verschillend opvatten: als een ad hoc verzoek (HTTP, DNS) of als een meer persistente verbinding (HTTPs).
Verbindingsloze diensten zijn te vergelijken met een radio-uitzending of brief. Hiermee stuurt u een bericht zonder te weten of het bericht ooit zal aankomen. De geadresseerde hoeft niet online te zijn. De zender zendt en de beoogde ontvanger kiest er al dan niet voor om het bericht nu of nooit te ontvangen. Een internet radiozender die via UDP uitzendt (streaming broadcast) is het beste voorbeeld van een connectieloze dienst. Maar ook de internet namendienst (DNS) maakt gebruik van UDP.
Bij verbindingsloze diensten gaat het om snelheid. Het verlies van een datagram mag geen problemen opleveren. Bij internetradio en video broadcasting is dit het geval. Het gaat om zoveel pakketjes per seconde dat een iets afwijkende toon of pixel gedurende een fractie van een seconde geen reden zal zijn om het audio- of videobestand opnieuw af te spelen.
Voor de DNS geldt dat zowel vraag (wat is het IP adres van deze host) en antwoord (het IP adres van de host) in een UDP pakketje (datagram) verzonden kunnen worden. Krijgt de zender (client) niet op tijd een antwoord van de DNS server, dan stelt hij de vraag opnieuw.
Een verbindingsgerichte dienst lijkt meer op een telefoongesprek. Eerst komt de verbinding volgens specifieke regels tot stand (handshaking), daarna wordt de informatie uitgewisseld. Het afsluiten gaat ook weer via bepaalde regels. En daartussenin wordt de kwaliteit van de verbinding (sessie) tot in de puntjes gecontroleerd. Omdat de transmissie van ieder pakketje aldoor bewaakt wordt geeft dit meer overhead dan bij een "verbindingsloos" protocol dat in principe alleen maar pakketjes verstuurd.
Het voordeel van een verbindingsgerichte dienst is de betrouwbaarheid. Een TCP/IP sessie tussen twee hosts komt tot stand of niet. De berichten tussen de client en server applicaties worden uiteindelijk in hun geheel verzonden en ontvangen of niet. Want als een verzonden datagram niet op tijd op de bestemming aankomt weten zender en ontvanger daarvan.
Het secure HTTP (poort 443) waarmee u telebankiert is het beste voorbeeld van een verbindingsgerichte dienst. De opdracht "Doe mij maar een overboeking" wordt pas uitgevoerd als er een exclusieve en versleutelde verbinding met de klant tot stand gekomen is. De klant moet zich eerst identificeren voordat hij toegang krijgt tot zijn rekening. Hierdoor is de procedure veel omslachtiger dan bij een verbindingsloos protocol.
Andere verbindingsgerichte diensten zijn telnet en secure shell. Bij telnet wordt iedere teken afzonderlijk verzonden. De volgorde waarin de tekens bij de server aankomen is dus van groot belang. Daarnaast is het niet doenlijk om zich voor ieder teken opnieuw bij de server aan te melden. Vandaar dat de server de verbinding open houdt totdat de gebruiker de dienst via de gangbare protocollen (vergelijk het tot ziens zeggen en het ophangen van de telefoon) netjes beëindigd heeft.
HTTP (poort 80) is het bekendste voorbeeld van een op zich verbindingsloze dienst. Een webserver ontvangt verzoeken van meerdere clients en stuurt ze een voor een een kopie van de gevraagde bestanden terug. Zodra het verzoek afgehandeld is (het opgevraagde bestand of een foutmelding verzonden is), wordt de sessie afgesloten. Het enige dat de webserver en uw browser daarna nog bindt, zijn cookies, logbestanden en de browser geschiedenis. Maar die behoren niet tot het HTTP protocol.
HTTP is een toestandsloos protocol. De webserver houdt geen verbinding open voor ex-gebruikers die naar hun browser gekopieerde teksten lezen of al weer naar de volgende URL zijn doorgegaan. Zo kan een webserver op een zeker moment 10.000 lezers hebben, maar omdat de clients de bestanden op hun eigen computer lezen is het hiervoor benodigde aantal open sessies maar een fractie hiervan.
Maar de uitwisseling van de bestanden (uw HTTP verzoeken en opgevraagde serverbestanden) vindt wel verbindingsgericht plaats. HTTP loopt immers via TCP. Hierdoor zal ieder verzocht bestand heelhuids aankomen. Als de webserver niet snel genoeg reageert verstuurt het op zich connectiegeoriënteerde TCP/IP protocol het bericht opnieuw en als ook de volgende berichten niet beantwoord worden, dan krijgt u een foutmelding of een zandloper te zien.
Het TCP/IP protocol is onder UNIX tot ontwikkeling gekomen. UNIX levert een multi-user omgeving. Gebruikers-identificatie is daarom een typisch kenmerk van de meeste TCP/IP programma's. TCP/IP wordt inmiddels in de meeste bedrijfsnetwerken toegepast.
De door uw TCP/IP stack gebruikte internetprotocollen bestaan uit vier of vijf delen. Ze worden meestal als gestapelde lagen (stack=stapel) voorgesteld, maar je kunt evenzogoed stellen dat ze achter elkaar worden afgewerkt. De communicatie tussen server en client processen in de applicatielaag moet immers ook door de transportlaag, internetwerklaag en datalink/fysieke laag heen gaan. Want uiteindelijk gaat het op hardware niveau om de uitwisseling van elektromagnetische stroompjes. Daarom verloopt de communicatie tussen de server en client processen ook niet direct (face to face), maar logisch (verg. briefpost over de weg).
De door de applicaties uitgewisselde berichten worden door de transportlaag in kleinere segmenten opgesplitst. Kleine pakketjes passen ook in kleine of drukbezette hardware en software buffers, wat minder kans op filevorming geeft op drukbezette internet routers (knooppunten, hubs) tussen de logisch communicerende hosts. Vergelijk het met het ritsen van kleine personenwagens, dat vlotter verloopt dan het ritsen van langere vrachtwagens gegeven op (relatief) korte invoegstrook.
Deze kleine TCP of UDP segmenten worden op de internetlaag van de TCP/IP stack omgezet in door IP routers gebruikte datagrammen. Maar om ze van host naar host te transporteren moeten ze ook worden omgezet naar de door hun verbinding gebruikte interfaces (ethernet, PPP voor seriële lijnen) gebruikte frames. En pas met behulp van geschikte stuurbestanden voor de hardware (ethernetnetkaarten, modems) worden de berichten uiteindelijk netjes uitgewisseld als gedigitaliseerde fysieke verschijnselen (aan-uitpotentialen, radiogolven, lichtimpulsen).
Kortom: Er is nogal wat werk te doen om een bestand van de ene naar de ander computer te verzenden. En dit werk gebeurt op verschillende niveaus.
Niveau van logische communicatie |
Toelichting. |
Applicatielaag: Het uitwisselen van logische berichten volgens een bepaald internet applicatie protocol. |
Internet applicaties (client en server processen) maken gebruik van bepaalde procedures en protocollen als Remote Procedure Call (RPC), Telnet, File Transfer Protocol (FTP), Simple Mail Transfer Protocol (SMTP), Domain Name Service (DNS), Network News Transfer Protocol (NNTP) en Hypertext Transfer Protocol (HTTP) om hun logische berichten correct gecodeerd te versturen. Doorgaans wordt het protocol door het poortnummer van de server bepaald. |
Transportlaag: Het opdelen van de informatie in UDP of TCP segmenten. De transportlaag functioneert als een postkantoor: De UDP snelpost wordt meteen verzonden. De heelhuidse verzending en aankomst van TCP pakketten wordt uitgebreid geregistreerd. |
De protocolair opgestelde berichten van de processen uit de applicatielaag worden in de transportlaag opgesplitst in de kleinere segmenten. Deze User Datagram Protocol (UDP) of Transmission Control Protocol (TCP) segmenten worden aan de netwerklaag doorgeven. Bij de berichten die door applicaties via het verbindingsgeoriënteerde Transfer Control Procol verzonden wordt door de transportlaag van ieder tussenstation (hub) een uitgebreide administratie van verzending en ontvangst bijgehouden. Vergelijk het met de extra zorg voor een aangetekende brief. De met het "verbindingsloze" UDP verstuurde berichten worden daarentegen in het wilde weg naar de beoogde doelbestemming verzonden en verdwijnen regelmatig in het niets. Vergelijk het met een onaangetekende brief, die ook ergens ongelezen in een prullenbak kan belanden zonder dat iemand zich daar verantwoordelijk voor voelt. |
Internetwerk (IP) laag: het verzenden van IP datagrammen van host naar host. En de IP metacommunicatie tussen routers over het bepalen van de snelste weg. |
De netwerklaag van de TCP/IP stack zorgt voor de host naar host communicatie. Binnen uw lokale netwerk verzorgt uw router, brug of hub daarvoor. Maar het verzenden van IP datagrammen van de bron naar het doelhost over het internet gaat doorgaans via vele routers (hubs, sprongen). Iedere router bepaalt aan de hand van zijn dynamische padbepalingstabel (of het statische /etc/route.conf) het volgende adres voor een bepaalde bestemming. Om de aldoor wisselende routers op het internet de snelste weg te laten vinden zijn er meerdere router- en netwerklaagprotocollen ontworpen: IP, ICMP, IGMP, ARP en RARP om er maar een paar te noemen. |
Netwerk interface (link) laag: datalinklaag en fysieke laag |
Netwerkinterface en hardware (ethernet, PPP, SLIP frames). Op dit niveau zijn goedestuurbestanden nodig. En daar schort het onder niet Windows systeemen nogal eens aan, omdat de fabrikanten zich |
Op ieder niveau kunnen communicatieproblemen optreden. Om die communicatieproblemen op te lossen moet u de werkzaamheid van de lagen stuk voor stuk testen.
Als een benodigde applicatie niet geladen wordt (top), is er op applicatieniveau wat aan de hand. De oorzaak kan zijn gelegen in een verkeerde serverinstelling (probleem op applicatieniveau), maar ook in ontbrekende onderliggende voorwaarden. Bijvoorbeeld omdat de server zich niet aan zijn (onjuist geconfigureerde) netwerkinterface kan binden. Of als er geen route (IP of DNS probleem) gevonden wordt naar de host.
Als een ping naar het IP adres niet werkt, dan bestaat het probleem op IP of de onderliggende fysieke laag. Een werkende ping eigen IP-adres duidt doorgaans op een IP routingprobleem of DNS probleem verderop.
Een netwerkinterface is de combinatie van hardware, stuurbestanden en overige software waarmee u uw computer met een andere computer verbindt. Ze hebben namen als lan0 (eerste netwerkkaart), ppp0 (eerste seriële verbinding via het PPP protocol), lo (voor de loopback interface) e.d. Het IP adres slaat op de netwerkinterface. De hostnaam op het IP adres. Een computer met meerdere netwerkinterfaces zal dus meerdere hostnamen hebben.
Het internetwerk en de transportlaag maken deel uit van de "TCP/IP stack" van het besturingssysteem. Het wordt tijdens de installatie van de TCP/IP stack aan de netwerkinterface gebonden. Vanaf dat moment vormen ze een onlosmakelijke geheel.
De TCP/IP stack van het besturingssysteem (bijv. TCP/IP voor OS/2) is een software implementatie van in Request for Comment (RFC's) vastgelegde internet protocollen. Veel TCP/IP stacks zijn van de Berkeley System Distribution (BSD UNIX) afgeleid. Ze kunnen t.o.v. de RFC standaarden meer of minder afwijkend en/of (on- of over)volledig zijn. De TCP/IP stacks worden tijdens de netwerkinstallatie van uw besturingssysteem geïnstalleerd. Linux distributies installeren TCP/IP standaard op ieder systeem. Ze maken deel uit van de kernel (als standaard kernelmodules). Want Linux is een echt netwerkbesturingssysteem.
De applicatielaag bestaat uit de TCP/IP applicaties (servers en clients) die u gebruikt. Onder Linux zijn dat ook de grafische programma's die werken met het X protocol.
Er zijn meer indelingen te bedenken. Waar het om gaat is dat client en server applicaties via gelijke protocollen logisch met elkaar kunnen communiceren, omdat ze de uitvoering van de technische details weer delegeren naar de onderliggende protocollen van de transport en netwerklaag. Zo kunnen Piet en Jan elkaar in gewoon Nederlands email versturen, zonder weet te hebben van de aan de techniek onderliggende technische details van bits en kabelmodems.
Als een server en client programma's hetzelfde protocol verstaan, bijv. Netscape en Apache die dezelfde HTTP taal spreken, en de onderliggende lagen goed functioneren, maakt het voor de client niet meer uit of de server zich ter plekke of op een heel ander besturingssysteem elders op de wereld bevindt. Hierdoor kon een heterogeen netwerk als het internet ontstaan.
Uiteindelijk draait het om hardware, de via kabels en communicatiesatellieten verzonden elektrische stroompjes, die weer door spionnen (o.a. via aan schotelantennes verbonden netwerksniffers) af te tappen zijn. Dit aftappen gebeurt inmiddels op grote schaal.
Client |
Medium |
Server |
---|---|---|
De Netscape client brengt de verzochte bestanden in beeld. |
Applicatielaag: Clients en servers spreken een applicatie protocol (hier HTTP). De client applicatie vraagt de gegevens op. De server levert het. De client krijgt hulp van de DNS namendienst om het IP adres van de domeinnaam van de server op te zoeken. |
De Apache webserver levert de verzochte HTML bestanden en afbeeldingen. |
UDP of TCP segmenten |
Transportlaag: Het Transmission Control Program verzendt en controleert de aankomst van de in TCP segmenten verdeelde data. Het minder gebruikte UDP verzendt, maar controleert de aankomst van de datagrammen niet. |
De webserver levert de opgevraagde bestanden via TCP. |
IP-adres client |
Internet(werk)laag: Het Internet Protocol (IP) regelt het transport van de in IP datagrammen verpakte UDP en TCP segmenten via hun IP adressen. Het gaat om IP host to host communicatie van datagrammen via routers. |
IP-adres server |
Ethernet en PPP frames |
Datalinklaag : |
ethernet, PPP, PPoE |
Stuurbestanden |
Hardwarelaag: Uitwisseling van binair gecodeerde stroompjes en/of potentialen via hardware (netwerkkaart, modems, routers, kabels, e.d.). De meestal door de fabrikant geleverde stuurbestanden (device drivers) van de door de hardware gebruikte chips zetten de elektrische signalen om in de door sdatalinklaag geaccepteerde bits en bytes. |
|
Op Linux/UNIX systemen wordt TCP/IP ook bij de interne communicatie toegepast. Dus voor communicatie tussen programma's op dezelfde computer: De X server, internet- en printerdiensten zijn voorbeelden van diensten die een TCP/IP netwerkomgeving verwachten. Op een stand-alone computer wordt daarom gebruik gemaakt van de zogeheten TCP/IP loopback interface (lo): een snelle TCP/IP verbinding met de eigen computer (in IP termen "localhost" op 127.0.01).
Via deze loopback interface adres kunt u mail aan uzelf (root@localhost, sjoerd@localhost) en anderen op dezelfde computer (bouke@localhost) versturen. De postfix smtp server op zolder.thuis (192.168.1.2) maakte van er overigens localhost.zolder.thuis van.
Return-Path: <sjoerd@no-spam.sjoerd-visser.demon.nl.nl> X-Original-To: sjoerd@localhost.zolder.thuis
In dit geval was het Return-Path (het adres van de afzender) aan het mailprogramma (de X-mailer) opgegeven. Maar als ik hier voor lokale post sjoerd@zolder, sjoerd@localhost, sjoerd@zolder, sjoerd@zolder.thuis, sjoerd@127.0.0.1 of sjoerd@192.168.1.2 had opgeven was het ook goed gekomen. En was ik geen spammers tegengekomen. Dit werkt natuurlijk niet met de smtp server van uw provider, omdat die met (als het goed is) slechts met publieke internetadressen werkt. En waarschijnlijk alleen met de na te trekken internetadressen van zijn eigen netwerk waar het generieke localhost niet toe behoord.
Een host is een computer op het netwerk. Het heeft een voor dat netwerk uniek IP adres, dat aan zijn netwerkinterface is gekoppeld. Het aantal computers (hosts) op een netwerk zal afhangen van de omvang van het netwerk. Men spreekt in dit opzicht van LANs, WANs en internet (zie jargon).
Klassiek worden computers in netwerken (hosts) onderverdeeld in servers en clients.
Een server is een centrale computer waarop meerdere werkstations (clients) aangesloten zijn. Meestal bevat deze essentiele databestanden (bestandenserver) en/of zorgt voor het afwerken opdrachten van de printer (printserver).
Op de clients (tegenwoordig werkstations, vroeger terminals) wordt daarentegen gewerkt. Daar wordt getypt, gemaild e.d., waarbij het belangrijkste deel van de uitvoer op de vaste schijf van de server blijft.
De termen server en client kunnen in een multitasking omgeving ruimer worden opgevat. Hier kunnen meerdere programma's (met server en client taken) tegelijkertijd draaien.
Uiteindelijk draait het op de server om het programma (of een programma suite) dat de dienst verleent. Op het thuisnetwerk zal een Linux server meestal een hele reeks diensten leveren. De client is het programma dat om een bepaalde dienst vraagt.
Een telnet client probeert contact te zoeken met een telnet daemon (telnetd). Maar client- en serveerprogramma kunnen ook op dezelfde computer staan. Grafische toepassingsprogramma's zijn bijv. clients van de X server. Omdat de X clients en de X server gebruik maken van het TCP/IP protocol mag de X server op een andere computer staan. Maar meestal zullen ze op dezelfde (lees: uw) computer staan.
Ook de rollen kunnen omkeren. Een programma dat informatie doorgeeft kan client voor het ene programma zijn en server voor het andere. Typische voorbeelden zijn proxies als WWWoffle en Leafnode die op uw systeem als client gebruik maken van de diensten van uw internet provider en de informatie weer (als server) doorgeven aan internet clients als Netscape Navigator en pine.
In een netwerk aan huis zal het vaak om een peer-to-peer netwerk (evenknienetwerk) gaan. Dat gaat het om aan elkaar gekoppelde werkstations zonder echte server. Door Bestanden en Printers te delen kunnen de PC's van elkaars resources gebruik maken, d.w.z. elkaar serveerdiensten verlenen. De vrijgave van mappen en printers wordt op het werkstation ingesteld.
Programma's die op de achtergrond server-achtige diensten verlenen worden services of daemonen genoemd (zie: init en de daemonen). Het woord daemon komt van Disk And Execution Monitor. Oorspronkelijk waren daemonen een soort macro's. Tegenwoordig communiceren ze via het TCP/IP protocol. Ze lopen op de achtergrond zonder dat u er erg in hebt. Het commando ps -ax (pstat onder OS/2) laat degelijke achtergrondprocessen zien.
In /etc/services staan de mogelijke diensten van uw systeem vermeld. Naast een afkorting van de dienst (bijv. SMTP voor simple mail tranfer protocol) staat er een poortnummer vermeld en een protocol (TCP of UDP). De tekst na de # is een commentaar. De geactiveerde daemonen staan in /etc/inetd.conf., het configuratiebestand van de internet daemon, het proces dat de poorten van uw computer in de gaten houdt.
Een netwerkcomputer moet heel veel diensten afwikkelen en met het poortnummer wordt aangeven welke dienst u hebben moet. De dienst handelt het verzoek volgens een bepaalde methode (protocol) af. Vergelijk het met een adressering als:
Onder Netscape spreekt u de poort van een computer aan met http://host:poortnummer of http://hostnaam.domein:poortnummer. Bijv. "http://localhost:8080/" geeft op mijn WWW proxy het welkomstscherm van WWWoffle. Een overzicht van op het internet gebruikte poorten vindt u in portnumber.txt. U kunt dit op uw systeem nagaan met een telnet-verbinding naar de voor smpt bestemde poort (25) op uw computer (localhost). Dat gaat als volgt:
Bij deze telnet verbinding (afgesloten met "quit") werd contact gemaakt met sendmail. De verbinding kwam tot stand via de internet daemon (inetd). Die wist uit het configuratiebestand /etc/inetd.conf dat voor smtp sendmail geactiveerd moest komen.
Het formaat is:
service |
De dienst uit /etc/services |
socket_type |
Tcp diensten gebruiken "stream", udp diensten "dgram". Raw, rdm en seqpacket komen weinig voor. De combinatie IP adres + poortnummer ( bijv. 192.168.1.1.25) staat bekend als de socket. |
proto |
Het protocol uit /etc/services |
flags |
TCP diensten hebben typisch de nowait ingang. UDP diensten wachten meestal op meerdere acties. " This field setting tells inetd whether the network server program frees the socket after it has been started and therefore whether inetd can start another one on the next connection request, or whether inetd should wait and assume that any server daemon already running will handle the new connection request." |
user |
Onder wiens naam het programma loopt. Veel servers lopen onder root account. Dat is vaak nodig omdat ze programma's aanroepen of in gebieden schrijven (logbestanden in /var/log/) waar alleen root toegang heeft. Om veiligheidsredenen is een niet-root account als wwwrun echter te prefereren. |
server_path |
Pad en naam van het serveerprogramma |
server_args |
De parameters waaronder de server loopt |
Ik heb een apart hoofdstuk aan de internet daemon onder OS/2 gewijd. Voor nu is het van belang om te weten dat deze zogenaamde internet superserver naar de poorten van uw computer "luistert" en ervoor zorgt dat andere hosts via die poorten van uw internet diensten gebruik kunnen maken. Het is de vraag of u dat wilt. Het draaien van de internet superserver houdt beslist een veiligheidsrisico in. Des te meer naarmate u langer online bent en meer diensten draait. Want als u alleen naar uw provider belt, om van zijn internet diensten gebruik te maken, hebt u de internet daemon beslist niet nodig! Linux gebruikers moeten in ieder geval hun TCP wrappers (zie Permissies op het netwerk) zorgvuldig instellen.
De hostnaam dient het menselijk gemak, maar TCP/IP werkt met 32 bits getallen.
Individuele computers worden op het TCP/IP netwerk benaderd via een verbindingsinterface (ethernet, ppp). Het IP-adres slaat dan ook niet op de computer, maar op de verbindingsinterface. Vergelijk het met een hoekpand met op elke straat een brievenbus. Of een bedrijf met zowel een gewoon als een postbusadres.
Een computer met een netwerkkaart (eth0), een dial-up verbinding met het internet (ppp0) en een loopback interface (lo) heeft al drie IP nummers, waarvan het dynamisch toebedeelde IP nummer van de provider per sessie kan verschillen.
Het 32 bits Internet Protocol Adres wordt weergeven door vier decimale getallen gescheiden door een punt. Bijv. 192.168.1.2 is een host op een klasse C netwerk. Dit is de zogenaamde dotted-decimal notatie. De decimale getallen lopen van 0 tot en met 255 (2^8-1, want de telling begint bij 0). Het gaat om vier 8 bits velden, 4 bytes maken een 4.8=32 bits getal.
Het eerste deel van een IP-adres (192.168.1) geeft het netwerk (domein) aan. Dit wordt aangeven met het netwerkmasker: 255.255.255.0. In dit geval een 24 (3x8) bits netwerkmasker. De laatste 8 bits van het IP adres (.2 decimaal of 0000 0010 binair) slaat op de computer (host). Dus als 192.168.1.2 de host zolder.thuis is, is de .2 specifiek voor de host zolder. En wordt de 192.168.1 gedeeld door alle leden van het netwerk "thuis".
Een netwerk adres 192.168.1.0/24 heeft een broadcast adres van 192.168.1.255. De computers op dit LAN zijn zowel op hun eigen IP adres (bijv. 192.168.1.10) of via het broadcast adres (192.168.1.255) te bereiken.
Doorgaans is het wijs het broadcast adres zo klein mogelijk te nemen. Dus liever 192.168.1.255 dan 192.168.255.255. Maar als een router op adres 192.168.1.1 verbinding moet maken met twee netwerken 192.168.1.0 en 192.168.2.0, dan moet zijn omroepbereik (directed broadcast address) wat groter zijn. Anders zal een computer op het 192.168.2.0 netwerk hem niet zien.
Hostdeel: .1
Netwerk adres: 192.168.1.0
Broadcast adres: 192.168.255.255 (omvat 192.168.1.0 en 192.168.2.0)
Het instellen van de netwerkinterface verloopt via het programma ifconfig.
De ifconfig opdracht worden voor het gemak vastgelegd in een init.d script. De juiste parameters worden met de configuratietools van de distributies aangemaakt. Met het commando ifconfig (zonder parameters, als root) kunt u ook de status van uw netwerkverbindingen opvragen.
Ook in de naamgeving van computers op het netwerk/internet ziet u een dergelijke hiërarchie, maar nu in omgekeerde volgorde: Eerst de hostnaam, dan een punt en dan het domein (of een reeks door punten onderscheiden subdomeinen) zoals in: localhost.localdomain, host.subdomein.subdomein, visser.thuis, sjoerd-visser.demon.nl, metalab.unc.edu.
De combinatie host.domein of host.subhomein1.subdomein2.land is de op het internet gebruikte Fully Qualified Hostname (FQHN). In het Nederlands: volledig gekwalificeerde host- of netwerknaam. De URL http://metalab.unc.edu brengt u naar de thuishaven van het Linux Documentatie Project. De host metalab op het domein unc.edu en de de subdomeinen unc en edu.
Een deel van de netwerknummers zijn bedoeld voor gebruik in privé netwerken. De aan hen gerichte IP pakketjes raken niet verdwaald op het internet. Ze kunnen alleen binnen een privé netwerk worden opgevangen.
Netwerk |
Netwerkmasker |
IP bereik (publiek) |
IP bereik (Privé) |
Hosts per netwerk |
---|---|---|---|---|
Klasse A netwerk |
255.0.0.0 |
0.0.0.0 - 127.0.0.0 |
10.0.0.0 - 10.255.255.255 |
16777216 |
Klasse B netwerk |
255.255.0.0 |
128.0.0.0 - 191.0.0.0 |
172.16.0.0 - 172.31.255.255 |
65536 |
Klasse C Netwerk |
255.255.255.0 |
192.0.0.0 - 223.0.0.0 |
192.168.0.0 - 192.168.255.255 |
256 |
Klasse D Netwerk |
|
224.0.0.0 - 239.0.0.0 |
224.0.0.0 - 239.255.255.255 |
|
IP adressen buiten de privé bereiken moet u niet op uw thuisnetwerk gebruiken. U zou dan tijdens een dial-up verbinding met uw ISP groot gevaar lopen dat het verkeer op uw privé netwerk per abuis naar een host met gelijkluidend IP adres op het internet gaat. De echte internetadressen worden beheerd door het Network Information Centre (NIC). Voor deze op het internet geldige IP adressen moet worden betaald. U aan de provider en de internet provider aan het NIC.
Zo staat de hostnaam www.sjoerd-visser.demon.nl voor 195.173.154.89 - zoals op te vragen met het commando host. Het "host" commando (OS/2, linux) maakt gebruik van een DNS server. Man host zegt "host - look up host names using domain server". Het is een goede manier om de host name resolution (DNS server) te testen.
Host levert het IP adres van server die deze tekst levert. Maar dat deze tekst ook daadwerkelijk op de Demon server met IP nummer 193.238.154.89 staat kunt u niet weten, omdat achter een host op het internet een heel netwerk schuil kan gaan.
Uw publieke IP adres |
Uw ISP |
Mijn ISP |
Mijn publieke IP ades |
Mijn privé LAN |
|
|
|
192.168.154.89 |
192.168.1.0 |
Zo maak ik gebruik van IP masquerading, waarbij mijn publieke IP adres gekoppeld is aan de met het internet verbonden firewall en router, die de datagrammen weer aan private IP adressen op het lokale netwerk doorgeeft. Maar voor de buitenwereld komen alle verzoeken van de router machine, die meestal ook een netwerkadresvertalende firewall is (zie : Lastige klanten. Het thuisnetwerk en het internet).
Het voorgaande was nogal technisch, maar het is een troost voor u dat routers het werk voor u doen. Het begrip router kwamen we al tegen. Het is tijd om er wat meer aandacht aan te besteden.
Wat is een router? Een router is een (mini)computer die twee "vreemde" netwerken met elkaar verbindt. Netwerken worden gekarakteriseerd door hun IP adres en netmasker: bijv. 192.168.1.0/255.255.255.0 en 10.0.0.0/255.0.0.0 De "broadcast" omroepadressen van deze netwerken zijn resp. 192.68.1.255 en 10.255.255.255.
Het netwerk 192.168.1.0 met netmasker 255.255.255.0 wordt een 24 bits (192.168.1.0/24) netwerk genoemd. Verandert u het netwerkmasker in 255.255.0.0, dan wordt het een 16 bits netwerk 192.168.1.0/16. Het netwerk waar localhost 127.0.0.1 van uitmaakt is typisch een 8 bits netwerk 127.0.0.1/8. Het netmasker is dan 255.0.0.0. Een 32 bits masker specificeert een host (192.168.1.2/32 = 192.168.1.2/255.255.255.255).
Netwerken zijn op vele manieren in te delen. Maar een praktische onderscheid voor IP gaat tussen een klassiek peer-to-peer netwerk en routerbaar netwerk.
De eerste netwerken waren peer-to-peer netwerken. In zo'n evenknienetwerk zijn alle computers voor het internet protocol gelijk. Een tokenring netwerk kan een evenknienetwerk zijn, evenals een via een centrale bridge verbonden stervormige ethernet werkgroep. En ook een de een parallelle kabel verbonden computers vormen een peer-to-peer netwerk. Bepalend is steeds of het netwerk geen speciale host bevat die met een ander netwerk(adres) verbonden is. Peers behoren tot dezelfde internet werkgroep. Hun adressen bevinden zich in hetzelfde netwerkbereik.
Binnen een IP netwerk is de router de baas.
Het Domain Name System (DNS) koppelt een IP adres aan een hostnaam en omgekeerd. Voor dit oplossen van namen proces (domain name resolution) bestaan strenge regels (RFC 1035).
Als u het internet op gaat is het IP adres van de namenserveerder (DNS server) van uw provider het belangrijkste IP adres dat u moet weten. Hier kunt u niet zonder. Deze staat weer in verbinding met DNS servers over de hele wereld. DNS servers vragen de informatie bij elkaar op. Men spreekt van een distributed service. De door u opgevraagde hostnamen worden door de DNS van uw ISP automatisch in de voor TCP/IP noodzakelijk 32 bits IP adressen vertaald.
In het bestand /etc/resolv.conf staan de IP adressen van uw namenserveerders. Search thuis betekent dat er in mijn eigen domein "thuis" gezocht moet worden. Het adres 192.168.1.1 betreft een name caching server demon (ncsd) op een router. Sendmail neemt hier geen genoegen mee. Daarom staan ook de IP adressen van de DNS servers van mijn ISP's vermeld.
In het bestand /etc/host.conf wordt met order hosts bind aangegeven dat er bij het oplossen/uitzoeken (to resolve) van IP adressen eerst in het bestand /etc/hosts wordt gekeken (in de praktijk de IP nummers van uw eigen netwerk) en pas daarna gebruik gemaakt wordt van de name servers (DNS). Linux maakt gebruik van de Berkeley Internet Name Domain interface om de DNS te benaderen. Vandaar de BIND.
Multi on staat meerdere (multi) IP adressen per computer toe. Multi off maar één. Met multi off kunt u in de regel niet internetten, want uw provider geeft u ook een IP adres. Voor ieder PC die met meerdere netwerken tegelijkertijd in verbinding staat (incl. het internet) geldt multi on.
Het bestand /etc/networks bevat de netwerksystemen.
Computers binnen een domein (lokaal netwerk) moeten elkaar blindelings vinden. Hoe stel je dat nu in?
Er zijn meerdere methoden. Ik noem er slechts drie. En ga voor mijn doel (een netwerk aan huis) slechts op het eerste in.
Het /etc/hosts bestand vervangt de DNS in een klein netwerk
Dynamic Host Configuration Protocol (DHCP)
Network Information Centre (NIS)
Op een klein netwerk (computers "visser" en "zolder" in het domein "thuis") volstaan ingangen in de bestanden /etc/resolv.conf en vooral /etc/hosts. De laatste kunt u met de hand invullen.
Localhost moet er altijd in staan. Op Redhat gebaseerde distributies bevatten vaak een extra ingang:
Dit t.b.v. sendmail die altijd een FQHN (met domein) wil zien. Sendmail heeft moeite met een kale localhost. Het hosts bestand is bij mij zo ingesteld dat niet lokale post tijdens een dial-up verbinding naar de zogenaamde smarthost gaat, dat is mijn geval de mail server van de ISP. Die IP adressen staan er t.b.v. sendmail dus in.
Op Windows systemen kunt u \Windows\lmhosts bestand aanmaken. De LM staat voor Lan Manager (NetBeui, NetBIOS via TCP/IP, SMB), maar het werkt als TCP/IP (dus ook met samba).
Bij Windows 2000 en XP moet u zoeken: Winnt\system32\drivers\etc\. Als het goed is vindt u hier een LmHost.Sam(ple).
Voor een groot netwerk wordt het bijhouden van de computernamen in /etc/hosts op alle computers ondoenlijk. Dan wordt er gebruik gemaakt van een server (named daemon) met een centrale database (SUN's Network Information System, NIS) of van DHCP
De TCP/IP netwerk standaard biedt de mogelijkheid om IP-adressen, gateways, DNS adressen e.d. dynamisch toe te bedelen. Wat er voor nodig is is een een DHCP server. De computers die ervan gebruik maken zijn clients van de DHCP server. Zodra ze op het netwerk inloggen, krijgen ze de benodigde informatie toebedeeld. Er is een goede kans dat uw computer op het kantoor hier ook gebruik van maakt.
De Windows en OS/2 client hebben zelf geen DHCP servers. Maar een Linux systeem kan als DHCP server (of client) dienen.
Een DHCP server is noodzakelijk bij het beheren van een groot aantal IP adressen en komt van pas als u systeem niet meer zo statisch is (laptops die op het netwerk in en uit loggen, wisselende gebruikers, wisselende DNS servers). Beheer je die vitale gegevens op een groter netwerk niet centraal, dan wordt het onbegonnen werk.
Internet providers die minder IP adressen huren dan ze gebruikers hebben, maken gebruik van hetzelfde principe (zie kader). Ze verdelen hun pool van op het internet geldige IP adressen "on demand" onder de gebruikers die inloggen (niet allemaal tegelijk a.u.b.). Zo'n dynamisch toegewezen IP nummer zal per sessie wisselen.
Voor Linux zie: man dhcpd, de artikelen Building DHCP automatically en DHCP, IP nummers zelf uitgeven). Voor de OS/2 DHCP client configuratie zie: view dhcpclnt.inf dipintr.inf
In /etc/hosts.allow en /etc/hosts.deny kunt u aangeven welke computers via uw internet daemon (inetd) uw diensten mogen benaderen. Dit wordt geregeld door de TCP wrappers van Wietse Venema. Zie man hosts_access (5).
|
|
|
|
|
|
|
Na het veranderen van deze bestanden draait u het script dat de internet superserver herstart:
Vergeet nooit localhost (127.0.0.1) aan /etc/hosts.allow toe te voegen. Ik had recent 127.0.0.0 (i.p.v. 127.0.0.) ingevoerd en kwam er pas laat achter dat dat de reden was al mijn binnenkomende post naar de eeuwige bitvelden werd gezonden. Het logbestand var/log/mail gaf de clou.
Bedenk dat veel netwerkdiensten (UDP als NFS, samba, proxies) geen gebruik maken van de internet daemon. Proxies en samba moet u dus altijd via de packet filters van een firewall en hun eigen access control lijsten (ACL's) beschermen.
Routing is de manier waarop IP datagrammen van netwerk naar netwerk worden gestuurd. Het hele internet bestaat uit aan elkaar gekoppelde autonome netwerken. Computers binnen een TCP/IP netwerk kunnen elkaar via de unieke IP adressen van hun netwerkaart vinden. Datagrammen die bestemd zijn voor IP adressen die lokaal niet thuis te brengen zijn (waar geen netwerkkaart voor is), worden naar een volgend netwerk doorgeschoven. De computer (of een hardware equivalent) die voor deze taak met andere netwerken in verbinding staat is de router. Het IP adres van interface op het lokale netwerk van de router staat daar bekend als de default gateway. De router moet het pakket vervolgens weer doorsturen naar de meest passende host op het tweede (of derde) netwerk waarmee hij in verbinding staat en als hij die niet vindt naar zijn eigen default gateway op dat netwerk. Hier herhaalt het proces zich weer. En zo worden de datagrammen van netwerk naar netwerk via routers naar hun uiteindelijke bestemming verstuurd.
Routing is een kerneltaak. De routing van OS/2 en Windows wordt door een groep stuurbestanden (TCP/IP stack) uitgevoerd. Onder Linux zijn de stuurbestanden meestal in de kernel gecompileerd.
De routing tabel (netstat -r) van mijn computer visser.thuis geeft meerdere ingangen te zien. Een voor de ppp link met het internet, een voor het lokale netwerk en een voor de loopback interface.
Onder SuSE wordt de statische routing in /etc/route.conf ingesteld.
De G staat hier voor gateway. De gateway computer van mijn netwerk (router) is via het Point-to-Point Protocol (ppp0) via een seriële lijn met demon (mijn ISP) verbonden. Het adres IP 0.0.0.0 netwerkmasker 255.255.255.255 is de algemene term voor het IP adres van deze computer.
Andere commando's zijn: cat /proc/net/route (hexidecimale informatie) en /sbin/route -n.
U ziet dat het netwerk (domein) "thuis" IP adres 192.168.1.0 heeft. Route geeft 195.173.244.122 als gateway (De G van UG) aan.
IP pakketjes (datagrammen) op het netwerk worden onder de in /etc/hosts vermelde computers verdeeld. Een bericht gaat hetzij naar alle op de switch of hub aangesloten computers via het LAN broadcast adres (bijv. 192.168.1.0/255.255.255.0) of via een switch meteen naar een bepaalde computer (bijv. 192.168.1.1/255.255255.255).
Via een minder geavanceerde hub komt een bericht van bijv. 192.168.1.5 voor 192.168.1.1/255.255255.255 er ook wel, maar het wordt wel door alle op de hub aangesloten computers via het broadcast adres 192.168.1.0/255.255.255.0 van 192.168.1.0/24 netwerk uitgezonden en opgevangen: om vervolgens als niet ter zake doend voor het eigen IP adres (bijv. 192.168.1.2) te moeten te worden te genegeerd.
Een hardwarematig meer gecompliceerde ethernetswitch (op de meeste routers standaard) doet dat beter. Een switch zorgt ervoor dat het bericht van 192.168.1.5 aan 192.168.1.1 alleen naar 192.168.1.1 gaat. Dan kan 192.168.1.2 de niet voor hem bestemde berichten niet meer afluisteren in promiscuous mode. Laat staan dat deze netwerkaart erdoor wordt gestoord in zijn eigen activiteiten.
Pakketjes die op het lokale netwerk niet thuis te brengen zijn, kunnen worden doorverwezen naar een default route (gateway). De betreffende computer op het netwerk vervult de rol van een router, d.w.z. een computer die datagrammen naar andere netwerken kan doorsluizen. De datagrammen kunnen via een tweede ethernet (eth1)of een ISDN (ippp0) verbinding naar andere netwerken (LAN,WAN) gaan, maar ook via een tijdelijke dial-up verbinding (ppp0) naar het internet.
Stel u wilt de Linux computer "visser" met IP adres 192.168.1.10 als gateway gebruiken.
De betreffende gateway computer kan dan weer in verbinding staan met de servers van het internet:
Een voorbeeld van een routing onder OS/2 tijdens een internet verbinding met ppp0. De Injoy dialer zorgt zelf voor de "route add default ppp0" opdracht
De gateway voor het lokale net is nu een IP adres van Demon, mijn internet provider (194.159.73.222). De router voor het lokale net (de PC die belt) is 194.159.73.121 (mijn vaste IP adres bij Demon, de WAN poort). Deze inbellende computer heeft als lokale LAN Poort en dus gateway het IP adres 192.168.1.10. Maar mijn Linux server 192.168.1.20 ("zolder") met als gateway 192.168.1.10 ("visser") maakt ook vrolijk gebruik van de ppp verbinding (die haalde de nieuwsgroepen voor leafnode op via zijn default route 192.168.1.10 ).
Internet adres via PPP |
Internet router van bestemming |
Internet router(s) |
Internet router van ISP |
Lan router (modem) |
LAN |
---|---|---|---|---|---|
0.0.0.0/255.255.255.255 |
? |
? |
|
|
|
|
|
194.?.?.? |
194.159.xxx.xxx |
|
|
|
|
|
194.159.73.222 |
194.159.73.121 (WAN poort) |
|
|
|
|
|
192.168.1.10 (LAN poort "visser") |
192.168.1.20 (LAN client "zolder") |
Waar zit ik te werken? Op een groot UNIX netwerk is dat geen vreemde vraag. U kunt immers ook op een ander computer ingelogd zijn. De variabele $HOSTNAME geeft de naam van de actieve computer:
Zoals u ziet is de bash prompt ook al heel informatief: gebruiker sjoerd zit op computer visser in zijn homedirectory (~). Op een geconfigureerd netwerk is hij ook terug te vinden in /etc/HOSTNAME.
In het volgende voorbeeld geeft Mandrake een duidelijke, maar weinig originele Fully Qualified Hostname. Het systeem was net geïnstalleerd.
De opdracht uname -a geeft niet alleen de hostnaam, maar ook informatie over de computer en de kernel (unknown slaat op de onbekende kernel compiler)
Andere variabelen: HOSTALIASES, LOCALDOMAIN
Linux Networking-HOWTO (Previously the Net-3 Howto)
Deze tekst mag niet worden gewijzigd, vermenigvuldigd of voor commerciële doeleinden gebruikt worden zonder toestemming van de auteur. © Sjoerd Visser (2000).