Je provider geeft je een adres dat internet kan zien. Jij hebt een laptop, twee telefoons, een televisie, een deurbel en een printer. Die willen allemaal tegelijk met internet praten, via dat ene adres, en de antwoorden moeten allemaal bij het goede apparaat terugkomen. NAT is hoe dat geregeld is.
Een adres, een telefooncentrale erachter
NAT staat voor Network Address Translation, en het doet wat de naam zegt. Een pakket dat je laptop verlaat heeft als afzender 192.168.10.25, een adres dat op internet niets betekent. Je router vervangt die afzender door zijn eigen publieke adres voordat hij het pakket wegstuurt, en noteert wat hij deed. Komt het antwoord terug op het publieke adres, dan kijkt de router in zijn aantekening en zet het pakket weer op weg naar de laptop.
De vergelijking is een telefooncentrale. De buitenwereld kent een nummer. De telefonist onthoudt welk toestel welk gesprek voerde, en verbindt het antwoord door naar het goede bureau. Bellers van buiten zien alleen het hoofdnummer.
Wat een poort is
Een adres brengt een pakket bij de goede machine. Een poort brengt het bij het goede programma op die machine. Het is een getal van 1 tot 65535, en het staat naast het adres op de envelop.
Een handvol nummers zijn afspraken die iedereen volgt. 80 en 443 zijn webverkeer, 22 is SSH, 53 is DNS, 5060 is telefonie. Een webserver luistert op 443 omdat browsers daar aankloppen.
De poort waarmee je laptop verstuurt is helemaal geen afspraak. Hij kiest voor elk nieuw gesprek een vrij hoog nummer, en juist dat nummer laat de centrale werken: de router kan je twee telefoons uit elkaar houden omdat hun gesprekken verschillende poortnummers hebben, ook als ze allebei met dezelfde website praten.
Wat een verbinding is
Een verbinding is geen draad. Het zijn vier dingen bij elkaar: jouw adres, jouw poort, hun adres, hun poort. Die combinatie is uniek, en dat is precies de aantekening die de router maakt. Je router houdt een tabel van die aantekeningen bij, en dat is na de routeringstabel de belangrijkste tabel in het apparaat.
Die aantekening maakt een antwoord herkenbaar. Een pakket dat van buiten binnenkomt past bij een open aantekening, en dan is het het antwoord op iets wat jij vroeg, of het past nergens bij, en dan heeft niemand binnen erom gevraagd. Aantekeningen van gesprekken die stil zijn gevallen worden na een tijdje weggegooid, en daarom moet een verbinding die een uur niets deed soms opnieuw opgebouwd worden.
Waarom uitgaand geen regel nodig heeft en inkomend wel
Dit verklaart het meeste firewallgedrag, en het volgt uit die aantekening.
Open je een website, dan maakt je router een aantekening en laat het antwoord binnen omdat het erbij past. Je hoeft voor elke website die je bezoekt niets in te stellen. Hetzelfde geldt voor elke app op elke telefoon in huis.
Probeert iemand op internet jou uit het niets te bereiken, dan is er geen aantekening. De router heeft een publiek adres en geen idee voor welke van jouw dertig apparaten het pakket bedoeld was, en geen reden om aan te nemen dat het welkom was. Dus gooit hij het weg.
Dat is echte winst voor je veiligheid, en het is grotendeels toeval. NAT is bedacht omdat de adressen opraakten, niet om je te beschermen, maar het gevolg is dat een ongevraagd pakket nergens heen kan. Het is ook de reden dat je iets bewusts moet doen om een server, een gameserver of een camera van buitenaf bereikbaar te maken: je vertelt de router vooraf dat verkeer op een bepaalde poort bij een bepaald apparaat hoort. Dat is poortdoorsturen, en dat is de regel die je zelf schrijft. Zie Een poort openzetten.
Leun niet op NAT als je enige verdediging. Zodra je IPv6 erbij zet, waar elk apparaat een eigen publiek adres heeft en er niets vertaald wordt, houdt dat toeval op en blijft alleen de firewall over. Daarom bestaat de firewall als apart onderdeel. Zie Firewall en NAT.
Dubbel NAT
Doet het kastje van je provider NAT en je eigen router erachter ook, dan wordt er twee keer vertaald. Gewoon surfen merkt daar niets van. Poortdoorsturen wel: je moet de poort op allebei de kastjes openzetten, en als je er maar bij een van de twee in kunt, houdt het op. Sommige VPN-verbindingen en spelcomputers klagen ook. Het gebruikelijke antwoord is het providerkastje in bridge- of modemstand zetten, zodat je eigen router het publieke adres krijgt.
CGNAT
Carrier grade NAT is dezelfde truc, een niveau hoger. In plaats van een publiek adres krijg jij een adres uit een gedeelde reeks, en doet je provider de vertaling voor honderden klanten tegelijk. Het is gewoon bij mobiel en bij 4G- en 5G-verbindingen, en steeds vaker ook op vaste lijnen.
Uitgaand verkeer werkt normaal, dus de meeste mensen merken het nooit. Wat je kwijt bent is bereikbaarheid. Je kunt geen poort doorsturen, want het adres is niet van jou. Een VPN-server thuis neemt geen verbindingen aan. Een dynamische DNS-naam wijst naar een adres dat je niet in de hand hebt.
Hoe je het herkent: het WAN-adres van je router begint met 100.64 tot en met 100.127, of het is een prive-adres, en het komt niet overeen met wat een "wat is mijn IP"-website je laat zien. Wat je eraan doet: je provider om een publiek adres vragen, wat vaak gratis is of een paar euro per maand kost, of een tunneldienst gebruiken die vanuit jouw netwerk naar buiten verbindt, zodat er niets naar binnen hoeft. IPv6 omzeilt het probleem helemaal, als je provider het aanbiedt.
Waar de tool dit oppakt
De configurator zet de vertaling voor je aan zodra je je internetverbinding beschrijft bij WAN, en wat je van buitenaf bereikbaar wilt hebben voeg je toe bij Een poort openzetten.