Nätverk och protokoll

NAT

Adress- och portöversättning som låter många privata värdar dela färre offentliga IPv4-adresser.

Var du ser detta: Syns i paketfångster, nätverksdiagram, brandväggsregler samt system- och nätverksloggar.

Vad det är

NAT (nätverksadressöversättning) är en mekanism där en enhet skriver om pakethuvuden för att mappa en adressvärld till en annan, vanligtvis privat IPv4 till offentlig IPv4. Det vanliga beteendet hos hemmaroutern är portadressöversättning, där många interna flöden delar en offentlig adress.

Nyckelpunkter
  • Skapar mappningar i en översättningstabell när flöden går ut.
  • Svaren matchas till dessa mappningar och översätts tillbaka in.
  • Avbryter adressering från början till slut, vilket påverkar vissa protokoll och gör loggning viktig.

Hur det fungerar i stora drag

  1. En intern värd initierar en utgående anslutning till en Internetdestination.
  2. NAT-enheten skapar en mappning som binder den interna källan IP och porten till en extern offentlig IP och en vald extern port.
  3. NAT skriver om paketets källadress och ofta källporten och vidarebefordrar det sedan till Internet.
  4. När svaret kommer tillbaka till den offentliga IP och externa porten, letar NAT upp mappningen och skriver om destinationen tillbaka till den interna värden.
  5. Kartorna sparas under en begränsad tid och uppdateras av trafiken. När de löper ut kommer nya inkommande paket att tas bort.
  6. Inkommande initierade anslutningar kräver explicit konfiguration som portvidarebefordran eller statiska mappningar.
  7. I stor skala kan Internetleverantörer köra bärarklass NAT, vilket lägger till ytterligare ett översättningsskikt och komplicerar spårbarheten.

Konkret exempel

Hemma öppnar din bärbara dator en TCP-anslutning till en webbplats. Din router skriver om din privata källadress till sin offentliga adress och väljer en oanvänd extern port. Webbplatsen svarar på den offentliga IP och porten, och routern översätter den tillbaka till din bärbara dator.

Varför det är viktigt

IPv4 adresser är knappa. NAT tillåter privata nätverk att använda icke routbara adresser internt samtidigt som de fortfarande ansluter till Internet via en eller några offentliga adresser. Det förenklar också intern omnumrering eftersom interna adresser är frikopplade från externa.

Säkerhetsperspektiv

  • NAT ger en viss tillfällig avskärmning genom att blockera oönskad inkommande trafik, men lita inte på det för säkerhetspolicy.
  • För undersökningar kan NAT-loggar vara avgörande för att mappa en offentlig IP och porta tillbaka till en intern enhet.
  • Dubbla NAT och CGNAT kan dölja klienter och komplicera tillåten listning och prisbegränsning för offentliga tjänster.

Vanliga fallgropar

  • Förutsatt att NAT är en brandvägg. Många NAT-enheter har också en brandvägg, men enbart NAT är inte en säkerhetskontroll.
  • Protokoll som bäddar in IP-adresser eller portar i nyttolaster kan gå sönder om inte en applikationslagergateway skriver om dem.
  • Korta NAT timeouts kan bryta inaktiva men giltiga sessioner, speciellt för UDP.
  • Carrier grade NAT kan orsaka portutmattning och gör tillskrivning och felsökning svårare.
  • Loggning blir viktig eftersom externa observatörer bara ser den offentliga adressen, inte den interna värden.

FÖRDJUPNING

Den grundläggande mekanismen: en översättningstabell

I sin vanligaste form är NAT faktiskt NAPT: många privata värdar delar en offentlig IP genom att använda olika källportar. När en intern värd skickar ett paket till internet skapar NAT-enheten en mappning från den interna tupeln till en extern tuppel. Den skriver sedan om paketets källkod IP och ofta källporten innan den vidarebefordras.

Mappningen lagras i en översättningstabell med timeouts. När svaret kommer tillbaka till den offentliga IP och porten, letar NAT enheten upp mappningen och skriver om destinationen tillbaka till den interna värden och porten. För utgående initierade flöden fungerar detta smidigt och är för det mesta osynligt för användarna.

Detta tabellstyrda beteende är anledningen till att NAT känns tillståndsgivande. Det är inte bara att skriva om rubriker. Det är att komma ihåg vilken intern konversation som motsvarar vilken extern port så att svaren kan demultiplexeras korrekt.

Varför inkommande anslutningar är olika

Om en anslutning startar från internetsidan finns det ingen befintlig mappning, så NAT-enheten har ingen aning om vilken intern värd som ska ta emot den. Det är därför du behöver vidarebefordra portar eller en statisk mappning för inkommande tjänster som servrar med egen värd eller fjärrskrivbord.

Vissa NATs stöder hårnålning, vilket låter en intern värd nå en annan intern värd med hjälp av den offentliga adressen. Andra gör det inte. Detta kan skapa förvirrande fall där en tjänst fungerar utifrån men inte inifrån, eller vice versa.

Olika kartbeteenden har också betydelse för peer to peer. Vissa NATs skapar samma externa mappning oavsett destination, medan andra varierar mappningar per destination. Det mer restriktiva beteendet gör det svårare för två kamrater bakom NATs att hitta en väg till varandra utan hjälp.

Kartläggning och filtrering är separata beteenden

Det hjälper till att skilja kartläggning från filtrering. Kartläggningssvar: vilken extern adress och port använder detta interna flöde. Filtrera svar: vilka inkommande paket som tillåts tillbaka. Dessa val påverkar om UDP håltagning fungerar, om spel kan vara värd för sessioner och om VoIP-samtal ansluter tillförlitligt.

IETF har dokumenterat rekommenderade beteenden för NAT-hantering av UDP så att applikationer kan göra färre antaganden och fortfarande fungera konsekvent. Även med rekommendationer varierar verkliga distributioner mycket, vilket är anledningen till att NAT-traverseringstekniker överhuvudtaget finns.

När du felsöker NAT-problem, leta efter tre frågor. Fanns kartläggningen. Levde det fortfarande eller tog det timeout. Tillät brandväggspolicyn returtrafik. Du kan ofta lokalisera felet genom att observera om det utgående paketet lämnade och om något inkommande svar nådde kanten.

Biverkningar och säkerhetsmissuppfattningar

NAT bryter den rena end-to-end-modellen av internet. Protokoll som bäddar in IP-adresser eller portar i nyttolaster kan misslyckas om inte en gateway på applikationsnivå också skriver om dessa nyttolaster. Det är därför vissa äldre protokoll är ömtåliga bakom NAT.

Folk hävdar ibland att NAT är säkerhet. Det kan minska oönskad inkommande trafik som standard, men det är en policyeffekt av stateful filtrering, inte en säkerhetsgaranti. Skadlig programvara kan fortfarande ansluta utåt och ta emot svar, och felkonfigurerade port forwards kan exponera tjänster direkt.

En bättre inramning är att NAT är ett adress- och policyverktyg. Verklig säkerhet kommer från explicita brandväggsregler, stark autentisering, segmentering och korrigering, oavsett om NAT finns eller inte.