Network Address Translation

Network Address Translation (NAT) er en teknikk som går ut på å endre sender- og/eller mottakeradresse på IP-pakker når de passerer gjennom en ruter eller brannmur. Dette brukes vanligvis for å skjule mange nettverksenheter i et private nettverk bak én offentlig IP-adresse ut mot Internett, men det er også mulig å benytte flere offentlige IP-adresser. NAT er populært fordi det er begrenset tilgang på ledige IPv4-adresser, men ved å bruke NAT kan mange PC-er ha tilgang til Internett gjennom en felles IP-adresse. Et beslektet konsept er Port Address Translation. Med IPv6 trengs ikke NAT, fordi det vil ikke bli begrenset tilgang på adresser.


== Virkemåte ==
Når man benytter NAT gir man nettverksenhetene i bedrifts- eller hjemmenettverket IP-adresser fra et av de tre IP-adresseområdene som er reservert til fri bruk i private nettverk (192.168.x.x, 172.16.x.x til 172.31.x.x, og 10.x.x.x). Ruterens grensesnitt mot det interne nettverket får én eller flere private IP-adresser, mens grensesnittet mot det eksterne nettverket, for eksempel Internett, får én eller flere offentlige IP-adresser.
Trafikk som passerer ruteren på vei ut til det eksterne nettverket får avsenderadressen (og eventuelt også avsenderporten) med en av ruterens offentlige IP-adresser. Når ruteren mottar en pakke utenfra, vil den slå opp i en liste for å finne ut hvilken maskin på det interne nettverket som egentlig skal ha den. Pakken blir så påført korrekt mottakeradresse og -port og sendt ut på det interne grensesnittet. Hvordan disse listene settes opp avhenger av typen NAT som brukes. De andre maskinene på det eksterne nettverket vil se på NAT-ruteren som sender og mottaker av all denne trafikken.


=== Enkel NAT ===
Dersom ruteren har blitt tilordnet nok offentlige IP-adresser på det eksterne netverket, kan de enkelte interne nettverksenhetene representeres ved sin egen offentlige adresse. Koblingen mellom intern og ekstern adresse kan være statisk, eller de kan opprettes automatisk ved behov. Ruteren trenger derfor bare oversette avsenderadressen på utgående trafikk og mottakeradressen på innkommende trafikk.


=== Network Address Port Translation ===
Dersom ruteren bare har én offentlig IP-adresse, men flere maskiner på det private nettverket som ønsker å kommunisere med det eksterne nettverket samtidig, holder det ikke med bare å se på IP-adressene. Dette er situasjonen for de fleste bedrifts- og hjemmenettverk som benytter NAT på Internettforbindelsen. Network Address Port Translation (NAPT) oversetter både IP-adresser og portnumrene brukt av TCP, UDP eller lignende protokoller som ligger på laget over IP.
Når en maskin på det interne nettverket kontakter en maskin på det eksterne, vil ruteren tilordne denne kommunikasjonskanalen en port på sitt eksterne grensesnitt. Pakkens interne avsenderadresse og -port erstattes så med ruterens offentlige IP-adresse og det tilordnede portnummeret. Den eksterne maskinen vil sende sitt svar til ruterens IP-adresse og porten som den fikk forespørselen fra. Ruteren vil ut fra mottakerporten kunne identifisere hvilken kommunikasjonskanal det er snakk om, og finne rett mottaker på det interne nettverket.
Forbindelsene mellom eksterne portnumre og interne IP-adresser og portnumre kan være statiske, dynamiske eller en blanding. Dynamiske forbindelser opprettes når en intern maskin kontakter det eksterne nettverket, mens statiske settes opp av systemadministratoren. For at en maskin på det eksterne nettverket skal kunne kontakte en maskin på det interne nettverket, må det være satt opp en statisk kobling mellom et kjent eksternt portnummer og korrekt intern IP-adresse og portnummer. Dette er viktig dersom man ønsker å kjøre en webtjener, spilltjener eller peer-to-peer-programmer bak en NAPT-ruter.