Computersystemen/Netwerkdiagnose
Stel dat het ergens foutloopt op jouw netwerk. Hoe pak je het aan om de oorzaak te vinden, zodat je een oplossing kan zoeken?
1 Netwerkstappen
[bewerken]Stel dat je een host opstart, om https://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?
1.1 Fysisch
[bewerken]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 de fout meestal 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. Op het internet kan je nog veel uitgebreidere handleidingen vinden m.b.t. bekabeling.[1]
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.
1.2 Routering
[bewerken]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 vanaf welke interface (een router heeft er minstens 2) een pakketje wordt weggestuurd en via welke weg (de gateway) hij het pakketje verder op weg kan zetten. Routering heb je niet enkel bij routers, maar ook een host met slechts één NIC heeft een routeringstabel. Een voorbeeld:
Network Destination Netmask Gateway Interface Metric 1 0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.100 55 2 127.0.0.0 255.0.0.0 On-link 127.0.0.1 331 3 127.0.0.1 255.255.255.255 On-link 127.0.0.1 331 4 127.255.255.255 255.255.255.255 On-link 127.0.0.1 331 5 192.168.1.0 255.255.255.0 On-link 192.168.1.100 311 6 192.168.1.100 255.255.255.255 On-link 192.168.1.100 311 7 192.168.1.255 255.255.255.255 On-link 192.168.1.100 311 8 224.0.0.0 240.0.0.0 On-link 127.0.0.1 331 9 224.0.0.0 240.0.0.0 On-link 192.168.1.100 311 10 255.255.255.255 255.255.255.255 On-link 127.0.0.1 331 11 255.255.255.255 255.255.255.255 On-link 192.168.1.100 311
Deze routeringstabel wordt gebruikt om te weten hoe een pakketje naar een bestemming kan op weg gezet worden. 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. Onderaan de tabel staat ook nog een extra woordje uitleg.
Netwerkadres | Netmask | /? | 192.168.1.103 | 192.168.1.100 | 192.168.1.255 | 127.0.0.1 | 10.1.2.3 | |
---|---|---|---|---|---|---|---|---|
1 | 0.0.0.0 | 0.0.0.0 | 0 | * | * | * | * | * |
2 | 127.0.0.0 | 255.0.0.0 | 8 | = (8) | ||||
3 | 127.0.0.1 | 255.255.255.255 | 32 | =.=.=.= (32) | ||||
4 | 127.255.255.255 | 255.255.255.255 | 32 | |||||
5 | 192.168.1.0 | 255.255.255.0 | 24 | =.=.= (24) | =.=.= (24) | =.=.= (24) | ||
6 | 192.168.1.100 | 255.255.255.255 | 32 | =.=.=.= (32) | ||||
7 | 192.168.1.255 | 255.255.255.255 | 32 | =.=.=.= (32) | ||||
10 | 255.255.255.255 | 255.255.255.255 | 32 | |||||
11 | 255.255.255.255 | 255.255.255.255 | 32 | |||||
Gekozen lijn | 5 | 6 | 7 | 3 | 1 | |||
Gateway (via) | On-link | On-link | On-link | On-link | 192.168.1.1 | |||
Interface (vanaf) | 192.168.1.100 | 192.168.1.100 | 192.168.1.100 | 127.0.0.1 | 192.168.1.100 |
Enkele opmerkingen:
- De afbeelding is opgebouwd op basis van de routeringstabel.
- De getoonde routeringstabel is deze van een host met IP-adres 192.168.1.100, want 'Network Destination' en 'Interface' zijn identiek.
- Je moet nagaan wat matcht a.d.h.v. netwerkadres en netmask:
- 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 er bij die lijn altijd een sterretje
*
. 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. Tussen haakjes staan het aantal bits die daarmee overeenstemmen (zie ook de kolom
/?
). - Bij lijnen 8 en 9 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 zijn lijnen 8 en 9 weggelaten in de tabel).
- 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 er bij die lijn altijd een sterretje
- Vervolgens wordt de lijn gekozen, dat de gateway (via) en de interface (vanaf) bepaalt:
- De langste prefix bepaalt welk lijntje er gekozen wordt.
- Voor 192.168.1.255 (een broadcast naar het eigen netwerk) zal dit pakket verstuurd worden vanaf interface 192.168.1.100. Voor 127.0.0.1 zal dit pakket verstuurd worden vanaf interface 127.0.0.1, logisch want het gaat om de localhost en dus het eigen toestel. On-link kan je opvatten als "via de linklaag", waarbij er dus geen router aan te pas komt.
- Als de bestemming buiten het eigen netwerk ligt (in dit geval 10.1.2.3), dan is er een 'gateway' nodig om buiten het eigen netwerk te geraken. Het lukt niet meer 'on link': op de internetlaag is dus een router nodig. In de tabel merken we dat enkel rij 1 matcht. De gateway 192.168.1.1 wordt de 'default gateway' genoemd.
- Stel dat er meerdere uiteindelijke keuzes zouden zijn (bepaald door de langste prefix), dan wordt diegene met de kleinste metric gekozen.
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.
1.3 Netwerkschema
[bewerken]Om de netwerkstappen goed te begrijpen is een goed netwerkschema heel belangrijk.[2] Neem bijvoorbeeld onderstaande situatie van een bedrijf met twee gescheiden netwerken, verbonden met het Internet. Dankzij het helikopterzicht dat zo'n netwerkschema biedt, kan het gemakkelijker zijn om bij een fout de oorzaak te ontdekken of om te beslissen hoe het netwerk uitgebreid kan worden.
1.4 Stap-voor-stap
[bewerken]Stel dat host A.1 https://wikibooks.org bezoekt. Welke netwerkstappen komen met grote kans aan bod? Dit is niet zo gemakkelijk als het lijkt, maar eens je het snapt, is het de logica zelve... Als je stap-voor-stap kijkt, dan komt het bijna altijd neer op het kunnen invullen van onderstaande vraagtekens. Pas dan kan een pakket via het netwerk verstuurd worden.
Linklaag | Internetlaag | Transportlaag | |||
---|---|---|---|---|---|
MAC ontvanger | MAC verzender | IP ontvanger | IP verzender | poort ontvanger | poort verzender |
? | ? | ? | ? | ? | ? |
In de uitleg wordt verwezen naar de interface 1 tot 9, kortweg if1 tot if9.
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. Deze stap bekijken we niet in detail: we gaan er dus vanuit dat host A.1 al een geldig IP-adres heeft.
HTTPS-aanvraag
[bewerken]De eerste stap is het opstellen van de HTTPS-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 HTTPS-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 HTTPS-aanvraag
- MAC-ontvanger: van de default gateway (!!!) = if3
- MAC-verzender: van de host = if1
- IP-ontvanger: van wikibooks.org = if9
- IP-verzender: van de host = if1
- Poort ontvanger: 443 (want HTTPS)
- Poort verzender: willekeurig gekozen
Zelfs voor stap 1 van dit heel eenvoudig voorbeeld komen al heel wat substappen aan bod!
Switch netwerk A
[bewerken]Bij stap 1 is enkel nog maar de HTTPS-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
[bewerken]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!)
- 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-ontvanger: van wikibooks.org = if9 (dit is dus ongewijzigd)
- IP-verzender: van de host A.1 = if1 (dit is dus ongewijzigd)
- Poort ontvanger: 443 (dit is dus ongewijzigd)
- Poort verzender: willekeurig gekozen (ongewijzigd)
Switch netwerk B
[bewerken]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
[bewerken]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)
- MAC-verzender: MAC van 91.179.77.105 = if8 (en is dus gewijzigd)
- IP-ontvanger: van wikibooks.org = if9 (dit is dus nog steeds ongewijzigd)
- 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.
- Poort ontvanger: 443 (dit is dus ongewijzigd)
- Poort verzender: willekeurig gekozen (kan omwille van NAT wel wijzigen)
Samengevat
[bewerken]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.
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 o.a. 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!
2 Tools
[bewerken]Hieronder kan je nog enkele tools uitproberen om de oorzaak van een netwerkprobleem vast te pinnen. Het is enkel bedoeld als inleiding op netwerkdiagnose en niet als diepgaande materie. Er wordt voorkeur gegeven aan programma's die vaak standaard aanwezig zijn op het besturingssysteem of die multiplatform zijn. De cli (via een terminal) is vaak handiger dan een gui, omdat dit doorheen de verschillende versies van besturingssystemen bijna ongewijzigd is. Soms moet je een lopend commando onderbreken. Onderstaande tabel zal dus zeker van pas komen.
Windows | Linux | |
---|---|---|
Terminal | Windows-vlag + r > cmd of powershell |
ctrl + alt + t
|
Help | commando /? |
man commando (man , van manual)
|
Onderbreken | ctrl + c |
ctrl + c
|
Netwerkinfo
[bewerken]Voor het achterhalen van het publiek IP:
- Surf naar ipecho.net.
nslookup myip.opendns.com resolver1.opendns.com
. Hiermee doe je vanaf jouw host een DNS-aanvraag (nslookup
) aan de DNS-serverresolver1.opendns.com
, waarbij je eigen publiek IP-adres als verzender IP-adres wordt meegestuurd. Bij de domeinnaammyip.opendns.com
zal deze DNS-server altijd jouw eigen publieke IP-adres als antwoord meegeven.curl ipecho.net/plain
. Met het cli-programma cURL kan je o.a. de inhoud van een webpagina opvragen, waarbij de/plain
op het einde van ipecho.net/plain toegevoegd is, zodat enkel een IP-adres wordt weergegeven en geen html-code. Zo kan je dit gebruiken in scripts. Dit commando werkt onder Windows enkel in PowerShell en niet in cmd.
Om andere belangrijke netwerkinstellingen te weten te komen kan je onderstaande commando's gebruiken. Gebruik tab completion waar mogelijk. Bij Linux is er een retro-manier (via net-tools), maar deze is eigenlijk deprecated. Het is aanbevolen om de next generation manier te gebruiken (via iproute2), die meer mogelijkheden biedt.[3]
Windows | Linux (retro) | Linux (ng) | |
---|---|---|---|
Privaat ip | ipconfig |
ifconfig |
ip a (ip address )
|
Subnetmask | ipconfig |
ifconfig |
ip a
|
Mac-adres | ipconfig /all |
ifconfig |
ip a of ip l (ip link )
|
DHCP-Server | ipconfig /all |
Zie onder deze tabel | |
DNS-Server | nslookup x.org
| ||
DNS-Servers | ipconfig /all |
grep nameserver /etc/resolv.conf
| |
Default Gateway | netstat -nr [4] |
ip r (ip route )
| |
ARP cache | arp -a |
arp -n |
ip n (ip neigh )
|
Windows | Linux (retro) | Linux (ng) |
Het cli-gewijs achterhalen van het IP-adres van de DHCP-server hangt in Linux af van de gebruikte distributie[5]:
dhclient -d -nw
, of als je weet dat de NIC eth0 is:dhclient -d -nw eth0
grep DHCPOFFER /var/log/messages
grep dhcp-server /var/lib/dhcp/dhclient.leases
.[6]
Stel dat je in de logs van jouw firewall een IP-adres vindt, waarvan je zoveel mogelijk informatie wenst te verzamelen, zoals locatie of de ISP waartoe dit IP-adres behoort. Hiervoor bestaan verschillende websites zoals iplocation.net of whatismyip.com. Belangrijk is echter ook om te beseffen dat d.m.v. een gehackte pc, Tor en/of VPN behoorlijk wat van die info onbetrouwbaar kan zijn. Zo zou je kunnen denken dat die hacker in Amsterdam zit, terwijl die eigenlijk in Johannesburg zit.
Ping
[bewerken]Met het ping-commando test je de bereikbaarheid van apparatuur. Het stuurt een ICMP ECHO_REQUEST pakket naar host of gateway in afwachting van een reactie met een ICMP ECHO_RESPONSE pakket. De reactietijd tussen het versturen en het ontvangen van de bevestiging wordt aangegeven als de round-trip time in milliseconden. Hierdoor weet je of een verbinding al of niet werkt, en krijg je een indicatie over de snelheid en de kwaliteit van de verbinding.
Ping kent implementatieverschillen:
- Windows verstuurt standaard 4 pakketjes, maar met
ping -t
(zieping /?
) kan je blijven sturen (totdat je onderbreekt metctrl + c
). - Linux werkt standaard zoals
ping -t
onder Windows. Metping -c 4
krijg je hetzelfde zoals het standaardgedrag onder Windows (zieman ping
).
Een onbereikbare host:
$ ping 192.168.0.25 PING 192.168.0.25 (192.168.0.25) 56(84) bytes of data. From 192.168.0.101 icmp_seq=1 Destination Host Unreachable From 192.168.0.101 icmp_seq=2 Destination Host Unreachable From 192.168.0.101 icmp_seq=3 Destination Host Unreachable ^C --- 192.168.0.25 ping statistics --- 4 packets transmitted, 0 received, +3 errors, 100% packet loss, time 3015ms pipe 3
Een slechte verbinding, waarbij er 27 requests zijn verstuurd, maar er slechts 23 responses zijn ontvangen (en dus een pakket verlies van (27-23)/27=14%):
$ ping 192.168.0.254 PING 192.168.0.254 (192.168.0.254) 56(84) bytes of data. 64 bytes from 192.168.0.254: icmp_req=2 ttl=64 time=1.46 ms 64 bytes from 192.168.0.254: icmp_req=3 ttl=64 time=1.30 ms 64 bytes from 192.168.0.254: icmp_req=4 ttl=64 time=1.27 ms 64 bytes from 192.168.0.254: icmp_req=5 ttl=64 time=1.27 ms 64 bytes from 192.168.0.254: icmp_req=6 ttl=64 time=1.27 ms 64 bytes from 192.168.0.254: icmp_req=7 ttl=64 time=1.28 ms 64 bytes from 192.168.0.254: icmp_req=8 ttl=64 time=1.28 ms 64 bytes from 192.168.0.254: icmp_req=10 ttl=64 time=1.28 ms 64 bytes from 192.168.0.254: icmp_req=11 ttl=64 time=1.28 ms 64 bytes from 192.168.0.254: icmp_req=13 ttl=64 time=1.29 ms 64 bytes from 192.168.0.254: icmp_req=14 ttl=64 time=1.26 ms 64 bytes from 192.168.0.254: icmp_req=15 ttl=64 time=1.27 ms 64 bytes from 192.168.0.254: icmp_req=16 ttl=64 time=1.27 ms 64 bytes from 192.168.0.254: icmp_req=17 ttl=64 time=1.27 ms 64 bytes from 192.168.0.254: icmp_req=18 ttl=64 time=1.27 ms 64 bytes from 192.168.0.254: icmp_req=19 ttl=64 time=1.26 ms 64 bytes from 192.168.0.254: icmp_req=20 ttl=64 time=1.28 ms 64 bytes from 192.168.0.254: icmp_req=21 ttl=64 time=1.28 ms 64 bytes from 192.168.0.254: icmp_req=22 ttl=64 time=1.27 ms 64 bytes from 192.168.0.254: icmp_req=24 ttl=64 time=1.43 ms 64 bytes from 192.168.0.254: icmp_req=25 ttl=64 time=1.26 ms 64 bytes from 192.168.0.254: icmp_req=26 ttl=64 time=1.27 ms 64 bytes from 192.168.0.254: icmp_req=27 ttl=64 time=1.27 ms ^C --- 192.168.0.254 ping statistics --- 27 packets transmitted, 23 received, 14% packet loss, time 26051ms rtt min/avg/max/mdev = 1.262/1.294/1.464/0.062 ms
Je kan ook pingen naar een domeinnaam, bv. ping nl.wikibooks.org
. Als er echter iets fout is met je DNS-instellingen, zal dit niet werken. De vertaling van de domeinnaam naar het IP-adres kan dan namelijk niet gebeuren, waardoor ook het pingen niet zal lukken.
$ ping www.ikbestaniet.be ping: unknown host www.ikbestaniet.be
De stappen die je zou kunnen ondernemen:
- Ping naar je loopback adres (127.0.0.1). Als het daar al foutloopt kan je in Windows een herstel van de TCP/IP stack proberen via
netsh
. Als dat niet werkt kan ook je driver of netwerkkaart zelf de oorzaak zijn. - Als dit niet het probleem is, ping dan naar je eigen IP adres. Indien dit niet werkt, dan is er waarschijnlijk iets mis met één of meerdere instellingen.
- Is dit ook niet het probleem, dan ping eens naar een andere computer op hetzelfde subnet. Werkt dit niet dan zou het de kabel kunnen zijn of de instellingen.
- Pingen naar een domeinnaam.
Blijf echter kritisch. Soms lijkt een ping te lukken, terwijl er toch problemen zijn:
$ ping www.google.be PING www.google.be (192.168.1.1) 56(84) bytes of data. 64 bytes from gateway.home (192.168.1.1): icmp_seq=1 ttl=64 time=0.586 ms 64 bytes from gateway.home (192.168.1.1): icmp_seq=2 ttl=64 time=0.588 ms 64 bytes from gateway.home (192.168.1.1): icmp_seq=3 ttl=64 time=0.589 ms 64 bytes from gateway.home (192.168.1.1): icmp_seq=4 ttl=64 time=0.586 ms 64 bytes from gateway.home (192.168.1.1): icmp_seq=5 ttl=64 time=0.596 ms 64 bytes from gateway.home (192.168.1.1): icmp_seq=6 ttl=64 time=0.567 ms 64 bytes from gateway.home (192.168.1.1): icmp_seq=7 ttl=64 time=0.571 ms ^C --- www.google.be ping statistics --- 7 packets transmitted, 7 received, 0% packet loss, time 6001ms rtt min/avg/max/mdev = 0.567/0.583/0.596/0.020 ms
Er is weliswaar 0% packet loss, maar:
- De gateway.home antwoordt i.p.v. google.be
- Het daaraan gekoppelde IP-adres (nl. 192.168.1.1) is duidelijk privaat i.p.v. publiek (bv. 194.78.0.173)
- De time ligt heel laag, typisch voor een LAN verbinding. Bij een WAN-verbinding ligt dit meestal een stuk boven 1 ms (bv. 22 ms).
nslookup
[bewerken]Als er iets foutloopt met de omzetting van domeinnamen naar IP-adressen, kan nslookup
van pas komen.
$ nslookup nl.wikibooks.org Server: 127.0.1.1 Address: 127.0.1.1#53 Non-authoritative answer: Name: nl.wikibooks.org Address: 91.198.174.192
Het antwoord komt hier van de eigen pc (127.0.1.1
), die voor deze DNS-aanvraag luistert op poort 53. Blijkbaar is de domeinnaam nl.wikibooks.org gekoppeld aan het IP-adres 91.198.174.192. Merk op dat de eigen pc onmogelijk alle koppelingen domeinnaam en IP-adres kan weten. "Achter de schermen" vraagt hij dit bijna altijd aan een andere DNS-server. Die het op zijn beurt mogelijks weer aan een andere vraagt. Zo ontstaat een ketting van DNS-aanvragen.
Als een domeinnaam niet te vinden is, krijg je een foutmelding:
$ nslookup www.ikbestaniet.be Server: 127.0.1.1 Address: 127.0.1.1#53 ** server can't find www.ikbestaniet.be: NXDOMAIN
I.p.v. de standaard ingestelde DNS-server te gebruiken, kan je er ook zelf één opgeven. Bv. deze van Google, waarbij het logisch is dat je hetzelfde antwoord als daarnet komt:
$ nslookup nl.wikibooks.org 8.8.8.8 Server: 8.8.8.8 Address: 8.8.8.8#53 Non-authoritative answer: Name: nl.wikibooks.org Address: 91.198.174.192
netsh
[bewerken]Met het cli-commando netsh
(van network shell) kan je in Windows lokale of remote configuratie doen van netwerkapparaten. Als het netwerk vreemd doet (je krijgt bv. onverwacht een link-local adres), dan kan het handig zijn om TCP/IP volledig te resetten met:
netsh int ip reset
Een overzicht van álle DHCP-servers in het netwerk:
netsh dhcp show server
Voor de draadloze interfaces kan je met onderstaande commando's ook veel te weten komen. Het eerste is om een html-rapport te genereren (mogelijks moet je de verborgen mappen aanzetten om het te kunnen bekijken). Je vindt er oa. een diagram met de recente Wi-Fi-sessies, algemene systeeminformatie, een lijst met (al of niet verborgen) netwerkadapters, bestaande wifi-profielen, een overzicht van succesvolle en mislukte Wi-Fi-verbingen. Met netsh wlan
kan je ook de profielen zien en wissen.
netsh wlan show wlanreport netsh wlan show profiles netsh wlan delete profile <profielnaam>
Wil je de ondersteunde WiFi-versies zien (bv. 802.11ax = Wi-Fi 6) en welke veiligheid er kan worden toegepast (bv. WPA3), dan kan je onderstaand commando uitvoeren. [7]
netsh wlan show drivers
Als je extra uitleg wilt zet je er gewoon help
achter. Zo leer je met o.a. onderstaande hoe je van een specifieke opgeslagen SSID het wachtwoord kan weergeven.
netsh wlan show profiles help
ARP
[bewerken]Het Address Resolution Protocol heeft als voornaamste doel het MAC-adres of hardwareadres te achterhalen van een bepaald IP-adres. Dit proces wordt ook wel IP-adresomzetting genoemd.
Om het gebruik van broadcasts te verminderen worden eenmaal geleerde netwerkverwijzingen meestal tijdelijk lokaal gecachet. In Windows kan je de cache weergeven via het commando arp -a
, in Linux is dit arp -n
. Een voorbeeld van een arp-cachetabel in Windows, waaruit je bv. kan afleiden dat de computer met IP-adres 10.10.1.4 als MAC-adres 00-15-5d-00-09-04 heeft:
>arp -a Interface: 10.10.10.7 --- 0xb Internetadres Fysiek adres Type 10.10.1.1 00-03-ff-99-55-22 dynamisch 10.10.1.2 00-15-5d-00-09-03 dynamisch 10.10.1.4 00-15-5d-00-09-04 dynamisch 10.10.1.5 00-15-5d-00-09-05 dynamisch 10.10.2.3 00-10-83-2b-86-97 dynamisch 10.10.255.255 ff-ff-ff-ff-ff-ff statisch 224.0.0.22 01-00-5e-00-00-16 statisch 224.0.0.251 01-00-5e-00-00-fb statisch 224.0.0.252 01-00-5e-00-00-fc statisch 229.55.150.208 01-00-5e-37-96-d0 statisch 239.255.255.250 01-00-5e-7f-ff-fa statisch 255.255.255.255 ff-ff-ff-ff-ff-ff statisch .
Traceroute
[bewerken]Als je merkt dat er iets foutloopt, weet je daarom nog niet waar het foutloopt. Gelukkig bestaan er commando's die je de gevolgde route tonen. Zo weet je welke 'hop' het volledig laat afweten of op welke hop er een vertraging blijkt te zitten. Hiervoor kan je traceroute
, tracert
(op Windows-computers) of tracepath
(op enkele Linuxdistributies) gebruiken.
$ tracepath nl.wikibooks.org 1: tux.local 0.105ms pmtu 1500 1: 178-118-152-1.access.telenet.be 7.944ms 1: 178-118-152-1.access.telenet.be 7.063ms 2: dD5E0C181.access.telenet.be 47.176ms 3: dD5E0FD2D.access.telenet.be 10.741ms 4: tengigabitethernet4-4.ar4.bru1.gblx.net 14.049ms asymm 7 5: 64.211.192.114 103.969ms asymm 7 6: evo-fiberring.com 15.040ms asymm 7 7: 87.255.35.66 16.337ms asymm 10 8: no reply 9: wikibooks-lb.esams.wikimedia.org 15.384ms reached Resume: pmtu 1500 hops 9 back 55
MTR en PathPing
[bewerken]MTR
[bewerken]Het cli-programma mtr (My TraceRoute) is een *nix-programma dat de mogelijkheden van traceroute en ping combineert. Bij Windows is er een gui-variant WinMTR, maar deze moet je apart installeren of als PortableApp gebruiken.
Onderstaand voorbeeld toont MTR op Linux die een route analyseert van de host machine (example.lan) naar een webserver bij Yahoo! (p25.www.re2.yahoo.com):
My traceroute [v0.71] example.lan Sun Mar 25 00:07:50 2007 Packets Pings Hostname %Loss Rcv Snt Last Best Avg Worst 1. example.lan 0% 11 11 1 1 1 2 2. ae-31-51.ebr1.Chicago1.Level3.n 19% 9 11 3 1 7 14 3. ae-1.ebr2.Chicago1.Level3.net 0% 11 11 7 1 7 14 4. ae-2.ebr2.Washington1.Level3.ne 19% 9 11 19 18 23 31 5. ae-1.ebr1.Washington1.Level3.ne 28% 8 11 22 18 24 30 6. ge-3-0-0-53.gar1.Washington1.Le 0% 11 11 18 18 20 36 7. 63.210.29.230 0% 10 10 19 19 19 19 8. t-3-1.bas1.re2.yahoo.com 0% 10 10 19 18 32 106 9. p25.www.re2.yahoo.com 0% 10 10 19 18 19 19
PathPing
[bewerken]Net als mtr
combineert Pathping de mogelijkheden van traceroute en ping, maar het is een Windows cli-programma.
>pathping wikipedia.org Tracing route to wikipedia.com [207.142.131.235] over a maximum of 30 hops: 0 simonslaptop [192.168.0.11] 1 192.168.0.1 2 thus1-hg2.ilford.broadband.bt.net [217.32.64.73] 3 217.32.64.34 4 217.32.64.110 5 anchor-border-1-4-0-2-191.router.demon.net [212.240.162.126] 6 anchor-core-2-g0-0-1.router.demon.net [194.70.98.29] 7 ny1-border-1-a1-0-s2.router.demon.net [194.70.97.66] 8 ge-8-0-153.ipcolo1.NewYork1.Level3.net [209.246.123.177] 9 ae-0-51.bbr1.NewYork1.Level3.net [64.159.17.1] 10 so-2-0-0.mp1.Tampa1.Level3.net [209.247.11.201] 11 ge-6-0.hsa2.Tampa1.Level3.net [64.159.1.10] 12 unknown.Level3.net [63.208.24.2] 13 Computing statistics for 325 seconds... Source to Here This Node/Link Hop RTT Lost/Sent = Pct Lost/Sent = Pct Address 0 simonslaptop [192.168.0.11] 0/ 100 = 0% | 1 0ms 0/ 100 = 0% 0/ 100 = 0% 192.168.0.1 0/ 100 = 0% | 2 18ms 1/ 100 = 1% 1/ 100 = 1% thus1-hg2.ilford.broadband.bt.net [217.32.64.73] 0/ 100 = 0% | 3 18ms 0/ 100 = 0% 0/ 100 = 0% 217.32.64.34 0/ 100 = 0% | 4 21ms 0/ 100 = 0% 0/ 100 = 0% 217.32.64.110 0/ 100 = 0% | 5 21ms 1/ 100 = 1% 1/ 100 = 1% anchor-border-1-4-0-2-191.router.demon.net [212.240.162.126] 0/ 100 = 0% | 6 --- 100/ 100 =100% 100/ 100 =100% anchor-core-2-g0-0-1.router.demon.net [194.70.98.29] 0/ 100 = 0% | 7 --- 100/ 100 =100% 100/ 100 =100% ny1-border-1-a1-0-s2.router.demon.net [194.70.97.66] 0/ 100 = 0% | 8 100ms 0/ 100 = 0% 0/ 100 = 0% ge-8-0-153.ipcolo1.NewYork1.Level3.net [209.246.123.177] 0/ 100 = 0% | 9 94ms 0/ 100 = 0% 0/ 100 = 0% ae-0-51.bbr1.NewYork1.Level3.net [64.159.17.1] 0/ 100 = 0% | 10 134ms 1/ 100 = 1% 1/ 100 = 1% so-2-0-0.mp1.Tampa1.Level3.net [209.247.11.201] 0/ 100 = 0% | 11 137ms 0/ 100 = 0% 0/ 100 = 0% ge-6-0.hsa2.Tampa1.Level3.net [64.159.1.10] 0/ 100 = 0% | 12 131ms 0/ 100 = 0% 0/ 100 = 0% unknown.Level3.net [63.208.24.2] 100/ 100 =100% | 13 --- 100/ 100 =100% 0/ 100 = 0% win2000 [0.0.0.0] Trace complete.
Netstat
[bewerken]Het cli-programma netstat gebruik je om oa. routingtabellen (netstat -r
) en netwerkconnecties te zien. Het laat je ook enkele netwerkstatistieken zien.
Stel dat je bv. malware hebt, waarvan je vermoedt dat deze netwerkconnecties aanmaakt met de buitenwereld, dan zou je netstat -b
kunnen gebruiken. Met het commando netstat -s -p tcp -f
vraag je statistieken (-s
) op van het protocol (-p
) tcp, waarbij alle externe adressen als fully qualified domain name worden weergegeven. Zoals je merkt biedt netstat
heel wat mogelijkheden, maar de details vallen buiten het kader van deze cursus.
Routering
[bewerken]Als een pakketje niet op zijn bestemming geraakt, dan kan er iets verkeerd zijn met de routering van dit pakketje. Het opvragen van een routeringstabel kan met netstat -r
.
Een voorbeeld op Linux met netstat -rn
(de -n
schakeloptie wordt gebruikt om IP-adressen i.p.v. eventuele domeinnamen te zien):
Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.254 0.0.0.0 UG 0 0 0 eth1 0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 eth0 10.0.3.0 0.0.0.0 255.255.255.0 U 0 0 0 lxcbr0 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 1 0 0 eth1 192.168.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
Portscanners
[bewerken]Een portscanner is een computerprogramma dat op verschillende manieren probeert te achterhalen welke TCP- en UDP-poorten op een computer bereikbaar zijn. Kleine tooltjes die dat kunnen zijn bv.:
- Angry IP Scanner: Windows - Linux - Mac
- Advanced IP Scanner: Windows
Zenmap
[bewerken]Nmap is een cli-programma dat veelal wordt gebruikt voor het inventariseren van computersystemen en netwerken en het testen van de beveiliging daarvan. Het programma duikt nu en dan op in films, bv. Matrix Reloaded, Dredd, Bourne Ultimatum en Elysium.[8]
Zenmap, het GUI-deel, kan als instap een goede inkijk geven in je eigen netwerk. Hiervoor geef je bij 'Target' jouw eigen netwerk op, bv. 192.168.1.0/24 en je duwt op scan. Na een tijdje krijg je enkele hosts en kan je per host details te weten komen, zoals openstaande poorten en gebruikt OS. Je krijgt ook informatie over de topologie van jouw netwerk.
Wireshark
[bewerken]Met het programma Wireshark kan je zien welke data via jouw NIC wordt verstuurd en ontvangen. Wireshark beeldt niet zomaar het netwerkverkeer af, maar "begrijpt" de structuur van de talrijke netwerkprotocollen. Op deze manier kan de software de verschillende geneste protocollen weergeven en de inhoud van elk veld tonen. Zo kan je Wireshark bv. gebruiken om te weten in welke stap van een netwerkprotocol het foutloopt, maar ook als educatieve tool is het handig.
Wi-Fi
[bewerken]Bij Wi-Fi-netwerken kan je bovenstaande programma's blijven gebruiken. Het kan ook interessant zijn om specifieke Wi-Fi analyseer programma's te testen. Zo is inSSIDer een Wi-Fi netwerk scanner voor Microsoft Windows and Apple OS X. Het geeft je bv. informatie over de signaalsterkte en of je geen kanalen hebt die overlappen. Er bestaan ook apps voor op de smartphone, zoals Wifi Analyzer op Android.
- ↑ Zie bv. kurthelectronic.de Testing cables, a guide for ICT installations
- ↑ Je kan zoeken naar voorbeelden van netwerkdiagrammen om inspiratie op te doen.
- ↑ Meer info op Deprecated Linux networking commands and their replacements.
- ↑ Onder Windows kan je de default gateway ook vinden bij
ipconfig
. - ↑ How can I find my DHCP server?
- ↑ Putorius.net: Find DHCP Server IP Address on Linux Command Line
- ↑ Support.microsoft.com: Snellere en veiligere Wi-Fi in Windows
- ↑ Meer informatie op nmap.org > movies