Network Address Translation

NAT står för Network Address Translation eller nätadressöversättning. Tekniken gör det möjligt att ansluta många datorer till en internetanslutning med en eller några gemensamma IP-adresser. NAT är en funktion som byggs in i den brandvägg eller router som ansluter det lokala nätet till Internet (eller annat nät).

NAT kan användas så att varje intern adress permanent motsvarar en yttre adress eller så att motsvarigheten bara gäller tillfälligt, medan en dator kommunicerar över NAT-funktionen. Motsvarigheten kan också gälla kombinationen av TCP- eller UDP-port och IP-adress, varvid samma IP-adress kan användas av flera datorer, så länge de inte utåt behöver se ut att använda samma portar.

NAT är vanligast mellan privata nät och Internet men kan användas mellan vilka ip-baserade nät som helst.

Så fungerar NAT 
En typisk router med NAT-funktion består av två sidor. En sida med lokal anslutning (LAN) och en sida med vidare anslutning (WAN), ofta Internet. På det lokala nätet används i allmänhet IP-adresser speciellt reserverade för detta ändamål, som inte är gångbara på det öppna publika nätet, så kallade privata adresser eller svarta adresser.

När en dator på det lokala nätet (en klient) vill skicka ett datapaket till Internet, översätts dess IP-adress av NAT-funktionen till en externt giltig IP-adress, publik adress, och kopplingen mellan de två adresserna registreras för resten av kommunikationen. När svarspaket kommer tillbaka till den externa IP-adressen, översätts IP-adressen tillbaka så att datapaketet hittar in till rätt klient på det lokala nätet.

Då kopplingen mellan inre och yttre adress på detta sätt upprätthålls endast medan kommunikationen pågår (och en begränsad tid därefter), behöver de datorer som för tillfället inte kommunicerar utåt ingen publik adress, vilket är väsentligt då adresserna i IPv4, det nu allmännast använda internetprotokollet, håller på att ta slut.

IANA (numera heter organisationen ICANN) har tilldelat följande nät som privata nät.
 10.0.0.0        -   10.255.255.255  (10/8 prefix)
 172.16.0.0      -   172.31.255.255  (172.16/12 prefix)
 192.168.0.0     -   192.168.255.255 (192.168/16 prefix)

Med renodlad NAT krävs det en 1:1-mappning av adresser; en publik adress har bara en översatt privat adress. Sker översättningen dynamiskt behöver poolen av publika adresser inte vara lika stor som antalet privata adresser. Adresserna kan alltså återanvändas av flera privata adresser.

Om det inte finns krav på att skilja mellan datorer som samtidigt kommunicerar med yttervärlden kan man gå ett steg längre och använda de portar som definieras i TCP- och UDP-protokollen, varvid samma publika IP-adress samtidigt kan användas av flera datorer på det lokala nätet.

PAT – Port Address Translation 
Den variant av NAT som brukar användas i vanliga bredbandsroutrar heter Port Address Translation, ofta benämnd PAT eller NAT/PAT. Precis som med NAT används på det lokala nätet speciella IP-adresser, som inte är gångbara ute på det öppna nätet, och dessa adresser översätts till en på Internet gångbar extern IP-adress. Men med PAT, till skillnad från NAT, översätts även paketets TCP/UDP-portnummer av NAT-funktionen till ett TCP/UDP-portnummer som är ledigt ifråga om den externa IP-adress som skall användas. När svarspaket kommer tillbaka till den externa IP-adressen och porten, översätts IP-adressen och portnumret tillbaka så att datapaketet hittar in till rätt klient på det lokala nätet. Precis som NAT är PAT vanligast mellan privata nät och Internet men kan användas mellan vilka ip-baserade nät som helst.

Med PAT behövs det enbart en publik adress för att översätta flera privata adresser. Detta är vanligt bland privatanvändare där man har en publik IP-adress tilldelad från operatören. Bredbandsroutern adressöversätter samtliga interna datorer till denna enda publika adress.

Carrier-grade NAT (CGN) 
Operatörsskalig nätadressöversättning innebär att internetleverantörer låter flera kunder kopplas ihop i privata nätverk hos operatören, och sedan delar på samma publika IP-adress. Detta låter internetleverantören att ha fler kunder än de tilldelade IP-adresserna, men innebär också att kunderna inte kan kommunicera direkt mot måldatorn vilket medför samma problem som nämnts i stycket om begränsningar nedan, men i större skala då betydligt fler datorer och nätverk är inblandade, inte sällan på bägge sidor. Vid konferensen IEEE INFOCOM 2018 konstaterades att antalet operatörsnät som använder sig av CGN sexfaldigats sedan senaste mätningen till över 4 100.

För att minska riskerna med sammanblandning av IP-adresser mellan kundernas egna nätverk och det privata nätverk internetleverantörerna inordnat kunderna i reserverade IANA 100.64.0.0/10 (100.64.0.0 – 100.127.255.255) för CGN genom RFC 6598.

Historia 
NAT blev under slutet av 1990-talet ett vanligt sätt att ordna det lokala nätet på många företag. En pådrivande orsak var att Internet-leverantörerna ogärna delade ut mer än ett fåtal IP-adresser till varje företag och ett enkelt sätt att kunna ansluta flera klienter var att skaffa en NAT-funktion. En annan orsak, i synnerhet inom större företag och organisationer, var att man med NAT kunde dölja den lokala infrastrukturen och därmed försvåra dataintrång.

Begränsningar 
Internet bygger i grunden på principen om att alla noder är jämlika parter som var och en kan nås via en unik identitet (IP-adress) och där all kommunikation sker mellan godtyckliga noder i nätet utan behov av inblandning från mellanhänder. Därför utgör NAT per definition en källa till problem för Internets funktion. Applikationer (till exempel FTP) som fungerar felfritt i en miljö utan NAT kan få stora problem att kommunicera eller inte fungera alls bakom en NAT. Med NAT bryter man nämligen mot den grundläggande principen om att två noder på Internet ska kunna kommunicera fritt utan att en mellanhand manipulerar IP-adresser och portar. Att konstruera en NAT som tjänstgör obemärkt är också mycket svårt, i princip omöjligt, just på grund av att kommunicerande noder har kunnat anta och skall kunna anta en opåverkad kommunikationsförbindelse dem emellan.

Med en NAT bestäms sambandet mellan en intern IP-adress och port och den publika IP-adressen och porten dynamiskt i det skede då den lokala datorn inleder kommunikation med yttervärlden. Därmed finns det ingen möjlighet att initiera kontakt med en lokal dator utifrån, eftersom den lokala datorn saknar publik adress tills den själv inleder kommunikationen. Visserligen kan det i vissa fall upplevas som en fördel ur datasäkerhetssynpunkt, men lokala datorer kan till följd av det inte fungera som servrar, något som varje nod på Internet förväntas kunna (en server är på Internet en nod som lyssnar på inkommande anrop).

Förutom att NAT kan förhindra önskvärd kommunikation, innebär dess roll som konceptuell inkräktare i nätet stora svårigheter när man vill genomföra NAT. Sambandet mellan yttre och inre adress etableras dynamiskt av NAT:en för den tid kommunikationen pågår, men NAT:en saknar i sig explicit kännedom om ändpunkternas kommunikation. Därför måste NAT-funktionen implicit kunna avgöra när kommunikationen upphört. Det kan vara svårt när en kommunikationskanal kan lämnas öppen med avsikt (exempelvis för ett oavslutat telefonsamtal) eller då apparaten för NAT-funktionen blir överbelastad.

Ett exempel på en typ av applikation som ofta inte fungerar när det finns en NAT i nätet är IP-telefoni. För att kunna bli uppringd måste man kunna vänta på kontakt utifrån, alltså agera server. Det är möjligt att konfigurera NAT-funktionen så att en fast koppling görs mellan vissa IP-adresser till vissa datorer eller från vissa kombinationer av adress och port till vissa portar på vissa datorer (portvidarebefordran, port forwarding). Detta kräver en aktiv insats av en nätverksadministratör, ett samarbete mellan administratör och användare, samt kunskap hos användaren. Om flera datorer skall kunna användas för samma protokoll (till exempel flera webbservrar), måste skilda portar eller skilda publika ip-adresser reserveras. För vissa protokoll är detta svårt, till exempel SMTP för e-post, eftersom porten är fastslagen i protokollet. Ett annat sätt att mildra och kringgå problemen med NAT är att låta den lokala datorn upprätthålla en konstant förbindelse med en server som kan nås med publika adresser och som förmedlar kontakterna. Då snabb kontakt inte är nödvändig räcker det att den lokala datorn då och då kontaktar den centrala datorn. Det är så klienter i botnet ("infekterade" datorer som styrs utifrån) får sina instruktioner. Ytterligare ett sätt att skapa dräglig funktion i ett NAT:at nät är att låta en viss server på det lokala nätet ta emot kontakter för alla datorer på det lokala nätet och förmedla kontakterna vidare.

I praktiken har de grundläggande problemen som NAT innebär inte hindrat dess utbredning. Det beror mycket på att internetleverantörer gynnas av att trafiken reduceras eftersom viss kommunikation förhindras. Enskilda användare inser inte alltid att problem med en viss applikation orsakas av användarens internetförbindelse. IP-telefoni och andra liknande applikationer som kan påverkas av NAT användes bara i liten skala innan NAT blev allmänt. Problemen med NAT har därför hämmat utbredningen av avancerade tjänster på Internet snarare än minskat användningen av NAT. Man kan se NAT som en tillfällig lösning orsakad av brist på IP-adresser, men i och med ett ökat användande av IPv6 bör behoven av NAT minska på sikt.

NAT-mjukvara 
 I Linux-världen kallas NAT ibland för IP-Masquerading, och verktygen man använder för att uppnå det kallas ipchains eller iptables, om man kör dem på en vanlig PC med Linux. Funktionen är inbyggd i Linux-kärnan.
 I Microsoft Windows-världen brukar man använda en del olika program för att göra om en vanlig dator till en NAT-router, några av dem är Wingate och WinRoute. Senare versioner av Windows inkluderar en egen funktion för att dela IP-adresser mellan datorer. Även Microsoft ISA-Server kan användas.
 I Mac OS-världen finns NAT inbyggt i operativsystemet, i serverversionen som en tjänst, och i klientversionen kallas det för internetdelning i Systeminställningar/Delning. I båda fallen är det unixdaemonen natd som används.

Källor

Externa länkar 
 RFC 2663, IP Network Address translator (NAT) Terminology and Considerations, aug 1999
 RFC 1631, The IP Network Address Translator (NAT), maj 1994
 RFC 1918, Address Allocation for Private Internets, feb 1996

Datorkommunikation
Datornätverk
IP-adresser