Network Address Translation en IPv4

Network Address Translation en IPv4

Sinds juni 2012 biedt de zesde versie van het internetprotocol IPv6 een oplossing voor de schaarste aan IP-adressen. Maar de overstap naar het nieuwe protocol duurt lang.

Volgens statistieken van Google gebruikte in oktober 2016 wereldwijd meer dan 85 procent van de internetgebruikers nog steeds het verouderde protocol IPv4. Maar de 4,3 miljard beschikbare adressen zijn niet toereikend voor alle apparaten en toestellen die verbinding met het internet kunnen maken. Niet alleen computers, tablets en smartphones hebben toegang tot het internet nodig. Als onderdeel van het Internet of Things (IoT) worden zelfs koelkasten, weegschalen en koffiezetapparaten slimme netwerkapparatuur.

IPv4 compenseerde de schaarste al aan het begin van de jaren negentig door onderscheid te maken tussen privé- en openbare adresruimtes. Op lokale netwerken (LAN’s) worden apparaten met toegang tot het internet met een privé-IP-adres lokaal geadresseerd en door een gemeenschappelijk openbaar IP-adres met het internet verbonden. De belangrijkste poort tussen een openbaar en privé-adresgedeelte is de router. Hier vindt de Network Address Translation – oftewel NAT – plaats.


Wat is NAT

Wat is NAT?

De afkorting NAT staat voor Network Address Translation, een adresvertaling tussen twee netwerken die meestal in de router plaatsvindt. Het doel van deze techniek is het verbinden van lokale netwerken met het internet. Er wordt onderscheid gemaakt tussen twee soorten NAT: Source NAT (SNAT) en Destination NAT (DNAT).


Source NAT

Source NAT

Privé-gebruikers hebben meestal te maken met Source NAT. Deze techniek wordt bij thuis- en bedrijfsnetwerken gebruikt, als netwerkapparatuur met een privé-IPv4-adres via een openbaar IP-adres toegang tot het internet krijgt. Maar in normaal taalgebruik wordt de term NAT niet altijd op de juiste manier gebruikt.


Uitleg: NAT vs. PAT

Een belangrijk onderscheid is of ieder afzonderlijk privé-IP-adres in een lokaal netwerk een eigen openbaar IP-adres krijgt (1:1 vertaling), of dat meerdere netwerkapparaten één gemeenschappelijk openbaar IP-adres delen (n:1 vertaling).

Strikt gezien is alleen de 1:1 vertaling een Network Address Translation zoals deze oorspronkelijk is gedefinieerd, omdat in dit geval enkel de netwerkadressen worden omgezet. Bij de n:1 vertaling is het tevens nodig om het poortnummer aan te passen. Deze techniek wordt daarom PAT (Port and Address Translation) of NAPT (Network Address Port Translation) genoemd.

Het PAT-concept wordt standaard gebruikt bij thuis- en bedrijfsnetwerken die zich op IPv4 baseren, waardoor het in normaal taalgebruik vaak onterecht NAT wordt genoemd. Gebruikelijke begrippen zoals NAT-router of NAT-tabel worden ook gehanteerd in het kader van PAT-concepten. Als er sprake is van NAT, wordt er tegenwoordig meestal PAT of NAPT bedoeld.


Zo werkt Port and Address Translation (PAT)

Over het algemeen wordt de vertaaltechniek van PAT gebruikt om meerdere lokale apparaten via een gemeenschappelijk IP-adres met het internet te verbinden.

Omdat privé-IP-adressen niet te traceren zijn (en daardoor op internet geen betekenis hebben), moeten gegevenspakketten via de router een openbaar IP-adres krijgen als ze door een computer (client) in het LAN naar een server op internet worden verstuurd. De router vervangt het privé-IP-adres van de client in de header van het gegevenspakket door zijn eigen openbare IP-adres. Bovendien wordt het intern gebruikte poortnummer vervangen door een vrije poort van de router. Deze verschijnt voor online servers als afzender van alle gegevenspakketten die vanuit het lokale netwerk worden verstuurd.

Alle verbindingsgegevens (IP-adressen, poorten, time-outs) worden in de zogenaamde NAT-tabel opgeslagen (strikt genomen is hier sprake van een PAT-tabel). Als de geadresseerde server de aanvraag van een lokale computer beantwoordt met een gegevenspakket, dan wordt dit eerst naar de verantwoordelijke poort van de router teruggestuurd. Deze heeft nu de taak om het binnengekomen gegevenspakket te koppelen aan het netwerkapparaat dat de aanvraag deed. Alles wat de router daarvoor nodig heeft, is te vinden in de verbindingsinformatie van de NAT-tabel. Met een voorbeeld kan dit duidelijk worden gemaakt:

We gaan ervan uit dat een router van de internetprovider het openbare IP-adres 217.229.111.18 heeft gekregen en als standaardgateway van een lokaal netwerk dient. Deze stelt voor alle netwerktoestellen de privé-adresruimte 192.168.0.0/24 ter beschikking (alle adressen van 192.168.0.0 tot 192.168.0.24). Als nu een van deze apparaten (bijv. een computer met het privé-IP-adres 192.168.0.2) verbinding met het internet wil maken (bijv. met een webserver met het openbare IP 71.123.239.82 en poortnummer 80), wordt een interne poort (bijv. 22433) gecreëerd en wordt de aanvraag om verbinding te maken aan de standaardgateway van de geregistreerde router doorgegeven. Deze is intern via het privé-IP 192.168.0.1 te bereiken en communiceert naar buiten met het openbare IP 217.229.111.18.

De router krijgt op deze manier de volgende informatie: toestel 192.168.0.2 wil via poort 22433 verbinding maken met 71.123.239.82 via poort 80. Hiervoor moet de router het bronadres van het LAN-toestel (IP-adres en poortnummer) vervangen door het eigen adres. Hij reserveert daarom een willekeurige vrije poort (bijv. 61001) en begint het netwerkadres te vertalen: 192.168.0.2:22433 wordt 217.229.111.18: 61001. Alle relevante gegevens worden in de NAT-tabel op de router opgeslagen.

Privé-IP van de client Poort van de client Openbare IP van de router Openbare poort van de router
192.168.0.2 22433 217.229.111.18 61001

Zodra de webserver de aanvraag heeft ontvangen, wordt deze verwerkt en – voor zover mogelijk – beantwoord met het aangevraagde gegevenspakket (bijv. de gegevens van een website). De router ontvangt het antwoord als eerste en stuurt het met behulp van de opgeslagen verbindingsgegevens door: volgens de NAT-tabel is de externe poort 61001 gereserveerd voor antwoordpakketten die naar poort 22433 van het netwerkapparaat 192.168.0.2 moeten worden gestuurd.

Naast IP-adressen en poortnummers noteren routers in de NAT-tabel een tijdmarkering voor iedere verbinding. Deze dient als timeout en geeft aan wanneer het genoteerde kan worden verwijderd. Zo blijft de poort niet geopend als hij inactief is en vormt hij geen zwak punt voor aanvallen via het internet.


Destination NAT

Destination NAT

Terwijl de Source NAT ervoor zorgt dat je vanuit het LAN toegang tot het internet krijgt, wordt de Destination NAT gebruikt om ervoor te zorgen dat een lokaal toestel altijd bereikbaar is voor inkomende verbindingen via het internet. Daarvoor wordt een openbare poort via de router-configuratie verbonden met het IP-adres van een lokaal netwerkapparaat. Alle gegevenspakketten die via deze poort binnenkomen, worden automatisch doorgestuurd naar het lokale bestemmingsadres. In dit geval spreek je van een Port Forwarding (poort-doorschakeling).

Deze techniek wordt bijvoorbeeld gebruikt als serverdiensten vanuit het LAN online beschikbaar moeten zijn. Open poorten vormen echter een veiligheidsrisico. Het is daarom raadzaam het lokale netwerk te beschermen tegen verkeer afkomstig van het internet. Dit is mogelijk door toestellen die per Port Forwarding bereikbaar zijn in demilitarized zones te isoleren.


NAT: veiligheidskenmerk of veiligheidsrisico

NAT: veiligheidskenmerk of veiligheidsrisico?

NAT in de router wordt, vanwege de strikte scheiding van LAN en internet, soms beschouwd als teken van veiligheid. De vermeende beveiligingsfunctie is echter slechts een neveneffect. NAT en PAT werden ontwikkeld om de schaarste van IPv4-adressen tegen te gaan. Deze methode kan niet fungeren als een firewall of een pakketfilter.

Toch bieden NAT en PAT gebruikers van privé-netwerken een zekere mate van privacy. Omdat alle lokale apparaten van een IPv4-LAN via hetzelfde openbare IP-adres toegang tot het internet hebben, kunnen gebruikers min of meer anoniem surfen. De afzonderlijke host achter een NAT-router kan via het internet niet direct worden geadresseerd – tenzij hiervoor een Port Forwarding is opgezet. Voor externe observeerders lijkt het alsof alle aanvragen vanuit het LAN van de router afkomstig zijn.

Bovendien beschikt de techniek over een beveiligingsfunctie, die ervoor zorgt dat alle van buiten afkomstige verbindingspogingen automatisch worden afgewezen, tenzij dit in de poortinstellingen anders is ingesteld. Antwoordpakketten die afkomstig zijn van het internet, worden alleen doorgegeven als een bepaalde poort van de router serverantwoorden verwacht. Welke webserver reageert, wordt echter niet door NAT of PAT gecontroleerd. Als een routerpoort vanwege een zelf verstuurde aanvraag is geopend, vormt deze een veiligheidsrisico. Daarom wordt aanbevolen om aanvullende veiligheidsopties te installeren, zoals firewalls en pakketfilters.

Een ander nadeel van Network Address Translation via NAT of PAT is de strikte scheiding van privé- en openbare adresruimtes. Dit beperkt de end-to-end-connectiviteit waar binnen het internetdesign naar wordt gestreefd. NAT is dus een probleem bij internetapplicaties die op basis van dit principe zijn opgebouwd.

Protocollen als FTP zijn gebaseerd op de aanname dat hosts op het internet rechtstreeks met elkaar communiceren, zonder een tussenliggend knooppunt dat IP-adressen of poortnummers wijzigt. In NAT-gebaseerde IPv4-netwerken kunnen deze alleen worden gebruikt met behulp van bypass-technologieën. Elk gewenst extra mechanisme verhoogt echter de complexiteit en het foutenpercentage van een IT-systeem. De consistente implementatie van het end-to-end-principe is daarom een centraal ontwerpdoel van de nieuwe webstandaard IPv6.


IPv6: het einde van NAT?

IPv6: het einde van NAT?

De zesde versie van het internetprotocol heeft ervoor gezorgd dat er wereldwijd veel meer IP-adressen beschikbaar zijn. In plaats van 4,3 miljard IPv4-adressen zijn er tegenwoordig in theorie 3,4 x 1038 IPv6-adressen om netwerkapparatuur met het internet te verbinden. Met andere woorden: ieder koffiezetapparaat krijgt een uniek, wereldwijd traceerbaar IP-adres. NAT wordt daardoor overbodig, maar kan in IPv6-netwerken nog steeds worden gebruikt om privé-adresomgevingen af te schermen van het openbare netwerk.