Typer av NAT


Nu när du har lärt dig grunderna i NAT och hur det fungerar, kommer vi i det här avsnittet att gå igenom de olika typer av NAT som finns tillgängliga.

Statisk NAT

Statisk NAT använder en en-till-en översättning mellan lokala och globala adresser. Dessa mappningar konfigureras manuellt av nätverksadministratören och är konstanta.

I figuren är R2 konfigurerad med statiska mappningar för de interna lokala adresserna till Svr1, PC2 och PC3. När dessa slutenheter skickar trafik till internet, översätts deras inside local adresser till de fördefinierade inside global adresser. För externa nätverk ser det ut som om dessa slutenheter har publika IPv4-adresser.

Statisk NAT är särskilt användbar för webbservrar eller andra enheter som behöver ha en fast och tillgänglig adress från internet – till exempel ett företags webbserver. Det är också praktiskt för enheter som ska kunna nås av behörig personal på distans, men inte av allmänheten.

Till exempel kan en nätverksadministratör på PC4 använda SSH för att ansluta till Svr1, som befinner sig i det interna nätverket. Svr1 har en inside local adress på 192.168.10.10, men är tilldelad en inside global adress på 209.165.200.226. När trafiken når R2 översätts den publika adressen tillbaka till den lokala adressen, vilket gör det möjligt att nå Svr1 inifrån nätverket.

Statisk NAT kräver att det finns tillräckligt med publika adresser tillgängliga för att stödja det totala antalet samtidiga användarsessioner.

Dynamisk NAT

Dynamisk NAT använder en pool av publika adresser och tilldelar dem efter först till kvarn-principen (first-come, first-served). När en intern enhet vill komma åt ett externt nätverk, tilldelar dynamisk NAT en ledig publik IPv4-adress från poolen.

I figuren har PC3 anslutit till internet genom att använda den första tillgängliga adressen i den dynamiska NAT-poolen. De övriga adresserna är fortfarande lediga. Precis som med statisk NAT krävs det att det finns tillräckligt med publika adresser för att stödja alla samtidiga användare.

Port Address Translation (PAT)

Port Address Translation (PAT), även kallad NAT overload, mappar flera privata IPv4-adresser till en enda publik IPv4-adress – eller ett fåtal. Det är så de flesta hemroutrar fungerar. Internetleverantörer (ISP) tilldelar en publik adress till routern, men flera enheter i hemmet kan ändå surfa samtidigt. Detta är den vanligaste formen av NAT, både i hem och i företag.

Med PAT kan flera enheter dela samma publika adress eftersom varje privat session spåras med ett unikt portnummer. När en enhet startar en TCP/IP-session genereras ett TCP- eller UDP source-portsnummer (eller ett särskilt query-ID för ICMP) för att identifiera sessionen. NAT-routern använder detta portnummer för att hålla reda på varje översättning.

PAT säkerställer att varje session använder ett unikt portnummer mot en server på internet. När ett svar kommer tillbaka används det unika portnumret för att dirigera paketet till rätt enhet. PAT kontrollerar också att inkommande paket har efterfrågats, vilket tillför en viss säkerhet till kommunikationen.

Så fungerar kommunikationen via PAT

I det här exemplet vill PC1, som har en privat IP-adress (192.168.10.10), kommunicera med en extern webbserver Svr1 med en publik IP-adress (209.165.201.1). PC2 (192.168.10.11) vill kommunicera med den externa webbservern Svr2 (209.165.202.129). Eftersom privata IP-adresser inte får routas över internet, krävs PAT för att kommunikationen ska kunna ske.

Så här ser IP-adresseringen ut initialt, från avsändare till mottagare. Observera att varje paket har tilldelats ett unikt portnummer – 1555 för PC1 och 1331 för PC2. Även destinationen, som är en webbserver, använder ett portnummer: 80 (HTTP).

Paketen når NAT-routern (R2), som är placerad vid gränsen mellan det interna nätverket och internet. Routern är konfigurerad att utföra PAT

När R2 behandlar varje paket använder den ett portnummer (1331 och 1555 i detta exempel) för att identifiera vilken enhet paketet kommer ifrån. Source-adressen (SA), avsändaren, består av den interna lokala adressen (Inside Local) kombinerad med det TCP/UDP-portnummer som tilldelats. Destinations adressen (DA), mottagare, är den externa globala (Outside Global) adressen kombinerad med tjänstens portnumret. I det här exemplet är 80, vilket motsvarar HTTP.

För source-adressen översätter R2 den interna lokala adressen (Inside Local)till en intern global adress (Inside Global) med portnumret tillagt, 209.165.200.226. Destinations adressen ändras inte, men benämns nu som den externa globala (Outside Global) IPv4-adressen. När webbservern svarar följer trafiken samma väg tillbaka, men i omvänd riktning.

Nästa lediga port

I det tidigare exemplet behölls klienternas ursprungliga portnummer (1331 och 1555) vid översättningen. Detta är dock ovanligt, eftersom dessa portar redan kan vara i bruk av andra aktiva sessioner.

PAT försöker i första hand bevara det ursprungliga source-portnumret. Om porten redan används, söker PAT efter nästa lediga port inom någon av följande port-grupper: 0 – 511, 512 – 1023 eller 1024 – 65535. Om samtliga portar är upptagna och det finns fler publika adresser i poolen, fortsätter PAT med nästa tillgängliga publika adress och upprepar processen. Detta fortsätter tills det inte längre finns några tillgängliga portar eller publika adresser kvar att använda.

Exempel: I detta exempel har båda slutenheter valt portnummer 1444. Det är tillåtet internt eftersom varje enhet har en unik privat adress. Men på NAT-routern måste portnumren justeras – annars skulle paket från två olika slutenheter lämna R2 med samma source-adress. I exemplet antas att de första 420 portarna i intervallet 1024–65535 redan används, så nästa tillgängliga port, 1445, används.

Observera att PAT har tilldelat nästa lediga port (1445) till den andra enheten, PC2.

När paket returneras från det externa nätverket, ändrar NAT-routern tillbaka destinations porten till den ursprungliga source-porten om den tidigare modifierats.

Skillnader mellan NAT och PAT

NAT PAT
En-till-en-mappning mellan Inside Local och Inside Global adresser. En Inside Global-adress kan mappas till flera Inside Local-adresser.
Använder endast IPv4-adresser i översättningen. Använder IPv4-adresser samt TCP- eller UDP-portnummer i översättningen.
Kräver en unik Inside Global-adress för varje intern värd som ska nå utsidan. 10 inside local kräver 10 inside global. En enda Inside Global-adress kan delas av flera interna enheter.

NAT

Följande exempel illustrerar mappningar för NAT. I detta exempel kommunicerar fyra interna host med det externa nätverket. Den vänstra kolumnen visar adresserna i den globala adress-poolen som används av NAT för att översätta varje Inside Local address. Observera den en-till-en-relation som finns mellan Inside Global och Inside Local address för varje värd.

Obs: NAT vidarebefordrar inkommande returpaket till rätt intern host genom att slå upp i tabellen och översätta Inside Global adress tillbaka till motsvarande Inside Local adress.

Inside Global Address   Inside Local Address
209.165.200.226 192.168.10.10
209.165.200.227 192.168.10.11
209.165.200.228 192.168.10.12
209.165.200.229 192.168.10.13

PAT

Medan NAT endast modifierar IPv4-adresser, ändrar PAT både IPv4-adress och portnummer. Med PAT används i regel en eller ett fåtal publika IPv4-adresser. Tabellen nedan visar hur en enda Inside Global adress används för att översätta Inside Local adresser från fyra interna host. PAT använder portnummer på lager 4 (TCP/UDP) för att hålla reda på sessionerna.

Inside Global Address   Inside Local Address
209.165.200.226:2031 192.168.10.10
209.165.200.227:1506 192.168.10.11:1506
209.165.200.228:1131 192.168.10.12:1131
209.165.200.229:1718 192.168.10.13:1718

Paket utan ett lager 4-segment

Vad händer med IPv4-paket som inte använder TCP eller UDP? Alla IPv4-paket innehåller inte data från transportprotokollen TCP eller UDP – och därmed saknas också portnummer på lager 4. Det väcker frågan: hur hanterar PAT sådana paket, som saknar portnummer?

Trots detta kan PAT ändå översätta många vanliga IPv4-baserade protokoll som inte använder TCP eller UDP. Det tydligaste exemplet är ICMPv4, som används vid till exempel ping.

ICMPv4 och Query ID

PAT hanterar ICMPv4-förfrågningar (t.ex. echo request och echo reply) genom att använda ett Query ID – ett fält som används för att koppla samman varje förfrågan med dess svar. Eftersom varje ny ICMPv4-förfrågan genererar ett unikt Query ID, kan PAT använda detta ID på samma sätt som ett portnummer för att identifiera och hålla reda på varje session.

Observera att inte alla ICMPv4-meddelanden innehåller inte ett Query ID. Dessa – liksom andra protokoll som saknar både portnummer och Query ID – kräver andra hanteringsmetoder och behandlas inte inom denna kurs.