Netwerkprotocollen
1 Doelstellingen
bewerkenOnderstaande doelstellingen komen in meer of mindere mate aan bod. De grijze doelstellingen komen hier niet aan bod. Dat zijn bv. praktijkoefeningen die aansluiten bij deze theorie, maar die in dit Wikibook niet behandeld worden. Of bv. theorie die in een ander hoofdstuk wordt behandeld.
Uit het leerplan van Applicatie- en Databeheer[1], een deel van leerplandoel 26:
- LPD 26: De leerlingen lichten de opbouw en werking van een netwerksysteem met zijn componenten en transportmedia toe.
- netwerkdiensten, clouddiensten
- routing
- virtualisatie
- Lexicon. De componenten van een netwerk zijn onder meer werkstation, server, access point, switch, router, gateway, firewall, noodbatterij, backbone, SAN, NAS.
- Lexicon. De transportmedia zijn de soorten bekabeling in een netwerk, wifi, bluetooth …
- Lexicon. De basis clouddiensten zijn: IaaS, PaaS en SaaS.
- LPD 27: De leerlingen lichten een lagenmodel voor datacommunicatie en de functie en werking van communicatieprotocollen in een netwerk toe.
- Adressering. Bij adressering worden IPv4 en IPv6 behandeld.
- Wenk. Het OSI-model wordt gebruikt als theoretisch lagenmodel. De leerlingen kunnen aan de hand van het OSI-model problemen binnen een netwerk stapsgewijs oplossen.
- Wenk. Volgende protocollen komen aan bod: TCP/IP, UDP, ethernet-protocol.
- Wenk. Bij de adressering wordt aandacht besteed aan subnet en subnetmasker.
- Wenk. Je leert de leerlingen getallen omzetten van het decimaal talstelsel naar het binair en hexadecimaal talstelsel en omgekeerd.
- LPD 29: De leerlingen installeren, configureren en onderhouden on premise een client en server besturingssysteem en applicatiesoftware.
- DNS, DHCP
- Wenk. Je kan de Cisco Packet Tracer of Lernsoftware Filius gebruiken. Dit zijn gratis tools waarmee je volledige netwerken kan bouwen en configureren. Als leerkracht kan je, om leerlingen fouten te leren herkennen, met die tools netwerken definiëren en voorzien van verschillende fouten. Je test hiermee theoretische kennis in praktische situaties.
Uit het leerplan Toegepaste Informatica van de richting Informaticabeheer[2]:
- 3.1.9 De functie van een communicatieprotocol toelichten.
- 3.1.10 Een actueel communicatieprotocol toelichten.
- 3.1.11 De noodzaak van adressering en de structuur van sommige adrestypes toelichten, onder meer MAC en IP.
- 3.1.12 De mogelijke technieken van adressering in een actuele netwerkarchitectuur toelichten.
- 3.1.13 De begrippen subnet en subnetmasker, en de functie ervan toelichten.
- 3.1.16 Het begrip routing toelichten.
- 3.5.1 De gevolgen van een slecht beveiligd netwerk toelichten.
- 3.3.4 Werking van DNS toelichten en instellen.
- 3.3.5 Werking van DHCP toelichten en instellen.
Voor de opbouw van het onderdeel netwerkprotocollen is gekozen voor het TCP/IP netwerklagenmodel. Dit netwerklagenmodel wordt ook gebruikt bij Wireshark, een 'packet sniffer' en 'protocol analyzer' om zo de data in een netwerk op te vangen en te analyseren. Een (groter) bestand wordt dan verdeeld in stukjes (ethernetframes genoemd), die elk afzonderlijk in een eigen "enveloppe" verstuurd worden.
Gezien het hier gaat om protocollen om te kunnen communiceren zal een 'adres' voor de verzender en de ontvanger belangrijk zijn. In onze maatschappij kan je voor jouw woning niet zomaar je eigen straat en huisnummer kiezen. Al snel zou dit chaos zijn en zou de postbode met de handen in het haar zitten. Gelukkig is dat beter geregeld: ieder huis krijgt een unieke combinatie van straat, straatnummer, gemeente en land. Zo ook op het internet. Ook bij het TCP/IP-model zijn er adresafspraken nodig, zelfs voor twee soorten adressen: MAC en IP. Er wordt aangeraden om het Wikibook van talstelsels te bekijken om zo alles beter te begrijpen.
2 Linklaag, met MAC
bewerkenEen MAC-adres (ook wel hardware-adres genoemd) is een uniek identificatienummer dat aan een apparaat in een ethernet-netwerk is toegekend. Dankzij dit adres kunnen apparaten met elkaar communiceren. Vrijwel ieder netwerkapparaat heeft een vast, door de fabrikant bepaald uniek MAC-adres.
Heeft een laptop een mogelijkheid voor vast internet en voor draadloos internet, dan zal die laptop twee MAC-adressen hebben. MAC-adressen zijn alleen lokaal relevant, zodra een pakket een router passeert wordt zowel het MAC-adres van de bron, als van de bestemming aangepast in het ethernetframe.
2.1 Notatie
bewerkenHet MAC-adres wordt meestal in hexadecimale vorm aangeduid, door zes groepen van twee hexadecimale cijfers. Bv.:
00:24:1d:c1:71:e6
Je merkt dat er 281.474.976.710.656 (248=1612) unieke mogelijkheden zijn.[3] De eerste drie groepen van een MAC-adres worden toegewezen aan een fabrikant.[4] De fabrikanten moet er dan voor zorgen dat elk adres maar eenmaal wordt gebruikt. Bij bovenstaand voorbeeld verwijst het gedeelte 00:24:1d
altijd naar GigaByte als fabrikant.
Met Wireshark kan je het MAC-adres van ontvanger (00 1b bf 89 a3 50) en verzender (00 24 1d c1 71 e6) goed "zien zitten" in de linklaag van het ethernetframe. Het is logisch dat het MAC-adres in het begin van het ethernetframe zit, omdat de switch de netwerkcomponent is die snel moet kunnen beslissen via welke poort een frame verstuurd moet worden (zie verder):
0000 00 1b bf 89 a3 50|00 24 1d c1 71 e6 08 00 45 00 04 30 5c bd 40 00 40 06 e7 1e c0 a8 01 02 4a 7d 0020 e6 c4 b4 c5 00 50 7d 1c 56 57 19 1d 1d 1e ...
2.2 Gebruik
bewerkenHet MAC-adres wordt op een netwerk o.a. gebruikt bij een switch, die op basis van dit adres beslist waar een pakket heen moet.[5] In het begin kent de switch het netwerk niet en zal hij pakketjes moeten doorsturen naar al zijn poorten. Stap-voor-stap kan hij een tabel opbouwen, zodat hij weet welke MAC-adressen op welke poorten zitten.[6]
De vaste koppeling van een MAC-adres aan hardware wordt soms in een draadloos netwerk gebruikt om de authenticiteit van gebruikers te controleren. Maar door de mogelijkheid van nabootsen (MAC spoofing) is dit geen serieuze oplossing voor de beveiliging. Het kan wel helpen om via het MAC-adres een gestolen computer te traceren.[7] Die vaste koppeling tussen netwerk en hardware komt ook de privacy niet ten goede: zo zal je smartphone vaak het MAC-adres uitzenden, zelfs al ben je niet verbonden met een netwerk. Er bestaan mogelijkheden om dit op een andere manier te doen.[8]
2.3 Broadcast
bewerkenWil je alle hosts in een netwerk kunnen bereiken, dan heb je nood aan een broadcast (bv. in het geval van DHCP). Hiervoor worden alle bits in het MAC-adres op 1 gezet, of dus op f in hexadecimale vorm. Een switch die zo'n frame ontvangt, zal dus dit frame op al zijn poorten doorsturen.
0000 ff ff ff ff ff ff 08 00 27 75 b0 77 08 00 45 10 01 48 00 00 00 00 80 11 39 96 00 00 00 00 ff ff 0020 ff ff 00 44 00 43 01 34 86 32 01 01 06 00 ...
3 Internetlaag
bewerkenHet bekendste protocol uit de internetlaag is het Internetprotocol (IP). Dit protocol is verantwoordelijk voor het adresseren van hosts en voor het routeren van datagrammen (pakketten) van een bronhost naar een doelhost. Een host (computer, router, IP-cam,...) die in zo'n netwerk voorkomt, wordt geïdentificeerd aan de hand van een IP-nummer.
3.1 IPv4
bewerken3.1.1 Notatie
bewerkenEen IPv4-adres wordt bijna altijd aangegeven als een groep van 4 decimale getallen, gescheiden door een punt, bv.:
81.241.89.194 74.125.230.196 192.168.2.1
Je zou dan vermoeden dat 301.140.45.13 ook een geldig IP zal zijn, wat niet het geval is. Dit komt omdat per getal slechts 8 bits gebruikt worden (cfr. Wikibook "Talstelsels in de informatica"). Het grootst mogelijke getal dat daarmee kan worden gemaakt is 28-1=255. Het grootst mogelijke IP-adres is dus (in theorie) 255.255.255.255.
Een IPv4-adres heeft dus als bitruimte 32 bits, waarmee 232 ≈ 4 miljard adressen kunnen worden toegewezen. Dat was ooit superveel, maar men zag ook de groei van het aantal hosts. En per bewoner op de aarde heb je eigenlijk minder dan 1 IPv4-adres (de wereldbevolking telt bijna 8 miljard mensen). De bitruimte uitbreiden (IPv6, zie verder) lijkt dan eenvoudig, maar is het helemaal niet: alle apparatuur moet hier mee overweg kunnen. Alle oude apparatuur vervangen is op korte termijn niet haalbaar. In afwachting van een volledige IPv6-uitrol bedacht men andere technieken zoals publiek/privaat en NAT (zie verder).
Begin 2011 heeft de Internet Assigned Numbers Authority (IANA) trouwens de laatste IPv4-adresblokken verdeeld over de regionale internetregistries.[9], waarvan RIPE NCC (voor Europa, Rusland en West-Azië) eind 2019 meldde dat het laatste deel ervan is uitgedeeld[10]
Daar een router moet kunnen weten waar een frame naartoe moet, moet er een IP-adres zijn van de ontvanger, maar ook van de verzender. Met Wireshark kan je de IP-adressen goed "zien zitten" in de internetlaag van het ethernetframe. Zo zie je hieronder een frame van 192.168.1.2 naar 74.125.230.196. Hexadecimaal wordt dit respectievelijk 0xc0a80102
en 0x4a7de6c4
. De inkapseling heeft gezorgd voor een header, waardoor het duidelijk is dat het om IPv4 gaat. Dat zie je bij 08 00
.
0000 00 1b bf 89 a3 50 00 24 1d c1 71 e6 08 00 45 00 04 30 5c bd 40 00 40 06 e7 1e c0 a8 01 02|4a 7d 0020 e6 c4 b4 c5 00 50 7d 1c 56 57 19 1d 1d 1e ...
In een firewall kan een IP-adres gebruikt worden om communicatie van en/of naar bepaalde hosts te blokkeren.
3.1.2 Publiek of privaat
bewerkenOm het tekort aan IPv4-adressen op te lossen heeft men vastgelegd dat bepaalde IP-adressen meerdere keren gebruikt kunnen worden, zolang ze maar uniek zijn binnen het eigen (LAN-)netwerk:
range 192.168.0.0 - 192.168.255.255, bv. 192.168.0.101 ; 192.168.0.254 ; 192.168.5.2 range 172.16.0.0 - 172.31.255.255, bv. 172.16.0.1 ; 172.16.0.2 ; 172.27.1.1 range 10.0.0.0 - 10.255.255.255, bv. 10.0.0.1 ; 10.0.0.3 ; 10.1.0.3
Deze adressen worden private IP adressen genoemd. Deze worden heel vaak gebruikt in LANs bij je thuis, op het kantoor of in bedrijven. Binnen je eigen netwerk mag bv. 192.168.0.101 maar één keer voorkomen, maar bij je buur of je concurrent mag 192.168.0.101 opnieuw gebruikt worden.
Als je ook communicatie met het Internet wil, kan je hiervoor geen private adressen gebruiken: ze zijn niet noodzakelijk uniek op de wereld. Hiervoor heb je een abonnement met een internet service provider (ISP) nodig. Deze geeft een IP-adres aan jouw router, dat voor de rest van de wereld zichtbaar én uniek is. Men heeft het over een publiek IP-adres.
Ook een ISP kan niet zomaar een IP-adres kiezen: het beheer van alle publieke IP adressen wordt uitgevoerd door de ICANN. Een ISP krijgt dan een "range" van IP-adressen, waaruit zij vrij kunnen kiezen. RIPE biedt op hun site de mogelijkheid om via een whois-aanvraag te weten komen welke range van IP-adressen een ISP heeft.[11]
De aandachtige lezer zal opmerken dat er wel nog een koppeling moet gebeuren tussen publiek en privaat IP-adres: dat wordt opgelost door NAT.
3.1.3 NAT
bewerkenStel dat je vanuit jouw LAN wilt surfen naar wikibooks.org, waarvoor de pc een HTTP-aanvraag doet aan 91.198.174.192. Hij geeft ook zijn eigen IP-adres 192.168.1.1 mee, omdat hij een HTTP-antwoord wil terugkrijgen, nl. de webpagina. Het gele bolletje stelt het pakketje voor dat zich doorheen het netwerk beweegt. De letters: S=sender, R=receiver, RA=router A, RB=router B.
Deze HTTP-aanvraag komt toe bij de webserver van wikibooks.org. Alleen weet hij niet naar waar hij het HTTP-antwoord moet terugsturen. Het IP-adres 192.168.1.1 is namelijk een privaat IP-adres, dat énkel uniek moet zijn binnen één netwerk, maar niet over heel de wereld. Het is dus duidelijk dat dit niet zal werken.
Een privaat IP-adres is dus niet routeerbaar over het internet, maar van de ISP heeft router RA wel een publiek IP-adres (bv. 91.179.77.105) gekregen, wél uniek over heel de wereld.
De router RA krijgt een pakketje met als source IP-adres 192.168.1.1, maar hij zal dit wijzigen naar 91.179.77.105, voordat hij het op het Internet zet. Dit principe noemen we network address translation, kortweg NAT. Hierdoor kan wikibooks.org de webpagina terugsturen naar de publieke interface van de router, nl. 91.179.77.105. Belangrijk is dat de router een NAT-tabel bijhoudt, omdat hij moet onthouden wie dit oorspronkelijk had aangevraagd in het LAN-netwerk van A. NAT lost dus het tekort aan IPv4-adressen op, omdat zo meerdere nodes samen één IPv4-adres kunnen delen.
Het voordeel van NAT is dat het interne LAN-netwerk niet zomaar zichtbaar is voor de buitenwereld. Verschillende methoden[12] laten echter zien dat het gros van de NAT-methoden te omzeilen valt. Bovendien kan je met een goed ingestelde firewall op de router een gelijkaardige veiligheidssituatie zoals bij NAT bekomen.
3.1.4 Statisch of dynamisch
bewerkenHet IP-adres van een computer kan manueel worden ingesteld op de computer, het is dan steeds hetzelfde (statisch). Voor servers en routers is een vast IP handig, omdat deze dan altijd op dat adres te bereiken zijn. Zowel door rechtstreeks het IP in te typen, als bij de koppeling domeinnaam-IP (DNS). Bedrijven of scholen vragen vaak ook een statisch IP aan bij hun ISP.
Op werkstations statische IP's gebruiken is moeilijker, omdat je zelf een goed overzicht moet behouden. Je mag een IP-adres namelijk maar één keer toewijzen. Bij het wegnemen of bijzetten van werkstations wordt dit snel onbeheerbaar. Vandaar wordt er bij werkstations bijna altijd gebruik gemaakt van DHCP, waardoor automatisch een IP wordt toegewezen. Men spreekt van een dynamisch IP. Het is dan wel niet zeker dat je steeds hetzelfde IP-adres krijgt. Bij het abonnement van een particulier zal je standaard ook een dynamisch IP van je ISP krijgen.
3.1.5 Netwerk- en hostdeel
bewerkenIP-pakketten worden verstuurd door computers, servers,... Het is de verantwoordelijkheid van een router om deze pakketten op de juiste bestemming te krijgen. Stel bv. dat de webserver links een back-up wil bewaren, maar dat in een ander land wil doen, zodat ze bij een ramp aan hun data kunnen. Dat zou de server rechts kunnen zijn, waartussen zeker enkele routers zullen zitten. Een router scheidt minstens twee netwerken, maar het kunnen er ook meer zijn. Zo zijn de routers links en rechts verbonden met 4 netwerken en de middelste met 3.
De vraag is via welke interface de router links een binnenkomend pakket verder zal sturen, zodat deze kan worden gerouteerd. Wij zien gewoon dat het via zijn rechtse interface is, maar een router heeft zo'n helikopterzicht niet. De routeringstabel kan niet álle mogelijke bestemmingen (=IPv4-adressen) bevatten van de volledige wereld. Alleen al het opsommen van alle IPv4-adressen zou een bestand geven van 16 GiB (=232mogelijkheden * 4B/230=24), wat dus nog geen routeringsinformatie zou bevatten. Laat staan dat je in dat bestand een bestemming moet zoeken of dat je een bestemming moet aanpassen.
Een routeringstabel bevat dus niet (uitsluitend) afzonderlijke IP-adressen, maar er wordt gewerkt met afzonderlijke netwerken, subnetten genoemd. Hiervoor bestaat een IP-adres uit een netwerk- en een hostdeel. Het netwerkdeel geeft aan welk netwerk bedoeld is en het hostdeel geeft een bepaalde host (pc, router,...) binnen dat netwerk aan. Om te weten waar de grens ligt tussen de twee delen, zal een IP-adres vergezeld zijn van een subnetmasker. Een kortere notatie is de CIDR-notatie.
Subnetmasker
bewerkenDankzij het subnetmasker kan je besluiten wat van het IP-adres behoort tot het netwerkdeel en wat tot het hostdeel. Zo kan je ook besluiten of hosts tot elkaars netwerk kunnen behoren.
PC | IP | Subnetmasker | Netwerkdeel | Hostdeel |
---|---|---|---|---|
A | 192.168.1.104 | 255.255.255.0 | 192.168.1 | .104 |
B | 192.168.2.104 | 255.255.255.0 | 192.168.2 | .104 |
Conclusie: het netwerkdeel van pc A en B is niet gelijk en dus behoren ze niet tot elkaars netwerk.
PC | IP | Subnetmasker | Netwerkdeel | Hostdeel |
---|---|---|---|---|
C | 192.168.1.104 | 255.255.0.0 | 192.168 | .1.104 |
D | 192.168.2.104 | 255.255.0.0 | 192.168 | .2.104 |
Conclusie: het netwerkdeel van pc C en D is gelijk en dus behoren ze tot elkaars netwerk.
Nu blijkt dat de situatie van pc A en B toch anders is dan de situatie bij pc C en D, terwijl het nochtans gaat om dezelfde IP-adressen (maar een ander subnetmasker).
CIDR-notatie
bewerkenIn plaats van een subnetmasker wordt vaak ook aangegeven hoeveel bits gebruikt worden voor het netwerkdeel. Dit is de CIDR-notatie, die IP en subnetmasker in 1 notatie weergeeft:
PC | IP | Subnetmasker | #netwerk- en hostbits | CIDR-notatie |
---|---|---|---|---|
A | 192.168.1.104 | 255.255.255.0 | 24+8=32 | 192.168.1.104/24 |
B | 192.168.2.104 | 255.255.255.0 | 24+8=32 | 192.168.2.104/24 |
C | 192.168.1.104 | 255.255.0.0 | 16+16=32 | 192.168.1.104/16 |
D | 192.168.2.104 | 255.255.0.0 | 16+16=32 | 192.168.2.104/16 |
In plaats van de mogelijke private IP-adressen op te sommen met de range, kunnen ze heel compact genoteerd worden met de CIDR-notatie:
192.168.0.0/16 172.16.0.0/12 10.0.0.0/8
Als je een privaat netwerk opbouwt hoef je niet te kiezen voor de volledige range: bv. een netwerk 10.1.1.0/24 is ook mogelijk. Ieder IP-adres uit dit netwerk zal dan beginnen met 10.1.1.
Netwerkbits (ter info)
bewerkenHet aantal netwerkbits hoeft dus niet noodzakelijk een veelvoud te zijn van 8, zie bv. 172.16.0.0/12
. Het subnetmasker zal altijd beginnen met allemaal 1'tjes, gevolgd door allemaal 0'en. Bij 255.255.0.0 is dat geen probleem, want het decimale getal 255 is 11111111 binair. Ook het subnetmasker 11111111.11110000.00000000.00000000 is geldig, wat decimaal 255.240.0.0 zou zijn. Het subnetmasker 255.200.0.0 zou niet kunnen, want dit is 11111111.11001000.00000000.00000000 binair.
Zoals je merkt is het controleren of pc's in hetzelfde netwerk liggen een stuk moeilijker als het aantal netwerkbits geen veelvoud is van 8. Dan moet er nl. op binair niveau gekeken worden.
3.1.6 Netwerk- en broadcastadres
bewerkenOp basis van de CIDR-notatie (of IP+subnetmasker) kan je het volgende bepalen:
PC | CIDR-notatie | Netwerkadres | Broadcastadres | #hosts |
---|---|---|---|---|
A | 192.168.1.104/24 | 192.168.1.0 | 192.168.1.255 | 232-24-2=28-2=254 |
B | 192.168.2.104/24 | 192.168.2.0 | 192.168.2.255 | 232-24-2=28-2=254 |
C | 192.168.1.104/16 | 192.168.0.0 | 192.168.255.255 | 232-16-2=216-2=65534 |
D | 192.168.2.104/16 | 192.168.0.0 | 192.168.255.255 | 232-16-2=216-2=65534 |
- Het netwerkadres is het laagste adres uit de beschikbare range (dus binair is iedere hostbit een 0) en stelt a.h.w. 'het netwerk' voor. In een firewall kan een netwerkadres in combinatie met een subnetmasker gebruikt worden om communicatie van en/of naar netwerken te blokkeren. Daar het netwerkadres dus een volledig netwerk voorstelt, mag het nooit gebruikt worden als IP-adres voor één host.
- Het broadcastadres is het hoogste adres uit de beschikbare ranges is (dus binair is iedere hostbit een 1) en stelt a.h.w. 'communicatie naar het volledige netwerk' voor. Pakketten die het broadcastadres als ontvanger hebben, komen dus op alle hosts van dat netwerk aan. Vandaar ook logisch dat je dit adres niet mag toekennen als IP-adres van een host, net omdat het gaat om broadcast en het dus geen unicast zou kunnen zijn.
- Bij de berekening van het aantal hosts moet je dus altijd '-2' doen, omdat je een netwerk-of broadcastadres nooit mag toekennen als IP-adres voor een host.
- Merk op dat het logisch is dat je voor pc C en D hetzelfde netwerk- en broadcastadres hebt, omdat ze in hetzelfde netwerk liggen.
Een concreet voorbeeld van broadcast is wanneer een host een IP-adres aanvraagt via DHCP. Alleen weet hij op dat moment nog niet in welk netwerk hij zit. In dat geval wordt 255.255.255.255 (of ff.ff.ff.ff
hexadecimaal) als broadcastadres gebruikt. Merk op dat het MAC-adres van de verzender ook uit f'en bestaat, zodat de switch weet dat hij onderstaand pakket naar iedere host mag doorsturen.
0000 ff ff ff ff ff ff 08 00 27 75 b0 77 08 00 45 10 01 48 00 00 00 00 80 11 39 96 00 00 00 00 ff ff 0020 ff ff 00 44 00 43 01 34 86 32 01 01 06 00 ...
3.1.7 Loopbackadres
bewerkenHet netwerk 127.0.0.0/8 is het loopbacknetwerk. De meeste toepassingen gebruiken van dit netwerk enkel het adres 127.0.0.1. Dit adres is het loopbackadres en staat voor de eigen computer (men heeft het over de localhost). Dit kan bijvoorbeeld gebruikt worden om serverdiensten te benaderen die op de eigen computer staan. Als je bv. een eigen webserver draait om webtoepassingen lokaal uit te testen, dan kan je surfen naar je eigen website via https://127.0.0.1. Je zou ook je eigen IP-adres kunnen gebruiken, maar dan moet je dit eerst opzoeken en bovendien kan het veranderen. Vaak werkt ook https://localhost, wat achter de schermen vertaald wordt naar https://127.0.0.1.
3.2 IPv6
bewerkenInternet Protocol versie 6 (IPv6) is versie 6 van het internetprotocol voor het toewijzen van IP-adressen. Het is de opvolger van Internet Protocol versie 4 (IPv4) en is de tweede versie van het internetprotocol die in gebruik is genomen. De tussenliggende versie IPv5 was een experimentele aanvulling op IPv4, maar deze werd nooit geïmplementeerd.
3.2.1 Notatie
bewerkenIPv6-adressen zijn 128 bits lang en worden normaal geschreven als 8 groepen van 4 hexadecimale cijfers.
Een voorbeeld van een geldig IPv6-adres:
3ffe:6a88:85a3:08d3:1319:8a2e:0370:7344
Bij de cli-commando's ipconfig
of ifconfig
wordt gebruik gemaakt van shortcuts om een IPv6-adres zo kort als mogelijk te noteren. We overlopen de mogelijkheden.
Als een groep van 4 cijfers 0000
is, dan mag dit helemaal worden weggelaten.
3ffe:6a88:85a3:0000:1319:8a2e:0370:7344 3ffe:6a88:85a3::1319:8a2e:0370:7344
Wanneer er meer dan twee opeenvolgende groepen gereduceerd zijn tot dubbele punten, dan mogen ook die weer tot twee dubbele punten gereduceerd worden:
2001:2353:::::1428:57ab 2001:2353::1428:57ab
Opgelet, het mag enkel bij opeenvolgende groepen van nullen, omdat anders meerdere mogelijkheden ontstaan voor de posities van 0000
.
2001::25de::cade is geen geldig IPv6-adres, want is het 2001:0000:25de:0000:0000:0000:0000:cade of 2001:0000:0000:25de:0000:0000:0000:cade of nog iets anders??
Ook hoeven nullen vooraan in een getal (voorloopnullen) niet geschreven te worden:
2001:2353:02de::0e13 2001:2353:2de::e13
Opgelet! In de weergave mag dan gebruik gemaakt worden van shortcuts, achter de schermen blijft het een adres bestaande uit 128 bits! Dit kan je bv. bekijken met Wireshark. Hieronder is het bronIPv6-adres fe80::1
= fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 01
en het bestemmingsIPv6-adres ff02::1
= ff 02 00 00 00 00 00 00 00 00 00 00 00 00 00 01
zichtbaar. De inkapseling heeft gezorgd voor een header, waardoor het duidelijk is dat het om IPv6 gaat. Dat zie je bij 86 dd
(bij IPv4 was dit 08 00
).
0000 33 33 00 00 00 01 d4 21 22 76 5b 78 86 dd 60 00 00 00 00 20 3a ff fe 80 00 00 00 00 00 00 00 00 0020 00 00 00 00 00 01|ff 02 00 00 00 00 00 00 00 00 00 00 00 00 00 01 88 00 87 8b a0 00 00 00 fe 80 0040 00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 01 d4 21 22 76 5b 78
3.2.2 Verbeteringen
bewerkenIn de informaticawereld betekent een nieuwe versie vaak hogere snelheden. Bij IPv6 t.o.v. IPv4 is dat niet per definitie het geval! Meer zelfs: doordat de IP-adressen langer zijn, zijn ze in theorie moeilijker te behandelen. Bovendien zitten we de komende jaren met een overgangsfase, waar zowel IPv4, als IPv6 nodig is. Een complexe situatie. Er moeten dus wel andere redenen zijn waarom IPv6 is ontwikkeld.
- Groter adresbereik. Een IPv6-adres is 128 bits lang; het aantal mogelijke adressen is dus 2128 ≈ 3,4 × 1038. IPv6 heeft dus een bijna onuitputtelijke voorraad adressen: voor elke aardbewoner zijn er ongeveer 50 quadriljard beschikbaar. Laat je dan ook niet misleiden dat de adresruimte "maar" vier keer zo groot is, want het aantal adressen is daardoor 296 keer zo groot, nl. 2128-32!
- Betere autoconfiguratie. IP-adressen zijn belangrijk, omdat ze communiceren mogelijk maken. Hoe verkrijg je nu een IPv6-adres? Er zijn twee mogelijkheden:
- Stateful autoconfiguratie, nl. via DHCPv6, wat gelijkaardig werkt zoals DHCP bij IPv4. Er is dus nog steeds nood aan een DHCP-server en beide moeten op de hoogte zijn van hun status m.b.t. het verkregen/uitgedeelde IP (vandaar stateful).
- Stateless autoconfiguratie, waarbij de host een IPv6 adres zelfstandig "kiest", zodat het naar grote waarschijnlijkheid uniek zal zijn. Het wordt dan gebaseerd op het netwerkprefix en vaak ook het MAC-adres. Hier valt het opzetten en configureren van een DHCP-server/service dus weg. Bovendien zijn er dan geen DHCP-broadcasts nodig, wat bij grote netwerken doorweegt op het netwerk. Stel bv. dat iedere host in een netwerk 1 broadcast stuurt, dan is dat bij 10 hosts beperkt tot 90 berichtjes, maar bij 100 hosts al 9900 (nl. n(n-1)=100*99))!
- Betere routering. Door de enorme hoeveelheid aan IPv6-adressen kan men er een stuk kwistiger mee omspringen. Op hoog niveau wordt dan bv. een onderscheid gemaakt tussen netwerknummers voor de verschillende continenten. Binnen de continenten kunnen internet exchanges en internetaanbieders hiërarchische nummerplannen opstellen. Deze hiërarchie kent twee voordelen:
- Routeringstabellen in routers worden minder complex. Alhoewel IPv6-adressen langer zijn (en dus "moeilijker" te behandelen) kan een minder complexe routeringstabel zorgen voor toegenomen snelheid.
- Applicaties kunnen, aan de hand van het IP-nummer, bepalen welke nodes netwerktechnisch dichterbij staan. Zo kunnen applicaties als BitTorrent distributiealgoritmen ontwikkelen die efficiënter netwerkverkeer opleveren doordat bij voorkeur peers worden gekozen die dichter bij elkaar staan.
- NAT wordt overbodig. Bij IPv6 is NAT dus niet meer nodig, daar dit was ontwikkeld om meerdere nodes (met private IP-adressen) samen één (publiek) IPv4-adres te laten delen. Nu kan iedere host zijn eigen uniek IPv6-adres krijgen. De (semi-)veiligheid die NAT bracht, moet bij IPv6 wel opgevangen worden door de firewall goed in te stellen! Anders kan je problemen krijgen, zoals enkele Tele2-klanten in 2014 hadden: alle computers in het interne netwerk van sommige klanten waren opeens bereikbaar vanaf de buitenwereld.[13]
- Gegevensbeveiliging op IP-niveau. IPv6 maakt het mogelijk om gegevens op de internetlaag van beveiliging te voorzien. Deze beveiliging kent twee vormen:
- Versleuteling (encryptie) van gegevens. Zender en ontvanger kunnen een sleutel afspreken waarmee het gegevenstransport beveiligd wordt. IPv4 kent deze mogelijkheid niet, waardoor veel beveiligingsvarianten boven de IP-laag ontwikkeld zijn, bijvoorbeeld HTTPS of SSH. De versleuteling van IPv6 maakt beveiliging op bovenliggende niveaus overbodig: ieder gegevenstransport op basis van IPv6 kan immers veilig gebeuren.
- Authenticatie van gegevens. Hierbij kan de zender ieder pakket voorzien van een elektronische waarborg. Andere partijen kunnen de gegevens niet ongemerkt wijzigen, noch zich als de oorspronkelijke afzender voordoen. Hierdoor heeft de ontvanger zekerheid over de herkomst van de ontvangen IP-pakketten.
- Ondersteuning van mobiele nodes. Bij mobiele toestellen heb je soms een bestaande connectie, waarbij je plots terechtkomt in een ander netwerk. Graag zou je willen dat "lopende" connecties toch kunnen blijven. Bij IPv4 is dit niet zomaar mogelijk, terwijl IPv6 het mogelijk maakt dat een node (tijdelijk) van een ander IP-adres gebruik maakt. De preciezere details vallen buiten het kader van dit Wikibook, maar kunnen op Wikipedia worden nagelezen.
3.2.3 IPv4 vs IPv6
bewerkenDe wijze waarop het protocol werkt, verschilt nauwelijks van de wijze waarop IPv4 werkt. Een van de weinige verschillen is dat in IPv6 een subnet niet langer een netwerkadres en een broadcastadres bevat:
- het netwerkadres van IPv4 wordt het "subnet-router anycast"-adres bij IPv6;
- broadcast wordt in IPv6 geïmplementeerd als een speciaal geval van multicast.
Het is niet zo dat we nu van de ene op de andere dag IPv4 kunnen vervangen door IPv6. Eerst was er een periode van het testen van IPv6, om nu beide naast elkaar te laten bestaan, met een gestage groei van IPv6:
- Op 8 juni 2011 was de wereldtestdag voor IPv6. Een aantal grote bedrijven, zoals Microsoft en Google, bood de websites voor één dag aan over zowel IPv4 als IPv6 om zo de impact hiervan te testen.[14]
- Op 6 juni 2012 activeerden een aantal Internet Service Providers (ISPs) en bedrijven permanent IPv6.[15] Begin 2014 begon Telenet met de uitrol van IPv6.[16] Dit zorgt ervoor dat de groei van IPv6 gestaag toeneemt, te merken bij bv. de grafieken van de Amsterdam Internet Exchange (AMS-IX).[17], het belangrijkste internetknooppunt in Nederland en bij het gebruik van IPv6 bij Google gebruikers[18]
3.3 IP vs MAC
bewerken3.3.1 Reden
bewerkenMAC- en IP-adressen worden dus beide gebruikt om te adresseren, waardoor het misschien lijkt alsof we óf een IP-adres, óf een MAC-adres kunnen gebruiken. We hebben ze echter allebei nodig:
- Het voordeel van MAC-adressen is dat je ze per definitie al hebt, want ze hangen vast aan de hardware. Enkel MAC-adressen gebruiken is niet handig: zo is er geen netwerk- en hostdeel, wat het moeilijk zou maken deze te gebruiken op het wereldwijde Internet. Een MAC-adres is dan ook enkel “geldig” binnen één netwerk.
- Het voordeel van IP-adressen is dat je efficiënter netwerken kan indelen: zo vat 10.1.0.0/16 één netwerk samen met meer 65000 hosts! Het nadeel is dat je IP-adressen moet instellen: of statisch, of dynamisch.
3.3.2 ARP
bewerkenZowel IP, als MAC zijn dus nodig in een netwerk. Toch betekent dit niet dat we ze automatisch allebei al weten. Stel dat we een webserver in ons LAN-netwerk draaien (bv. als onderdeel van een NAS). Als we deze willen bezoeken zal het IP-adres gebruikt worden (bv. doordat we het rechtstreeks intypen in de adresbalk van de browser of via DNS). Deze aanvraag komt in principe eerst toe bij een switch, die echter enkel MAC-adressen "begrijpt", maar geen IP-adressen. Als een pc wil dat zijn pakketje toekomt bij de ontvanger, zal hij dus eerst het MAC-adres van deze ontvanger moeten achterhalen.
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 netwerkkoppelingen IP-MAC meestal tijdelijk lokaal gecachet.
Een voorbeeld van een ARP-aanvraag:
0000 ff ff ff ff ff ff|08 00 27 75 b0 77|08 06 00 01 08 00 06 04 00 01|08 00 27 75 b0 77|c0 a8 38 65 0020 00 00 00 00 00 00|c0 a8 38 03|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
De host met MAC-adres 08:00:27:75:b0:77 doet een broadcast (ff:ff:ff:ff:ff:ff) waarbij de vraag wordt gesteld wie het IP-adres 192.168.56.3 (0xc0a83803
) heeft. Het antwoord moet gestuurd worden naar het MAC-adres 08:00:27:75:b0:77, op het IP-adres 192.168.56.101 (0xc0a83865
). Samengevat: Wie heeft 192.168.56.3? Vertel het aan 08:00:27:75:b0:77 = 192.168.56.101.
Door het versturen van ARP-pakketten met vervalste MAC-adressen (ARP spoofing) is het als hacker mogelijk om pakketjes te ontvangen, die niet voor hem bedoeld zijn (een man-in-the-middle-aanval). Een andere techniek is het versturen van een overvloed aan ARP-pakketten met willekeurige MAC-adressen (MAC flooding). Bij een aantal switches leidt dit ertoe dat ze in een soort van hub-modus veranderen: pakketjes worden dan naar alle poorten verstuurd. Een aanvaller kan vervolgens middels een packet sniffer al het lokale netwerkverkeer aftappen.[19]
Alhoewel ARP hier besproken wordt bij de internetlaag, behoort het strikt gezien tot de linklaag! Een ARP-aanvraag wordt namelijk niet voorbij een router gestuurd, want het is de switch die op basis van de MAC-adressen ARP-aanvragen en ARP-antwoorden bezorgt. Het is in dit geval geplaatst bij de internetlaag, omdat kennis van MAC en IP nodig is om het te begrijpen.
4 Transportlaag
bewerken4.1 TCP
bewerkenTCP is een transportprotocol dat bovenop IP werkt. TCP heeft als kenmerken dat het gegevens in een datastroom kan versturen, waarbij de garantie wordt geleverd dat de gegevens aankomen zoals ze verstuurd werden, en eventuele communicatiefouten (zowel in de gegevens zelf als in de volgorde van de gegevens) kunnen worden opgevangen. TCP gebruikt men dus primair als de overdracht zeker en compleet moet zijn (o.a. bij bestandsoverdracht). Men heeft het over een betrouwbaar protocol.
4.2 UDP
bewerkenEen ander transportprotocol is UDP, wat veel wordt gebruikt bij toepassingen waar het snel overdragen van de gegevens en een korte reactietijd zeer belangrijk is, en het minder erg is dat er gegevens verloren kunnen gaan. Dit is bv. bij telefonie, videoconferencing, DNS of het online spelen van actievolle spellen, zoals first person shooters.
4.3 Poorten
bewerkenEen IP-adres adresseert een host, maar wat als er op die host meerdere netwerkdiensten actief zijn? Hoe weet deze host aan welk programma hij welke info moet bezorgen? Hiervoor worden poortnummers gebruikt: deze adresseren een netwerkdienst op een host.
Stel je een bedrijf voor met verschillende bureaus, waar dan de afzonderlijke diensten zitten. Het adres van dat volledig bedrijf zou dan zogezegd het IP-adres zijn, terwijl ieder bureau dan zijn eigen lokaalnummer (≈ poortnummer) zou hebben. Ieder bureau biedt namelijk een aparte dienst aan (verkoop, klantendienst, marketing,...).
Een netwerkpoort komt dan als extra info bij het IP-adres van de verzender en als extra info bij het IP-adres van de ontvanger. Dit poortnummer bestaat uit 16 bits en dus zijn er 65536 (216) poorten beschikbaar voor TCP en 65536 poorten voor UDP. De meest bekende serverpoorten lopen van 0 tot 1023. Clients kiezen vaak een willekeurig poortnummer boven 1024.
Denk bv. aan een client met browser. De browser zal een willekeurige poort kiezen voor zichzelf als verzender (bv 46277) en voor de webserver poort 80 (HTTP) of 443 (HTTPS). Op deze client kunnen tezelfdertijd andere berichtendienst actief zijn (Discord, Teams, ...) die ook hun eigen poorten hebben.
Enkele voorbeelden van TCP- en UDP-poorten, waarbij poorten 0 tot 1023 bekend staan als systeempoorten, de andere als gebruikerspoorten:
poort | protocol | omschrijving |
---|---|---|
20 | TCP | FTP, het datakanaal |
21 | TCP | FTP, het controlekanaal |
22 | TCP | SSH: Secure Shell of SFTP |
53 | UDP, TCP | DNS |
67 | UDP | DHCP Server |
68 | UDP | DHCP Client |
80 | TCP | HTTP |
443 | TCP | HTTPS |
3389 | TCP | RDP, om een pc op afstand overnemen (remote desktop protocol). |
8123 | TCP | Home Assistant home automation. |
Een voorbeeld vanuit Wireshark:
0000 00 1b bf 89 a3 50 00 24 1d c1 71 e6 08 00 45 00 04 30 5c bd 40 00 40 06 e7 1e c0 a8 01 02|4a 7d 0020 e6 c4|b4 c5|00 50 7d 1c 56 57 19 1d 1d 1e ...
Hieruit kan je enkele zaken afleiden:
- Uit de inkapseling blijkt dat TCP wordt gebruikt, omdat
06
in header wordt gebruikt. Bij UDP zou er11
staan. - Op een client-pc met IP-adres 192.168.1.2 (=
0xc0a80102
) wordt gesurft met een browser (bv. Firefox of Chrome). Deze client-pc kiest als bronpoort 46277 (=0xb4c5
). - We kunnen ervan uitgaan dat het gaat om 'surfen', daar de doelpoort 80 (=
0x0050
) is. De client gaat ervan uit dat er een webserver (bv. Apache of IIS) luistert op die poort voor binnenkomende aanvragen. Het server IP-adres is 74.125.230.196 (0x4a7de6c4
). - Als de webserver een antwoord terugstuurt, zal hij in principe als ontvanger IP-adres 192.168.1.2 gebruiken, met als poort 46277.[20]
Poorten kan je ook zelf kiezen, maar in dat geval moet je bij het programma de poort expliciet opgeven. Zo wordt voor een webconfiguratie van je printer op Linux-systemen (met als achterliggende software CUPS) vaak poort 631 i.p.v. poort 80 gebruikt. Om toegang te krijgen is dan niet https://localhost nodig (die "achter de schermen" poort 80 gebruikt), maar wel https://localhost:631/. Als je zelf poorten kiest, moet je altijd opletten dat er geen conflict is met een ander programma op jouw systeem, dat ook die poort gebruikt.
Poorten kan je in een firewall gebruiken om je netwerk te beveiligen. Als je bij een computer instelt dat bij inkomende verbindingen poorten 80 en 443 geblokkeerd worden, zal je op deze computer wel kunnen surfen. Je zal dan echter zelf geen webserver kunnen draaien, tenzij je webserver draait op een niet-standaard poort.
4.4 Port forwarding
bewerkenNAT lost dus het tekort aan IPv4-adressen op, omdat zo meerdere nodes samen één IPv4-adres kunnen delen. Deze methode kan echter voor problemen zorgen.
Stel bv. dat de pc A een webserver heeft draaien en dat pc B deze wil kunnen bereiken. Naar https://192.168.1.1:80
kan pc B niet surfen, want dat is zijn eigen IP-adres, terwijl hij de webserver op pc A wil bereiken. Het wijzigen van het IP-adres van A haalt niets uit, want het zal een privaat IP-adres blijven en dus niet vindbaar (=routeerbaar) via het Internet. Surfen naar https://91.179.77.105:80
(een publiek IP) zal ook niet lukken: op router RA draait de webserver niet.
De gebruiker kan in router RA wel port forwarding instellen. Bijvoorbeeld: router RA, als je op je publieke interface een aanvraag krijgt op poort 3005, dan wil ik dat je dit doorstuurt naar 192.168.1.1 op poort 80. Als pc B dan surft naar https://91.179.77.105:3005
, dan zal hij uiteindelijk terechtkomen op pc A, op poort 80. Deze portforwarding moet ingesteld worden in router RA en zou je schematisch als volgt kunnen weergeven:
LAN-kant router | WAN-kant router | ||
---|---|---|---|
IP | Poort | IP | Poort |
192.168.1.1 | 80 | 91.179.77.105 | 3005 |
Een andere mogelijkheid bij zo'n peer-to-peer situatie en private adressen is om gebruik te maken van een derde, niet ge-NAT-te client die als doorgeefstation dienst doet (zoals bij Skype).
5 Applicatielaag
bewerken5.1 DNS
bewerkenHet Domain Name System (DNS) is het netwerkprotocol dat gebruikt wordt om namen van internetdomeinen naar IP-adressen te vertalen en omgekeerd. Wij als mens zijn namelijk beter in het onthouden van namen (bv. mcdonalds.com
of mc-donalds.com
), terwijl een computer liever de vaste vorm heeft van cijfers (bv. 44.208.147.61
of 204.11.56.48
wat altijd 32 bits lang zal zijn). DNS zorgt dan voor de "vertaling" tussen beide.
DNS is een client-serversysteem: een opvrager (client) gebruikt het DNS-protocol om aan een aanbieder (DNS-server) een naam of adres op te vragen, waarop de server een antwoord terugstuurt. De naamgeving is hiërarchisch opgezet: bij bv. nl.wikipedia.org
is wikipedia.org
het domein en is nl.
een subdomein van wikipedia.org
. De DNS-server van wikipedia.org
kan dus ook en.
, de.
of andere subdomeinen toevoegen.
Standaard zal een DNS-aanvraag aan de ingestelde DNS-server gevraagd worden. Het kan dat deze het antwoord niet weet, maar dan kan hij het vragen aan een andere DNS-server.
Korte storing Googles dns-server leidt tot dip in AMS-IX-verkeer
Dat DNS een belangrijk protocol is bleek toen er op 23 mei 2014 een storing was op Googles dns-server. Daardoor waren heel wat diensten die van deze dns-server gebruikmaakten, onbereikbaar. In de realtimegrafieken van het internetknooppunt AMS-IX is die dip omstreeks 14.00 uur duidelijk zichtbaar.
(nl) Korte storing Googles dns-server leidt tot dip in AMS-IX-verkeer. tweakers.net (2014-05-23).
DNS geschiedenis
bewerkenAls mens zijn we niet zo bijzonder goed in cijfers. Zo kennen we maar weinig telefoonnummers van buiten, maar via een naam hebben we de juiste persoon voor ogen. Dan gebruiken we een adresboek om die persoon te contacteren. Bij het internet is het niet anders. We zullen niet surfen naar https://91.198.174.192, maar naar https://nl.wikibooks.org.
In de begindagen van het Internet waren er zo weinig domeinnamen en IP-adressen, dat men al deze koppelingen in een hosts-bestand bijhield. Tot op de dag van vandaag bestaat dit persoonlijk “internettelefoonboek” nog steeds in de meeste besturingssystemen. Vaak heeft het al standaard bepaalde koppelingen (bv. de localhost), maar je kan er koppelingen IP-adres en domeinnaam aan toevoegen. Bij Windows kan je dit vinden bij C:\Windows\System32\drivers\etc\hosts
en bij Linux bij /etc/hosts
. Een voorbeeld bij Linux:
127.0.0.1 localhost 127.0.1.1 juxta # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Door de groei van het internet bleek al begin de jaren '80 dat zo'n "internettelefoonboek" niet álle domeinnamen kan bevatten. Dus is er een systeem uitgewerkt die een vertaling doet van domeinnamen (bv. nl.wikibooks.org) naar IP-adressen. Dit systeem is DNS.[21] Als we dus surfen naar https://nl.wikibooks.org, dan zal het besturingssysteem achter de schermen en via DNS het bijhorende IP-adres te weten komen (nadat het hosts-bestand is gecontroleerd).
Eén mega-groot, centraal “internettelefoonboek” bestaat niet. Het DNS-systeem is een verspreid, gedecentraliseerd systeem, met verschillende DNS-servers op het internet. In eerste instantie wordt een aanvraag gedaan aan de pc zelf. Als deze het niet weet wordt het gevraagd aan de router. Als deze het vervolgens niet weet is de DNS-server van de ISP aan de beurt, enz. Zo ontstaat een ketting van DNS-aanvragen, totdat het juiste IP-adres dat hoort bij de gevraagde domeinnaam achterhaald kan worden.
DSN registrar
bewerkenAls je als bedrijf/instelling/persoon een eigen domeinnaam wenst, moet je een registrar contacteren. Dit bedrijf zal de nodige administratie doen, zodat je een domeinnaam kan huren. Dan wordt de koppeling tussen de domeinnaam en het (vaak statisch) IP-adres gelegd.
Domeinnamen kunnen komen te vervallen (bv. omdat de eigenaar deze niet meer wenst of niet betaalt). Op het Internet blijven vele links vaak staan, die dus niet meer zullen werken. Iemand kan deze vrije domeinnaam echter terug aanvragen/huren en kan dus bepaalde links terug laten werken. Deze persoon kan nu volledig kiezen wat die inhoud is, wat totaal iets anders kan zijn dan de oorspronkelijke website. Ook malware kan langs deze weg verspreid worden. Denk bv. aan digitale kranten die inhoud embedden, die later wijzigt. Enkele voorbeelden:
- Ethisch hacker Inti De Ceukelaire zorgt ervoor dat een link uit een tweet van president Trump verwees naar een Aalsters carnavallied.[22]
- Nieuwssites tonen porno bij oude artikelen door verlopen domein van Vidme.[23]
- Burgerservicenummers van miljoenen Nederlanders online te zien door verlopen domeinnaam.[24]
- Jeugdzorg liet medische dossiers uitlekken via verlopen domeinnaam.[25]
- Politierapporten liggen op straat door verlopen domeinnamen.[26]
DNS blocking
bewerkenOm binnen bedrijven/scholen/landen bepaalde websites onvindbaar te maken, kan gebruik gemaakt worden van DNS blocking. Zo kan de DNS-server op school bij het surfen naar https://hoeleerikspieken.net weigeren om een IP te geven. Voor de eindgebruiker zal het lijken alsof de website niet bestaat. Als hij thuis zou kijken en de DNS-server van zijn ISP blokkeert deze niet, dan kan hij daar wel gewoon naartoe surfen. Mocht je dan op school rechtstreeks surfen naar het IP-adres van hoeleerikspieken.net, dan is DNS niet nodig en kan zo de bijhorende DNS-blokkade omzeild worden. Bovendien kan je - mits administratorrechten - een andere DNS-server instellen, die die blokkade niet heeft. Het gebruik van énkel DNS blocking is dus geen sluitende manier om toegang tot websites te verbieden.
Turkije blokkeert toegang tot Twitter
Turkije heeft een Twitter-blokkade ingesteld nadat de premier van het land gezegd zou hebben dat hij Twitter zou 'uitroeien'. De blokkade was op bevel van meerdere rechtbanken ingesteld nadat Twitter geweigerd zou hebben bepaalde links te verwijderen. Alle Turkse internetproviders werkten mee aan de blokkade.
De blokkade was relatief eenvoudig te omzeilen: het gaat om een dns-blokkade, dus het instellen van een alternatieve dns-server van bijvoorbeeld Google of OpenDNS is voldoende om de dienst toch te gebruiken. Daarnaast gebruikten Turkse twitteraars vpn-verbindingen om de blokkade te omzeilen. De blokkade van Twitter blijkt zelfs een averechts effect te hebben (het Streisandeffect): het aantal tweets van Turkse gebruikers lag 138 procent hoger dan in dezelfde periode voor de blokkade.
Later was Turkije overgegaan tot het blokkeren van het IP-adres van Twitter. Ondanks de blokkade bleef het mogelijk om via een vpn of Tor de Twitter-site te bezoeken.
(nl) Turkije blokkeert toegang tot Twitter. tweakers.net (2014-03-21). (nl) 'Twitter-gebruik in Turkije neemt toe na blokkade'. tweakers.net (2014-03-21). (nl) 'Turkije blokkeert Twitter op ip-niveau'. tweakers.net (2014-03-23).
DNS spoofing
bewerkenBij DNS spoofing worden antwoorden van een DNS-server door een hacker gewijzigd. Stel dat een hacker erin slaagt om bij een DNS-request van https://www.facebook.com niet het echte IP terug te geven, maar een IP van zijn server. Dan kan hij op die server een website draaien die een exacte kopie lijkt van Facebook. De eindgebruiker zal inloggen (in de adresbalk ziet hij namelijk netjes https://www.facebook.com staan), maar zo kan de hacker gemakkelijk het wachtwoord achterhalen. Er bestaan mogelijkheden om DNS veiliger te maken[27], maar dit behandelen valt buiten het kader van dit boek.
DDOS DNS attack
bewerkenI.p.v. de DNS-server te hacken, kan je die ook lastig vallen met zodanig veel DNS-aanvragen op een heel korte tijd, dat hij ze niet allemaal kan verwerken én zelfs neergaat. Hierdoor kunnen netwerkapparaten het IP-adres niet meer achterhalen van een domein en vinden ze dus ook 'de andere kant' niet meer. Het is alsof alle wegen er nog zijn, maar dat iemand alle verkeersborden heeft weggenomen. Uiteraard: als deze vragen afkomstig zijn van één IP-adres valt dit IP-adres snel te blokkeren, maar niet als dit van verschillende IP-adressen komt. Hackersgroeperingen hebben zo gehackte netwerkapparaten in handen (=een botnet) die ze zo'n aanvragen kunnen laten uitvoeren. En met het stijgend aantal IoT-toestellen kunnen dat er heel wat zijn. Het geheel noemt men dan een DDOS DNS attack (DDOS=Distributed Denial of Service), wat uiteraard niet is toegestaan.[28]
De destructiviteit van ddos-aanvallen
Een populaire manier van ddos-aanval verloopt via DNS. Zo was er in oktober 2016 een grote DDOS DNS-attack op Dyn, een belangrijke DNS server provider. Dit verhinderde enkele uren lang dat gebruikers aan de oostkust van de VS terechtkonden op populaire websites als Twitter, Reddit, Soundcloud en GitHub. De problemen hielden al met al ongeveer twee uur aan.[29]
(nl) De destructiviteit van ddos-aanvallen. tweakers.net (2020-10-03).
Nuance: er waren geen drie miljoen Java-tandenborstels die websites ddos'ten
DDOS-aanvallen zijn behoorlijk destructief en heel eenvoudig op te zetten, maar je moet ook niet alles geloven van wat op het internet staat. Zo was bleek het verhaal dat drie miljoen Java-tandenborstels websites konden ddos'en niet waar. Wat wel een privacy probleem kan zijn, is dat sommige tandenborstels via een niet-geëncrypteerde Bluetooth-verbinding informatie doorsturen.
(nl) Nuance: er waren geen drie miljoen Java-tandenborstels die websites ddos'ten. tweakers.net (2024-02-08).
Dynamic DNS
bewerkenStel dat je van buitenaf jouw thuisnetwerk wenst te bereiken. Van je provider krijg je een dynamisch IP-adres, dus zou het kunnen dat het IP-adres al is veranderd wanneer je het wenst te gebruiken. Een mogelijkheid is dan dat je een account via diensten zoals No-IP of Dyn instelt. Je krijgt dan een domeinnaam zoals naam.hopto.org
of naam.ddns.net
. Er moet dan nog een koppeling zijn met het publiek IP-adres. Hiervoor draait een dienst op jouw netwerk (bv. op jouw router) die regelmatig controleert of het dynamisch IP niet is veranderd. Is dat het geval, dan wordt hopto.org
of ddns.net
op de hoogte gebracht. Dit systeem is een onderdeel van Dynamic DNS, kortweg DDNS.
5.2 DHCP
bewerkenDHCP is een protocol dat netwerkbeheerders toelaat om de verdeling van IP-nummers centraal te beheren en automatisch toe te kennen aan hosts die daar om vragen. Zonder gebruik van DHCP moet elk IP-nummer manueel ingevoerd worden op elke client-computer. Ga je met jouw laptop naar een ander netwerk, dan zou je dit opnieuw manueel moeten veranderen (het netwerkdeel moet kloppen én het geheel moet uniek zijn).
Aangezien een computer in een netwerk niet per definitie weet waar de DHCP-server zich bevindt, zal hij een IP-aanvraag via een broadcast doen. De enige die op deze broadcast zal antwoorden, is de DHCP-server (vaak als onderdeel van de router of modem bij de mensen thuis).
Het belang van DHCP en IP
De gewone gebruiker heeft geen weet van IP, maar op zondag 3 februari 2013 werd het belang ervan pijnlijk duidelijk voor ruim de helft van de klanten van Telenet: geen internet, telefoon of digitale televisie die werkte zoals het hoort. Oorzaak van de storing zouden falende dhcp-servers zijn: de servers deelden niet langer IP-adressen uit waardoor alle toepassingen die gebruik maken van een kabelmodem niet langer verbinding konden maken. Telenet zou vrij snel de oorzaak van de verbindingsproblemen hebben gevonden, maar de provider zou enige tijd nodig hebben gehad om tests uit te voeren. Een ploeg van honderd man zou bezig zijn geweest om de problemen op te lossen. Bij sommige klanten waren er defecte modems, wellicht doordat deze klanten hun modem teveel hebben gereset.
(nl) Telenet herstart dhcp-servers na storing in geheel Vlaanderen. tweakers.net (2013-02-03). (nl) Opvallend veel meldingen van kapotte modems bij Telenet. De STandaard (2013-02-04).
5.3 Zeroconf
bewerkenZeroconf of Zero Configuration Networking is een reeks technieken die toelaat een bruikbaar IP-netwerk te maken zonder bijkomende configuratie of speciale servers. Hierdoor kunnen gebruikers, zonder voorkennis, toch computers, netwerkprinters en andere toestellen aan elkaar koppelen en laten samenwerken. Zonder Zeroconf moet de gebruiker de nodige kennis hebben om speciale servers te installeren, zoals een DHCP-server of een DNS-server, of moet elke computer apart correct geconfigureerd worden.
Zeroconf bestaat binnen een netwerk(segment) uit drie principes:
- Netwerkadressen uitdelen
- Hostnamen uitdelen aan apparaten
- Automatisch vinden van services (bv. printer)
I.v.m. 'netwerkadressen uitdelen' zal een computer die ingesteld is op DHCP, maar terechtkomt in een netwerk zonder DHCP-server of waarvan de DHCP-server niet bereikbaar is, zelf een link-local adres nemen (Microsoft heeft het over APIPA = Automatic Private IP Addressing).
Om duidelijk te maken dat het om een link-local adres gaat, wordt een apart adresblok gebruikt: 169.254.0.0/16
. Het besturingssysteem kiest uit dit blok een willekeurig IP-adres, dat met grote kans uniek is. Belangrijke punten:
- Ze zijn bedoeld voor lokale communicatie binnen een netwerksegment. Ze zijn niet ontworpen om rechtstreeks toegang te bieden tot internetbronnen, omdat ze niet worden gerouteerd op internet.
- Apparaten met zo'n adres kunnen geen DNS-resolutie uitvoeren om domeinnamen om te zetten in IP-adressen. Dit betekent dat ze geen toegang hebben tot externe websites via domeinnamen.
DHCP ingeschakeld . . . . . . . . : ja Autom. configuratie ingeschakeld : ja IPv4-adres. . . . . . . . . . . . : 169.254.25.130(voorkeur) Subnetmasker. . . . . . . . . . . : 255.255.0.0 Standaardgateway. . . . . . . . . : DNS-servers. . . . . . . . . . . :
Alhoewel link-local adressen handig zijn voor lokale communicatie tussen apparaten in hetzelfde netwerksegment, bieden ze beperkte functionaliteit aan buiten dat segment. Dus als je als netwerkadmin onverwacht een 169.254.0.0/16
-adres ziet, dan is het meestal een teken dat je op zoek moet naar de oorzaak.
Microsoft Fixes Windows 10 Issue That Knocked People off the Internet
Microsoft had een update uitgerold die de CDPSVC service liet crashen op Windows 10, waardoor hosts geen IP-adres meer konden ontvangen via DHCP. Hierop kende Windows een link-local IP-adres toe. Pas een paar dagen later kwam een oplossing voor dit probleem. (en) Microsoft Fixes Windows 10 Issue That Knocked People off the Internet. bleepingcomputer.com (2016-12-14).
6 Wireshark
bewerkenWe bekijken enkele concrete captures van frames in WireShark waar je het netwerklagenmodel goed "ziet zitten" in de stroom van bytes. In de eerste lichtgrijze kolom staat het eerste hexadecimale adres van de byte die volgt, te tellen vanaf 0. Voor de interpretatie moet je hexadecimale getallen soms omzetten naar zijn decimale waarde, soms moet je op bitniveau kijken, soms moet je een tekstcodering zoals UTF-8 gebruiken, soms is het nog iets anders. Om de breedte te benutten nemen we twee rijen uit Wireshark samen naar één. De legende is: MAC-adres doel
; MAC-adres bron
; adresseringsprotocol
(IPv4/IPv6) ; TTL/hop limit ; transportprotocol (TCP/UDP); IP-adres bron ; IP-adres doel
; bronpoort
; doelpoort
.
Merk op dat een IPv4-verzenderadres áltijd zit van byte 30 tot 33: handig voor netwerkcomponenten om het altijd daar te kunnen terugvinden. Het IPv6-verzenderadres kan daar niet zitten, omdat eerst het ontvangeradres komt dat langer is dan een IPv4-adres. Een router die enkel IPv4 begrijpt, kan dus niet zomaar ook IPv6 correct verwerken.
HTTP
bewerkenEen capture via de display filter HTTP
0000 f0 7d 68 7a 64 fc 00 1a a0 35 30 40 08 00|45 00 01 8c 63 77 40 00 40 06 0a 3d c0 a8 00 65 5b c6 0020 ae e4|d6 47 00 50 f1 30 6e 2d 54 7e 6d cb 80 18 01 c9 cd 36 00 00 01 01 08 0a 00 01 0d 5d 9b 73 0040 d7 3f|47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a 48 6f 73 74 3a 20 77 77 77 2e 77 69 6b 69 0060 62 6f 6f 6b 73 2e 6f 72 67 0d 0a 55 73 65 72...
Fysieke laag
het frame, 410 bytes on wire.
Linklaag (nl. Ethernet II)
f0 7d 68 7a 64 fc
= MAC-adres doel = ontvanger (destination)00 1a a0 35 30 40
= MAC-adres bron = verzender (source) 08 00 = inkapseling, nl. IPv4 volgt
als adresseringsprotocol
Internetlaag (nl. IPv4)
45 00 01 8c 63 77 = versie, headerlengte, … 40 hexadecimaal is 64 decimaal = TTL 06 = inkapseling, nl. TCP volgt als transportprotocol c0 a8 01 02 = 192.168.0.101 = IP-adres bron (source)5b c6 ae e4
= 91.198.174.228 = IP-adres doel (destination)
Transportlaag (nl. TCP)
d6 47
=54855
= bronpoort van de verzender (source) 00 50 = 80 = doelpoort van de ontvanger (destination) = inkapseling, nl. HTTP als applicatieprotocol f1 30 … 3f = sequence number, acknowledgment, …
Applicatielaag (nl. HTTP)
47 45 54, UTF-8 voor de letters GET, nl. het opvragen van een webpagina 77 77 77 2e 77 69 6b 69 62 6f 6f 6b 73 2e 6f 72 67 w w w . w i k i b o o k s . o r g
DHCP
bewerkenEen capture via de display filter bootp (=dhcp) met een ‘DHCP Discover – Transaction ID 0x7920f73a’
0000 ff ff ff ff ff ff 08 00 27 75 b0 77 08 00|45 10 01 48 00 00 00 00 80 11 39 96 00 00 00 00 ff ff 0020 ff ff|00 44 00 43 01 34 86 32|01 01 06 00 79 20 f7 3a 00 00 00 00 00 00 00 00 00 00 00 00 00...
Fysieke laag
het frame, 342 bytes on wire.
Linklaag (nl. Ethernet II)
ff ff ff ff ff ff
= MAC-adres doel = ontvanger (destination) = iedereen (broadcast)08 00 27 75 b0 77
= MAC-adres bron = verzender (source) 08 00 = inkapseling, nl. IPv4 volgt als adresseringsprotocol
Internetlaag (nl. IPv4)
45 10 01 48 00 00 00 00 = versie, header lengte, … 80 hexadecimaal is 128 decimaal = TTL 11 = inkapseling, nl. UDP volgt als transportprotocol00
00 00 00
= 0.0.0.0 = IP-adres bron (source). Het is logisch dat dit 0 is, want we het gaat om ‘DHCP discover’ff ff ff ff
= 255.255.255.255 = IP-adres doel (destination) = iedereen
Transportlaag (nl. UDP)
00 44
=68
= bronpoort van de verzender (source) = inkapseling, nl. DHCP als applicatieprotocol00 43
= 67 = doelpoort van de ontvanger (destination) = inkapseling, nl. DHCP als applicatieprotocol 01 34 86 32 = lengte, checksum, ...
Applicatielaag (nl. DHCP)
79 20 f7 3a, transaction id 00 00 00 00, your (client) IP address
DNS
bewerkenEen capture via de display filter dns met een ‘Standard query 0x91f8 A www.wikibooks.org’
0000 f0 7d 68 7a 64 fc 00 1a a0 35 30 40 08 00|45 00 00 3f 00 00 40 00 40 11 b7 fa c0 a8 00 65 c0 a8 0020 00 fe|fc 36 00 35 00 2b 82 f0|91 f8 01 00 00 01 00 00 00 00 00 00 03 77 77 77 09 77 69 6b 69 62 0040 6f 6f 6b 73 03 6f 72 67 00 00 01 00 01
Fysieke laag
het frame, 77 bytes on wire.
Linklaag (nl. Ethernet II)
f0 7d 68 7a 64 fc
= MAC-adres doel = ontvanger (destination) = iedereen (broadcast)00 1a a0 35 30 40
= MAC-adres bron = verzender (source) 08 00 = inkapseling, nl. IPv4 volgt als adresseringsprotocol
Internetlaag (nl. IPv4)
45 00 00 3f 00 00 40 00 = versie, header lengte, … 40 hexadecimaal is 64 decimaal = TTL 11 = inkapseling, nl. UDP volgt als transportprotocolc0 a8 00 65
= 192.168.0.101 = IP-adres bron (source).c0 a8
00 fe
= 192.168.0.254 = IP-adres doel (destination) = de DNS-server waaraan de vraag wordt gesteld
Transportlaag (nl. UDP)
fc 36
=64566
= bronpoort van de verzender (source)00 35
= 53 = doelpoort van de ontvanger (destination) = inkapseling, nl. DNS als applicatieprotocol 00 2b 82 f0 = lengte, checksum, ...
Applicatielaag (nl. DNS)
77 77 77 09 77 69 6b 69 62 6f 6f 6b 73 03 6f 72 67 w w w w i k i b o o k s o r g
ICMP
bewerkenEen capture via de display filter icmpv6 met een ‘Echo (ping) request id=0x0d08, seq=1, hop limit=64 (reply in 55)’
0000 d4 21 22 76 5b 78 00 21 6a 2d 3b 8e 86 dd|60 00 00 00 00 40 3a 40 20 03 00 50 aa 10 42 43 02 21 0020 6a ff fe 2d 3b 8e 2a 02 02 e0 03 fe 10 01 03 02 00 00 00 00 00 00|80 00 ca 0b 0d 08 00 01 c8 dd 0040 3f 55 b9 d3 04 00 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20…
Fysieke laag
het frame, 118 bytes on wire.
Linklaag (nl. Ethernet II)
d4 21 22 76 5b 78
= MAC-adres doel = ontvanger (destination)00 21 6a 2d 3b 8e
= MAC-adres bron = verzender (source)86 dd
= inkapseling, nl. IPv6 volgt als adresseringsprotocol (IPv4 zou08 00
zijn)
Internetlaag (nl. IPv6)
60 00 00 00 00 40 3a = versie, traffic class, flow label, …40
hexadecimaal is 64 decimaal = TTL = hop limit20 03 00 50 aa 10 42 43 02 21 6a ff fe 2d 3b 8e
= IPv6-adres bron (source).2a 02 02 e0 03 fe 10 01 03 02 00 00 00 00 00 00
= IPv6-adres doel (destination) = 2a02:2e0:3fe:1001:302::
ICMPv6
0d 08 = request id 00 01 = sequence
ICMP (het protocol dat o.a. ping gebruikt) is een onderdeel van het Interprotocol. Vandaar is er geen transport- of applicatielaag aanwezig. Merk op dat het hier gaat om ICMPv6 gaat (86 dd
). Bij ICMPv4 zou het gaan om kortere 32-bit IPv4-adressen, maar het principe is gelijklopend.
- ↑ Leerplan Informatica- en communicatiewetenschappen B + S - 3de graad - D-finaliteit
- ↑ Meer informatie op leerplan D/2015/7841/003
- ↑ Er is al een nieuwe standaard omdat wordt verwacht dat de unieke nummering ooit 'op' zal raken.
- ↑ Deze 24 bits zijn de OUI of de Organizationally unique identifier.
- ↑ Er zijn switches die zowel MAC als IP begrijpen, maar dit valt buiten het kader van deze cursus.
- ↑ Als een switch een pakketje doorstuurt naar een router, zal deze router het IP-adres dat ook in dat pakketje zit gebruiken om te routeren.
- ↑ YouTube: Traceren van een gestolen computer met behulp van het MAC-adres
- ↑ Bv. in Gnome NetworkManager 1.2: zie NetworkManger and tracking protection in Wi-Fi networks.
- ↑ (nl) ipv4-blocks zijn toegewezen, door Joost Schellevis, www.tweakers.net, 3 februari 2011
- ↑ (nl) RIPE NCC heeft zijn laatste ipv4-adressen uitgedeeld, door Joris Jansen, www.tweakers.net, 25 november 2019
- ↑ Zie ripe.net. (nl) Bron: forumbericht op 9lives.be, nl. Gezocht: IP range belgie
- ↑ (en) UDP hole punching op de Engelstalige Wikipedia. NAT to NAT client-server communication, beschrijving van de pwnat tool van Samy Kamkar
- ↑ Bron: Deel Tele2-klanten een week lang kwetsbaar
- ↑ Wereld IPv6 Dag op 8 juni 2011, Stichting IPv6 Nederland
- ↑ World IPv6 Launch
- ↑ Tweakers.net: Telenet begint met uitrol ipv6
- ↑ Ipv6 traffiek van AMS-IX in grafieken
- ↑ Wereldwijd IPv6-gebruik bij Google gebruikers.
- ↑ Zie bv. deze vermelding op de wiki van Wireshark.
- ↑ In principe, omdat Network Adress Translation nog kan zorgen voor een extra stap.
- ↑ DNS bestaat al sinds 1983 en ondertussen kan je ook het DNS-verkeer versleutelen. Meer info op Tweakers.net: Dns-over-https: vloek of zegen?
- ↑ Zie Knack.be: Vlaming laat Trump "Oilsjters" carnavalsliedje tweeten over Russische prostituees
- ↑ Zie Tweakers.net: Nieuwssites tonen porno bij oude artikelen door verlopen domein van Vidme
- ↑ Zie Tweakers.net: RTL: bsn's van miljoenen Nederlanders online te zien door verlopen domeinnaam
- ↑ Zie Tweakers.net: Jeugdzorg liet medische dossiers uitlekken via verlopen domeinnaam
- ↑ Zie Tweakers.net: Politierapporten liggen op straat door verlopen domeinnamen
- ↑ Tweakers.net: "Dnssec: voor het laatste onveilige protocol"
- ↑ Zie bv. het Tweakers.net artikel Nederlandse politie arresteert verdachte op verdenking uitvoeren ddos-aanvallen van 5 februari 2018.
- ↑ Ook Arstechica schrijft in een artikel Double-dip Internet-of-Things botnet attack felt across the Internet meer over deze DDOS DNS-aanval. In hun related stories kan je nalezen dat dit niet de eerste keer is.