Computersystemen/Netwerkdiagnose

Uit Wikibooks
Naar navigatie springen Naar zoeken springen

Algemeen[bewerken]

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.

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.

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 ctrl + alt + t
Help commando /? man commando (man, van manual)
Onderbreken ctrl + c ctrl + c

Instellingen[bewerken]

Een overzicht van enkele belangrijke netwerkinstellingen:

Windows Linux[1]
Publiek IP
  • Surf naar ipecho.net
  • nslookup myip.opendns.com resolver1.opendns.com
  • curl ipecho.net/plain[2]
Privaat ip ipconfig ifconfig
Subnetmask ipconfig ifconfig
Mac-adres ipconfig /all ifconfig
DHCP-Server ipconfig /all dhclient -v [3]
DNS-Server(s) ipconfig /all cat /etc/resolv.conf
Default Gateway

netstat -nr[4]

Ping[bewerken]

Als je met het TCP/IP protocol (internet) werkt komt het ping-commando vaak handig van pas voor het lokaliseren van een fout. Het is een hulpprogramma om de bereikbaarheid van apparatuur te testen op computernetwerken. 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 en wordt weergegeven 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.

Er kunnen implementatieverschillen zijn:

  • Bij Windows worden standaard 4 pakketjes verstuurd. Via ping /? komen we te weten dat met ping -t pakketjes blijven gestuurd worden, totdat je ctrl + c gebruikt om deze te onderbreken.
  • Bij Linux werkt ping zoals ping -t onder Windows. Hier leert man ping ons dat we met ping -c 4 hetzelfde krijgen zoals het standaard gedrag onder Windows.

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:

  1. Ping naar je loopback adres (127.0.0.1). Als het daar al foutloopt kan je een herstel van de TCP/IP stack proberen[5]. Als dat niet werkt kan ook je driver of netwerkkaart zelf de oorzaak zijn.
  2. 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.
  3. 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.
  4. 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

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. Je kan ook statische verwijzingen maken. 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. Er bestaan echter commando's die je de gevolgde route kunnen tonen. Zo kan je weten 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. Dit is een TCP/IP-programma om na te gaan welke route TCP-pakketten afleggen naar een bepaalde host op het internet.

$ 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

Info over IP-adres[bewerken]

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.

Zenmap[bewerken]

Schermafdruk van Zenmap

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[6].

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]

Schermafdruk van Wireshark

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]

inSSIDer 2.1

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.

Je kan ook onderstaande commando's in Windows gebruiken (binnen een administratieve cmd). 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>
Bronnen, noten en/of referenties
  1. Er is gekozen voor commando's die maximaal overeenkomen met deze van Windows, maar eigenlijk zijn sommige Linux-commando's deprecated. Meer info op Deprecated Linux networking commands and their replacements.
  2. Het cli-programma curl werkt onder Windows enkel in PowerShell en niet in cmd
  3. Via dhclient -v eth0 vraag je het IP-adres voor netwerkinterface eth0 opnieuw aan.
    Of een andere interface die je vindt via ifconfig.
  4. Onder Windows kan je de default gateway ook vinden bij ipconfig.
  5. Voor Windows: TCP/IP opnieuw instellen met behulp van het hulpprogramma NetShell
  6. Meer informatie op nmap.org > movies
Informatie afkomstig van http://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.