Computersystemen/Netwerkdiagnose: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Mattias.Campe (overleg | bijdragen)
Geen bewerkingssamenvatting
Mattias.Campe (overleg | bijdragen)
Regel 2:
 
== Netwerkstappen ==
Stel dat je een host opstart, om http://wikibooks.org te bezoeken. Om de fout te vinden is het interessant om te kijken welke netwerkstappen met grote kans aan bod komen? Hoe worden de netwerkprotocollen in de praktijk gebruikt? Welke weg doorlopen de pakketjes?
Mocht het toch nog niet lukken nadat je je er van overtuigd hebt dat je netwerk 100% geldig is, dan zijn hier een aantal dingen die je hopelijk kunnen helpen. Kijk of je netwerkapparatuur (hub, switch, ...) aangeschakeld is en of dit apparaat geen foutmelding weergeeft. Bekijk de handleiding van het apparaat voor meer uitleg over de statuslichtjes.
 
=== Fysisch ===
Als fysisch iets niet in orde is, dan kan het zeker al niet werken. Kijk of je netwerkapparatuur (router, switch,...) aangeschakeld is en of een apparaat geen foutmelding weergeeft. Bekijk de handleiding van het apparaat voor meer uitleg over de statuslichtjes.
 
Als je geen "link" krijgt tussen de NIC en de netwerkapparatuur, is meestal de fout te wijten aan een slechte kabel of soms de netwerkkaart. Probeer dan eens een aantal netwerkkabels te verwisselen. Als het probleem zich nu verplaatst heeft, dan weet je of het de kabel of de netwerkkaart was.
 
Als je kabel werkt, maar af en toe zakt je overdrachtssnelheid in elkaar, dan is misschien je kabel (bijna) defect. Een andere oorzaak van dit probleem kan elektromagnetische straling zijn van een niet ontstoord apparaat. Zo zou je wellicht een elektrische potloodslijper niet snel als de schuldige aanwijzen voor een slechte netwerkverbinding.
 
=== Routering ===
[[File:IP-Routing.webm|thumb|Deze video legt uit hoe routers pakketten doorsturen tot aan de ontvanger]]
Voordat we de stappen bekijken is het begrijpen van routering belangrijk. De kans bestaat dat je tezelfdertijd mail leest, chat, iets aan het downloaden bent en dat in de achtergrond je besturingssysteem met updates bezig is en de klok synchroniseert met een tijdserver. Elk van die zaken genereert pakketten die over het Internet worden gestuurd en vaak van en naar een verschillende locatie moeten.
 
Routering zal er in dat geval voor zorgen dat elk pakketje op de juiste bestemming terechtkomt en dat is de verantwoordelijkheid van alle tussenliggende routers op het pad naar de eindbestemming. Op basis van een IP-adres (of een groep van IP-adressen) wordt een beslissing genomen via welke interface (een router heeft er minstens 2) een pakketje wordt weggestuurd en wat zijn bestemming is (de ''gateway''). Routering heb je niet enkel bij routers, maar ook een host met slechts één NIC heeft een routeringstabel. Een voorbeeld:
 
Netwerkadres Netmask Gateway Interface Metric
1 0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.100 25
2 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
3 192.168.1.0 255.255.255.0 192.168.1.100 192.168.1.100 25
4 192.168.1.100 255.255.255.255 127.0.0.1 127.0.0.1 25
5 192.168.1.255 255.255.255.255 192.168.1.100 192.168.1.100 25
6 224.0.0.0 240.0.0.0 192.168.1.100 192.168.1.100 25
7 255.255.255.255 255.255.255.255 192.168.1.100 3 1
8 255.255.255.255 255.255.255.255 192.168.1.100 192.168.1.100 1
 
In de eerste rij van onderstaande tabel staan enkele IP-adressen van bestemmingen (nl. 192.168.1.103, 192.168.1.100, 192.168.1.255, 127.0.0.1 en 10.1.2.3). Welke lijnen uit de routeringstabel ''matchen'' nu? Daarvoor moet je kijken naar een combinatie van ''netwerkadres'' en ''netmask''. Het aantal 1'tjes (of 255) van het netmask zal aangeven hoeveel van het ontvangers-IP-adres moet overeenkomen. Enkele opmerkingen:
* Uit lijn 1 van de routeringstabel blijkt dat die altijd matcht, want er hoeft niets overeen te komen (netmask = 0.0.0.0). Vandaar staat in onderstaande tabel altijd een sterretje bij lijn 1. De overeenkomstige gateway (hier 192.168.1.1) wordt dan de standaard-gateway of default gateway genoemd.
* Het aantal +'jes geeft aan hoeveel van het ontvangers-IP-adres overeenkomt.
* Bij lijn 6 gaat het om multicast (224.0.0.0), maar hiervoor zouden we op bitniveau moeten kijken (240 i.p.v. 255), wat buiten het kader van deze cursus valt (vandaar de /).
* De langste prefix bepaalt welk lijntje er gekozen wordt. Matcht er helemaal niets, dan wordt de default gateway genomen. Voor 192.168.1.255 (een broadcast naar het eigen netwerk) zal dit pakket verstuurd worden via interface 192.168.1.100. Voor 127.0.0.1 zal dit pakket verstuurd worden via interface 127.0.0.1, logisch want het gaat om de localhost en dus het eigen toestel.
* Stel dat er meerdere uiteindelijke keuzes zouden zijn (bepaald door de langste prefix), dan wordt diegene met de kleinste metric gekozen.
 
{| class="wikitable"
|-
! !! <small>Netwerkadres</small> !! <small>Netmask</small> !! <small>192.168.1.103</small> !! <small>192.168.1.100</small> !! <small>192.168.1.255</small> !! <small>127.0.0.1</small> !! <small>10.1.2.3</small>
|-
| <small>1</small>||<small>0.0.0.0</small>||<small>0.0.0.0</small>|| *|| *|| *|| *|| '''*'''
|-
| <small>2</small>||<small>127.0.0.0</small> || <small>255.0.0.0</small> || || || || '''+''' ||
|-
| <small>3</small>||<small>192.168.1.0</small> ||<small>255.255.255.0</small> || '''+++''' || +++ || +++ || ||
|-
| <small>4</small>||<small>192.168.1.100</small> ||<small>255.255.255.255</small> || || '''++++''' || || ||
|-
| <small>5</small>||<small>192.168.1.255</small> ||<small>255.255.255.255</small> || || || '''++++''' || ||
|-
| <small>6</small>||<small>224.0.0.0</small> || <small>240.0.0.0 </small>|| / || / || / || / || /
|-
| <small>7</small>||<small>255.255.255.255</small> || <small>255.255.255.255</small> || || || || ||
|-
| <small>8</small>||<small>255.255.255.255</small> ||<small>255.255.255.255</small> || || || || ||
|}
 
Het begrip 'routering' klinkt heel eenvoudig, maar is in de praktijk behoorlijk complex. Zo kan het zijn dat er een quality of service (QoS) is vereist voor VoIP-pakketten, die voorrang moeten krijgen op andere pakketten. Of kan het zijn dat bij een gekozen router er plots letterlijk een kink in de kabel komt en dat een andere route automatisch moet worden gezocht.
 
=== Netwerkschema ===
Om de netwerkstappen goed te begrijpen is een goed netwerkschema heel belangrijk.<ref>Je kan zoeken naar [https://duckduckgo.com/?q=network+diagram&iax=1&ia=images voorbeelden van netwerkdiagrammen] om inspiratie op te doen.</ref> Laten we voor ons voorbeeld uitgaan van onderstaande situatie.
 
[[File:Network diagram (example).svg||677px]]
 
Stel nu dat het host A.1 is die http://wikibooks.org bezoekt. Er moet dus een netwerkpakketje verstuurd worden, met daarin de vraag om de homepage van de website van Wikibooks te sturen. De poort aan de serverkant zal al zeker poort 80 zijn. Maar in dat pakketje moet ook het volgende gestopt worden: verzender-MAC-adres, ontvanger-MAC-adres, verzender-IP-adres en ontvanger-IP-adres. Welke netwerkstappen komen met grote kans aan bod, zodat host A.1 dit te weten komt? Dit is niet zo gemakkelijk als het lijkt, maar eens je het snapt, is het de logica zelve... In de uitleg wordt verwezen naar de interface 1 tot 9, kortweg ''if1'' tot ''if9''.
 
=== Stap-voor-stap ===
Als de pc eerst nog moet opstarten dan heeft hij al zijn MAC-adres (want gekoppeld aan de NIC), maar hij heeft ook nood aan een IP-adres. Er zal dan eerst een '''DHCP'''-broadcast nodig zijn, zodat de host automatisch een (dynamisch) IP kan verkrijgen.
 
==== HTTP-aanvraag ====
De eerste stap is het opstellen van de HTTP-aanvraag. Zijn eigen MAC-adres en eigen IP-adres heeft hij al. Maar in zijn te verzenden pakket moet hij in de headers ook nog een MAC-adres en een IP-adres voor de ontvanger bemachtigen!
 
# '''DNS''', om te achterhalen welk IP-adres hoort bij de domeinnaam wikibooks.org
# '''Routeringstabel''' bekijken (van zichzelf, nl. A.1 en niet van een router!), om te weten waar de HTTP-aanvraag heen moet. Dit zal buiten het netwerk liggen en dus is het IP-adres van de default gateway (if3) belangrijk.
# '''ARP''', om het MAC-adres te achterhalen van de default gateway (if3). Dus niet het MAC-adres van wikibooks.org!
## Het bekijken van de ARP-cache: misschien zit de koppeling van MAC-IP van de default gateway er al in.
## Als het niet in de cache zit: een ARP broadcast-aanvraag doen.
# Het sturen van de '''HTTP'''-aanvraag
## MAC-ontvanger: van de default gateway (!!!) = if3
## IP-ontvanger: van wikibooks.org = if9
## MAC-verzender: van de host = if1
## IP-verzender: van de host = if1
 
Zelfs voor stap 1 van dit heel eenvoudig voorbeeld komen al heel wat substappen aan bod!
 
==== Switch netwerk A ====
Bij stap 1 is enkel nog maar de HTTP-aanvraag net verstuurd, maar er zijn nog netwerkstappen nodig om het tot een goed einde te brengen. Als we ons pakketje verder volgen op het netwerkschema, dan komen we de switch uit netwerk A tegen. Deze zal op basis van enkel het MAC-adres van de ontvanger het pakketje verder op weg zetten naar de router (default gateway). Dit is dus de RAB, links.
 
==== Router RAB ====
In deze router RAB:
# De router moet opzoeken in zijn routeringstabel wat het IP-adres van de volgende hop is. Volgens het schema zal dit 192.168.1.1 zijn, de default gateway van netwerk B. Dit is dus de RBI, links (if7).
# Het MAC-adres van 192.168.1.1 = if7 achterhalen (via de cache of via een ARP-aanvraag).
# Het doorsturen van het pakket, maar enkele gegevens moeten gewijzigd worden:
## MAC-ontvanger: MAC van 192.168.1.1 = if7 (dit is dus gewijzigd, maar nog steeds niet van wikibooks.org!)
## IP-ontvanger: van wikibooks.org = if9 (dit is dus ongewijzigd)
## MAC-verzender: MAC van 192.168.1.254 = if4 (dit is dus gewijzigd, want het gaat niet meer om A.1, wel om RAB, rechts)
## IP-verzender: van de host A.1 = if1 (dit is dus ongewijzigd)
 
==== Switch netwerk B ====
Ook deze switch zal op basis van enkel het MAC-adres van de ontvanger het pakketje verder op weg zetten naar router RBI (default gateway).
 
==== Router RBI ====
In de router RBI:
# De router moet opzoeken in zijn routeringstabel wat het IP-adres van de volgende hop is. Uit het schema kunnen we dit niet achterhalen.
# Het MAC-adres van deze hop achterhalen (via de cache of via een ARP-aanvraag).
# Het doorsturen van het pakket, maar enkele gegevens moeten gewijzigd worden:
## MAC-ontvanger: MAC van de volgende hop (en is dus gewijzigd)
## IP-ontvanger: van wikibooks.org = if9 (dit is dus nog steeds ongewijzigd)
## MAC-verzender: MAC van 91.179.77.105 = if8 (en is dus gewijzigd)
## IP-verzender: 91.179.77.105 = if8, wat dus is gewijzigd, omdat het pakket verder verstuurd wordt op het publieke internet, terwijl het IP-adres van host A.1 een privaat IP-adres is! Er moet dus NAT toegepast worden.
 
==== Samengevat ====
[[File:DHS_Network_Topology.jpg|thumb|Een groot netwerkschema, handig om bij te hebben, voor als er iets foutloopt.]]
Als we het pakketje volgen doorheen de netwerken A, B en het internet, dan kunnen we onderstaande samenvatting maken. De cijfers verwijzen naar de genummerde interfaces van de tekening. Het vraagteken is er omdat we vanuit de tekening niet kunnen weten wat het MAC-adres van de volgende hop is. De 8 bij het IP van de verzender staat in het vet, omdat je niet mag vergeten dat hier NAT wordt toegepast.
 
{| class="wikitable"
|-
! !! A!! B!! I !! ...
|-
| MAC ontvanger|| 3 || 7 || ? ||...
|-
| MAC verzender|| 1 || 4|| 8 ||...
|-
| IP ontvanger|| 9|| 9|| 9 ||...
|-
| IP verzender|| 1|| 1|| '''8''' ||...
|}
 
Zo gaat deze ketting verder (NAT zal in principe niet meer nodig zijn), totdat wikibooks.org is bereikt. Daarna is er een omgekeerde beweging om de webpagina terug te kunnen sturen. Per netwerk zullen steeds de MAC-adressen van verzender en ontvanger gewijzigd worden. Het al of niet wijzigen van het IP-adres hangt oa. af van het feit of al of niet NAT'ing nodig is.
 
Je moet toch verrast zijn door een systeem dat internetarchitecten en -ingenieurs hebben kunnen opzetten, waarbij we als eindgebruiker zo weinig merken van wat er achter de schermen gebeurt. Tenzij er iets foutloopt: dan is het IT'er handig om een goed begrip te hebben van netwerken én om een goed netwerkschema van je netwerk te hebben!
 
== Tools ==
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.