Network Address Translation (NAT) uitgelegd voor IoT

De meeste apparaten met een internetverbinding hebben geen eigen publiek IP-adres. Ze zitten op een privénetwerk, delen één publiek IP-adres en vertrouwen op een router die tussen die twee vertaalt. Die router doet aan NAT: Network Address Translation. Dit artikel legt uit wat NAT doet, waarom het overal wordt gebruikt en wat het betekent voor je Simbase SIM.

Wat NAT doet

Een NAT-gateway zit tussen een privénetwerk en het publieke internet. De gateway herschrijft IP-adressen in pakketten, zodat:

  • Uitgaand verkeer van een privéapparaat lijkt te komen van het publieke IP-adres van de gateway.

  • Retourverkeer van internet naar de gateway weer bij het juiste privéapparaat terechtkomt.

Zo werkt het, vereenvoudigd:

  1. Je laptop (privé-IP 192.168.1.10) stuurt een verzoek naar een webserver.

  2. Het pakket verlaat je laptop met bronadres 192.168.1.10 en bestemming 93.184.216.34 (de server).

  3. De router of NAT-gateway onderschept het pakket. Hij vervangt het bronadres door zijn eigen publieke IP-adres (bijvoorbeeld 203.0.113.5), legt de koppeling (192.168.1.10:55124) ↔ (203.0.113.5:62001) vast in zijn NAT-tabel en stuurt het pakket door.

  4. De server antwoordt naar 203.0.113.5:62001.

  5. De router zoekt in de NAT-tabel, ziet dat dit hoort bij 192.168.1.10:55124, herschrijft de bestemming en stuurt het antwoord door naar je laptop.

Je laptop weet niet dat hij achter NAT zit. De webserver weet niet dat er een privénetwerk is.

Waarom NAT bestaat

Om drie redenen:

  1. Zuinig omgaan met IPv4. Er zijn ongeveer 4,3 miljard IPv4-adressen, maar veel meer apparaten. Met NAT delen duizenden apparaten één adres.

  2. Bescherming als bijeffect. Apparaten achter NAT zijn niet direct bereikbaar vanaf internet. Pakketten die bij de gateway aankomen zonder bijbehorende regel in de NAT-tabel worden weggegooid. Dat is een handige standaard, maar het is geen firewall en je moet er ook niet op vertrouwen als firewall.

  3. Onafhankelijke netwerken. Elk privénetwerk kan dezelfde adresruimte gebruiken (192.168.x.x) zonder dat met iemand af te stemmen.

Nadelen van NAT

  • Inkomende verbindingen zijn standaard geblokkeerd. Als iets op internet met je apparaat wil praten, kan het die verbinding niet zelf opzetten. Er zijn workarounds (port forwarding, NAT traversal, hole punching), maar die zijn complex en onbetrouwbaar.

  • Sommige protocollen hebben er moeite mee. Alles wat IP-adressen in de applicatiedata meestuurt (oudere VoIP, FTP in actieve modus, sommige VPN-protocollen) werkt niet achter NAT, tenzij de gateway daar specifieke helpers voor heeft.

  • Connection tracking heeft grenzen. Apparaten met heel veel verkeer kunnen de NAT-tabel van kleine gateways vol laten lopen.

  • Logging is lastiger. Voor internet lijken al je apparaten één IP-adres, dus om verkeer aan een specifiek apparaat te koppelen heb je de logs van de NAT-gateway nodig.

NAT en Simbase SIM's

Standaard zit elke Simbase SIM achter een NAT-gateway in de mobiele core van Simbase. Dat betekent:

  • De SIM kan uitgaande verbindingen opzetten naar je API's, MQTT-brokers, webservers en alles op internet.

  • De SIM kan geen inkomende verbindingen accepteren. Je servers kunnen niet zelf een verbinding met de SIM openen.

  • De SIM krijgt een privé-IP-adres dat niet zichtbaar is vanaf internet.

Voor de meeste IoT-toepassingen (een apparaat dat een server pollt of data pusht via MQTT of HTTP) is dit precies wat je wilt. Het is veilig, eenvoudig en kost niets extra.

Wanneer NAT een probleem wordt

NAT zit in de weg als je het apparaat van buitenaf moet bereiken:

  • Op afstand via SSH inloggen op een router of gateway

  • Een configuratie-interface op afstand op een apparaat in het veld

  • Een push vanaf de server naar het apparaat (bijvoorbeeld "word wakker en rapporteer")

  • Een dienst hosten op het apparaat (webserver, RTSP-camerafeed)

  • Een site-to-site VPN die op het apparaat eindigt

In al deze gevallen moet je NAT voor die SIM omzeilen. Simbase doet dat door een publiek IP-adres toe te wijzen, dat het verkeer via een eigen gateway met een routeerbaar adres leidt.

Zie Publieke IP-adressen voor de stappen.

NAT vs. CGNAT

In verhalen over mobiele netwerken kom je ook CGNAT (Carrier-Grade NAT) tegen. CGNAT is NAT op het niveau van de operator. Je operator zet je achter zijn eigen publieke IP-adres voordat je verkeer het internet bereikt. De meeste mobiele netwerken voor consumenten gebruiken CGNAT. Voor het apparaat is het precies hetzelfde als gewone NAT.

SIM's zonder publiek IP-adres gaan via NAT op de Simbase-gateway. Het effect is hetzelfde als CGNAT op een mobiel consumentennetwerk: een privé-IP-adres op het apparaat, een gedeeld publiek adres richting internet en geen inkomende verbindingen.

Veelgestelde vragen

Nee. Voor port forwarding heb je controle over de NAT-gateway nodig. De NAT-gateway van Simbase is gedeeld en kun je niet zelf configureren. Heb je inkomende toegang op specifieke poorten nodig? Wijs dan een publiek IP-adres toe en gebruik de firewallregels van die gateway.

Nee. MQTT gebruikt een langlevende uitgaande verbinding. De client opent die, de broker houdt hem open en berichten gaan via die ene verbinding in beide richtingen. NAT kan daar prima mee overweg.

Nee, de NAT-gateway houdt ze van elkaar gescheiden. Ze kunnen wel communiceren via een publieke server (of VPN) die ze allebei uitgaand kunnen bereiken.

Indirect. Simbase wijst IP-adressen toe via DHCP bij de attach, dus de SIM kan elke keer een ander privé-IP-adres krijgen. Voor uitgaande verbindingen vangt NAT dat ongemerkt op. Heb je een vast adres nodig? Wijs dan een publiek IP-adres toe voor een routeerbaar statisch adres, of gebruik een privénetwerk voor statische adressen binnen je eigen subnet.

Gerelateerd