Niciodată în istoria omenirii nu au existat atât de multe informații despre Explorarea traducerii adreselor de rețea în 2023: un ghid cuprinzător așa cum există astăzi datorită internetului. Cu toate acestea, acest acces la tot ce are legătură cu Explorarea traducerii adreselor de rețea în 2023: un ghid cuprinzător nu este întotdeauna ușor. Saturație, utilizare slabă și dificultatea de a discerne între informațiile corecte și incorecte despre Explorarea traducerii adreselor de rețea în 2023: un ghid cuprinzător sunt adesea greu de depășit. Acesta este ceea ce ne-a motivat să creăm un site de încredere, sigur și eficient.
Ne-a fost clar că pentru a ne atinge scopul, nu era suficient să avem informații corecte și verificate despre Explorarea traducerii adreselor de rețea în 2023: un ghid cuprinzător . Despre tot ce adunasem Explorarea traducerii adreselor de rețea în 2023: un ghid cuprinzător de asemenea trebuia prezentat într-un mod clar, lizibil, într-o structură care să faciliteze experiența utilizatorului, cu un design curat și eficient, și care să prioritizeze viteza de încărcare. Suntem încrezători că am reușit acest lucru, deși lucrăm mereu pentru a aduce mici îmbunătățiri. Dacă ați găsit ceea ce ați găsit util Explorarea traducerii adreselor de rețea în 2023: un ghid cuprinzător și v-ați simțit confortabil, vom fi foarte fericiți dacă veți reveni scientiaen.com oricând vrei și ai nevoie.
Traducerea adresei de rețea (NAT) este o metodă de mapare a unui IP spațiu de adrese în alta prin modificare adresa de rețea informații în antet IP de pachete în timp ce acestea sunt în tranzit printr-un trafic dispozitiv de rutare. Tehnica a fost folosită inițial pentru a evita necesitatea de a atribui o nouă adresă fiecărei gazde atunci când o rețea a fost mutată sau când furnizor de servicii de internet a fost înlocuit, dar nu a putut ruta spațiul de adrese al rețelei. A devenit un instrument popular și esențial în conservarea spațiului global de adrese în fața epuizarea adresei IPv4. Un singur Internet-routable Adresa IP a unui gateway NAT poate fi folosit pentru un întreg rețea privată.
Deoarece traducerea adresei de rețea modifică informațiile despre adresa IP în pachete, implementările NAT pot varia în comportamentul lor specific în diferite cazuri de adresare și efectul lor asupra traficului de rețea. Specificul comportamentului NAT nu este documentat în mod obișnuit de către furnizorii de echipamente care conțin implementări NAT.
Cel mai simplu tip de NAT oferă o traducere unu-la-unu a adreselor IP. RFC 2663 se referă la acest tip de NAT ca NAT de bază; se mai numeste si a NAT unu-la-unu. În acest tip de NAT, numai adresele IP, antetul IP checksum, iar toate sumele de control de nivel superior care includ adresa IP sunt modificate. NAT de bază poate fi utilizat pentru a interconecta două rețele IP care au o adresare incompatibilă.
Majoritatea traducătorilor de adrese de rețea mapează mai multe gazde private la o singură adresă IP expusă public.
Iată o configurație tipică:
Toate pachetele IP au o adresă IP sursă și o adresă IP destinație. De obicei, pachetele care trec din rețeaua privată în rețeaua publică vor avea adresa sursă modificată, în timp ce pachetele care trec din rețeaua publică înapoi în rețeaua privată vor avea adresa de destinație modificată. Pentru a evita ambiguitatea în modul în care sunt traduse răspunsurile, sunt necesare modificări suplimentare la pachete. Cea mai mare parte a traficului pe Internet utilizează Protocol de control al transmisiei (TCP) sau Protocolul de datagramă utilizator (UDP). Pentru aceste protocoale, numere de port sunt modificate astfel încât combinația de adrese IP (în cadrul antet IP) și numărul portului (în cadrul Antetul stratului de transport) de pe pachetul returnat poate fi mapat fără ambiguitate la destinația rețelei private corespunzătoare. RFC 2663 folosește termenul adresa de rețea și traducerea portului (NAPT) pentru acest tip de NAT. Alte nume includ traducerea adresei portului (PAT), Mascararea IP, Supraîncărcare NAT și NAT multi-la-unu. Acesta este cel mai comun tip de NAT și a devenit sinonim cu termenul „NAT” în uz comun.
Această metodă permite comunicarea prin router numai atunci când conversația provine din rețeaua privată, deoarece transmisia inițială de origine este cea care stabilește informațiile necesare în tabelele de traducere. Astfel a browser web în cadrul rețelei private ar putea naviga pe site-uri web care se află în afara rețelei, în timp ce browserele web din afara rețelei nu ar putea naviga pe un site web găzduit în interiorul rețelei. Protocoalele care nu se bazează pe TCP și UDP necesită alte tehnici de traducere.
Un avantaj suplimentar al NAT unu-la-mulți este că atenuează epuizarea adresei IPv4 permițând rețelelor întregi să fie conectate la Internet folosind o singură adresă IP publică.
Adresa de rețea și traducerea portului pot fi implementate în mai multe moduri. Este posibil ca unele aplicații care utilizează informații despre adresa IP să fie nevoie să determine adresa externă a unui traducător de adrese de rețea. Aceasta este adresa pe care colegii săi de comunicare din rețeaua externă o detectează. Mai mult, poate fi necesar să se examineze și să se clasifice tipul de mapare utilizat, de exemplu atunci când se dorește să se stabilească o cale de comunicare directă între doi clienți, ambii fiind în spatele unor gateway-uri NAT separate.
În acest scop, RFC 3489 a specificat un protocol numit Traversarea simplă a UDP peste NAT-uri (STUN) în 2003. A clasificat implementările NAT ca NAT cu con complet, (adresă) restricted-cone NAT, NAT cu port restrictionat or NAT simetricși a propus o metodologie pentru testarea unui dispozitiv în consecință. Cu toate acestea, aceste proceduri au fost depășite de la statutul standardelor, deoarece metodele sunt inadecvate pentru a evalua corect multe dispozitive. RFC 5389 a standardizat noi metode în 2008 și acronimul STUN acum reprezintă noul titlu al specificației: Utilitare de traversare a sesiunii pentru NAT.
NAT cu con complet, de asemenea cunoscut ca si NAT unu-la-unu
|
|
(Adresa)-con restrictionat NAT
|
|
NAT cu porturi restricționate La fel ca un con restricționat pentru adresă NAT, dar restricția include numerele de porturi.
|
|
NAT simetric
|
Multe implementări NAT combină aceste tipuri, deci este mai bine să faceți referire la comportamentul NAT individual specific în loc să folosiți terminologia con/simetrică. RFC 4787 încearcă să atenueze confuzia prin introducerea unei terminologii standardizate pentru comportamentele observate. Pentru primul punct din fiecare rând al tabelului de mai sus, RFC ar caracteriza NAT-urile Full-Cone, Restricted-Cone și Port-Restricted Cone ca având un Mapare independentă de punct final, în timp ce ar caracteriza un NAT simetric ca având un Maparea în funcție de adresă și port. Pentru al doilea marcator din fiecare rând al tabelului de mai sus, RFC 4787 ar eticheta, de asemenea, NAT Full-Cone ca având un Filtrare independentă de punct final, Restricted-Cone NAT ca având un Filtrare în funcție de adresă, Port-Restricted Cone NAT ca având un Filtrare în funcție de adresă și port, și NAT simetric ca având fie un Filtrare în funcție de adresă or Filtrare în funcție de adresă și port. Alte clasificări ale comportamentului NAT menționate în RFC includ dacă acestea păstrează porturile, când și cum sunt reîmprospătate mapările, dacă mapările externe pot fi utilizate de gazde interne (adică, agrafarea părului comportamentul) și nivelul de determinism pe care NAT-urile manifestă atunci când aplică toate aceste reguli. Mai exact, majoritatea NAT-urilor se combină NAT simetric pentru conexiuni de ieșire cu static maparea portului, unde pachetele primite adresate adresei externe și portului sunt redirecționate către o anumită adresă și port intern.
Traversarea NAT problema apare atunci când colegii din spatele diferitelor NAT încearcă să comunice. O modalitate de a rezolva această problemă este utilizarea port forwarding. O altă modalitate este de a folosi diferite tehnici de traversare NAT. Cea mai populară tehnică pentru traversarea TCP NAT este Perforare TCP.
Perforarea TCP necesită ca NAT să urmeze conservarea porturilor proiectare pentru TCP. Pentru o anumită comunicare TCP de ieșire, aceleași numere de port sunt utilizate pe ambele părți ale NAT. Păstrarea portului NAT pentru conexiunile TCP de ieșire este crucială pentru traversarea TCP NAT, deoarece, sub TCP, un port poate fi utilizat doar pentru o comunicare la un moment dat, astfel încât programele leagă socket-uri TCP distincte la porturi efemere pentru fiecare comunicare TCP, făcând imposibilă predicția portului NAT pentru TCP.
Pe de altă parte, pentru UDP, NAT-urile nu au nevoie de conservarea portului. Într-adevăr, mai multe comunicații UDP (fiecare cu un punct final) poate apărea pe același port sursă, iar aplicațiile reutiliza de obicei același socket UDP pentru a trimite pachete către gazde distincte. Acest lucru face predicția portului simplă, deoarece este același port sursă pentru fiecare pachet.
În plus, păstrarea porturilor în NAT pentru TCP permite protocoalelor P2P să ofere mai puțină complexitate și mai puțină latență, deoarece nu este nevoie să folosiți o terță parte (cum ar fi STUN) pentru a descoperi portul NAT, deoarece aplicația în sine cunoaște deja portul NAT.
Cu toate acestea, dacă două gazde interne încearcă să comunice cu aceeași gazdă externă folosind același număr de port, NAT poate încerca să utilizeze o adresă IP externă diferită pentru a doua conexiune sau poate fi necesar să renunțe la conservarea portului și să remapeze portul.: 9
Ca de 2006, aproximativ 70% dintre clienții din P2P rețelele au folosit o formă de NAT.
Fiecare pachet TCP și UDP conține un număr de port sursă și un număr de port destinație. Fiecare dintre aceste pachete este încapsulat într-un pachet IP, al cărui antet IP conține o adresă IP sursă și o adresă IP destinație. Adresa IP/protocol/număr de port triplu definește o asociere cu a priza de retea.
Pentru serviciile accesibile public, cum ar fi serverele web și de e-mail, numărul portului este important. De exemplu, portul 80 se conectează printr-o priză la server de web software și portul 25 la un server de e-mail SMTP daemon. Adresa IP a unui server public este de asemenea importantă, similară ca unicitate globală cu o adresă poștală sau un număr de telefon. Atât adresa IP, cât și numărul portului trebuie să fie cunoscute corect de toate gazdele care doresc să comunice cu succes.
Adresele IP private, așa cum sunt descrise în RFC 1918, sunt utilizabile numai în rețelele private care nu sunt conectate direct la internet. Porturile sunt puncte finale de comunicare unice pentru gazda respectivă, astfel încât o conexiune prin dispozitivul NAT este menținută prin maparea combinată a portului și a adresei IP. O adresă privată din interiorul NAT este mapată la o adresă publică externă. Traducerea adresei de port (PAT) rezolvă conflictele care apar atunci când mai multe gazde folosesc același număr de port sursă pentru a stabili conexiuni externe diferite în același timp.
Un dispozitiv NAT este similar cu un sistem telefonic de la un birou care are un număr de telefon public și mai multe extensii. Apelurile telefonice efectuate de la birou par să provină de la același număr de telefon. Cu toate acestea, un apel primit care nu specifică o extensie nu poate fi transferat automat unei persoane din birou. În acest scenariu, biroul este un LAN privat, numărul de telefon principal este adresa IP publică, iar extensiile individuale sunt numere de port unice.
Cu NAT, toate comunicațiile trimise către gazde externe conțin de fapt extern Adresa IP și informațiile de port ale dispozitivului NAT în loc de adresele IP interne ale gazdei sau numerele de port. NAT traduce doar adresele IP și porturile gazdelor sale interne, ascunzând adevăratul punct final al unei gazde interne într-o rețea privată.
Când un computer din rețeaua privată (internă) trimite un pachet IP către rețeaua externă, dispozitivul NAT înlocuiește adresa IP sursă internă din antetul pachetului cu adresa IP externă a dispozitivului NAT. PAT poate atribui conexiunii un număr de port dintr-un grup de porturi disponibile, inserând acest număr de port în câmpul portului sursă. Pachetul este apoi redirecționat către rețeaua externă. Dispozitivul NAT face apoi o intrare într-un tabel de traducere care conține adresa IP internă, portul sursă original și portul sursă tradus. Pachetele ulterioare din aceeași adresă IP sursă internă și număr de port sunt traduse în aceeași adresă IP și număr de port sursă externă. Calculatorul care primește un pachet care a fost supus NAT stabilește o conexiune la portul și adresa IP specificate în pachetul modificat, indiferent de faptul că adresa furnizată este în curs de traducere.
La primirea unui pachet de la rețeaua externă, dispozitivul NAT caută în tabelul de traducere pe baza portului de destinație din antetul pachetului. Dacă se găsește o potrivire, adresa IP de destinație și numărul portului sunt înlocuite cu valorile găsite în tabel și pachetul este redirecționat către rețeaua internă. În caz contrar, dacă numărul portului de destinație al pachetului de intrare nu este găsit în tabelul de traducere, pachetul este abandonat sau respins deoarece dispozitivul PAT nu știe unde să-l trimită.
Operarea NAT este de obicei transparentă atât pentru gazdele interne, cât și pentru cele externe. Dispozitivul NAT poate funcționa ca gateway implicit pentru gazda internă care este de obicei conștientă de adresa IP adevărată și portul TCP sau UDP al gazdei externe. Cu toate acestea, gazda externă este conștientă doar de adresa IP publică a dispozitivului NAT și de portul special utilizat pentru a comunica în numele unei anumite gazde interne.
IEEE Reverse Address and Port Translation (RAPT sau RAT) permite o gazdă a cărei reală Adresa IP se modifică din când în când pentru a rămâne accesibil ca server printr-o adresă IP fixă de acasă. CiscoImplementarea RAPT a lui este supraîncărcarea PAT sau NAT și mapează mai multe adrese IP private la o singură adresă IP publică. Mai multe adrese pot fi mapate la o singură adresă, deoarece fiecare adresă privată este urmărită de un număr de port. PAT folosește numere unice de port sursă pe adresa IP globală interioară pentru a face distincția între traduceri. PAT încearcă să păstreze portul sursă original. Dacă acest port sursă este deja utilizat, PAT atribuie primul număr de port disponibil începând de la începutul grupului de porturi corespunzător 0–511, 512–1023 sau 1024–65535. Când nu sunt mai multe porturi disponibile și există mai multe adrese IP externe configurate, PAT trece la următoarea adresă IP pentru a încerca din nou să aloce portul sursă inițial. Acest proces continuă până când epuizează porturile disponibile și adresele IP externe.
Maparea adresei și a portului este o propunere Cisco care combină Adresa plus Port traducere cu tunelare a pachetelor IPv4 prin internă a unui furnizor de ISP IPv6 reţea. De fapt, este un (aproape) Fara stare alternativă la NAT de calitate operator și DS Lite care împinge Adresa IPv4Funcția de traducere /port (și menținerea stării NAT) în întregime în cea existentă echipamentul sediului clientului Implementarea NAT. Evitând astfel NAT444 și problemele de stare a NAT de calitate operator și oferă, de asemenea, un mecanism de tranziție pentru implementarea IPv6 nativ în același timp, cu foarte puțină complexitate adăugată.
Gazdele din spatele routerelor activate pentru NAT nu au conectivitate end-to-end și nu poate participa la unele protocoale de internet. Servicii care necesită inițierea de TCP conexiuni din rețeaua exterioară sau care utilizează protocoale fără stat, cum ar fi cele care utilizează UDP, poate fi perturbat. Cu excepția cazului în care routerul NAT face un efort specific pentru a suporta astfel de protocoale, pachetele primite nu pot ajunge la destinație. Unele protocoale pot găzdui o instanță de NAT între gazdele participante („mod pasiv” FTP, de exemplu), uneori cu ajutorul unui gateway la nivel de aplicație (A se vedea § Aplicatii afectate de NAT), dar eșuează atunci când ambele sisteme sunt separate de internet prin NAT. Utilizarea NAT se complică de asemenea protocoale de tunelare precum IPsec deoarece NAT modifică valorile din anteturi care interferează cu verificările de integritate efectuate de IPsec și alte protocoale de tunel.
Conectivitatea end-to-end a fost un principiu de bază al Internetului, susținut, de exemplu, de Consiliul de arhitectură a internetului. Documentele actuale de arhitectură pe Internet observă că NAT este o încălcare a principiul de la capăt la capăt, dar acel NAT are un rol valid în proiectarea atentă. Există o preocupare considerabil mai mare cu utilizarea NAT IPv6 și mulți arhitecți IPv6 cred că IPv6 a fost destinat să elimine necesitatea NAT.
O implementare care urmărește doar porturile poate fi epuizată rapid de aplicațiile interne care utilizează mai multe conexiuni simultane, cum ar fi un HTTP solicitarea unei pagini web cu multe obiecte încorporate. Această problemă poate fi atenuată prin urmărirea adresei IP de destinație în plus față de portul, partajând astfel un singur port local cu multe gazde la distanță. Această urmărire suplimentară crește complexitatea implementării și resursele de calcul la dispozitivul de traducere.
Deoarece adresele interne sunt toate mascate în spatele unei adrese accesibile publicului, este imposibil ca gazdele externe să inițieze direct o conexiune la o anumită gazdă internă. Aplicații precum VOIP, videoconferinta, și alte aplicații peer-to-peer trebuie să utilizeze Traversarea NAT tehnici de funcționare.
Pure NAT, care operează numai pe IP, poate sau nu să analizeze corect protocoalele cu încărcături utile care conțin informații despre IP, cum ar fi ICMP. Acest lucru depinde dacă sarcina utilă este interpretată de o gazdă pe în interiorul or exterior a traducerii. Protocoale de bază ca TCP și UDP nu poate funcționa corect decât dacă NAT ia măsuri dincolo de nivelul rețelei.
Pachetele IP au o sumă de control în fiecare antet de pachet, care oferă detectarea erorilor numai pentru antet. Datagramele IP pot deveni fragmentate și este necesar ca un NAT să reasamblați aceste fragmente pentru a permite recalcularea corectă a sumelor de control de nivel superior și urmărirea corectă a pachetelor care aparțin cărei conexiuni.
TCP și UDP, au o sumă de control care acoperă toate datele pe care le transportă, precum și antetul TCP sau UDP, plus un pseudo-antet care conține adresele IP sursă și destinație ale pachetului care poartă antetul TCP sau UDP. Pentru ca un NAT de origine să treacă cu succes TCP sau UDP, trebuie să recalculeze suma de control antet TCP sau UDP pe baza adreselor IP traduse, nu pe cele originale, și să pună acea sumă de control în antetul TCP sau UDP al primului pachet al setului fragmentat. de pachete.
Alternativ, gazda de origine poate funcționa calea MTU Discovery pentru a determina dimensiunea pachetului care poate fi transmis fără fragmentare și apoi setați nu fragmentați (DF) bit în câmpul de antet al pachetului corespunzător. Aceasta este doar o soluție unidirecțională, deoarece gazda care răspunde poate trimite pachete de orice dimensiune, care pot fi fragmentate înainte de a ajunge la NAT.
Traducerea adresei rețelei de destinație (DNAT) este o tehnică de schimbare transparentă a destinației Adresa IP a unui pachet rutat și efectuând funcția inversă pentru orice răspuns. Orice router situat între două puncte finale poate efectua această transformare a pachetului.
DNAT este folosit în mod obișnuit pentru a publica un serviciu situat într-o rețea privată pe o adresă IP accesibilă public. Această utilizare a DNAT se mai numește port forwarding, Sau DMZ atunci când este folosit pe un întreg serverul, care devine expus la WAN, devenind analog cu un militar neapărat zonă demilitarizată (DMZ).
Sensul termenului SNAT variază în funcție de furnizor:
Traducerea securizată a adreselor de rețea (SNAT) face parte din Microsoft Internet Security and Acceleration Server și este o extensie a driverului NAT încorporat în Microsoft Windows Server. Oferă urmărirea și filtrarea conexiunilor pentru conexiunile de rețea suplimentare necesare pentru FTP, ICMP, H.323, și PPTP protocoale precum și capacitatea de a configura un HTTP transparent server proxy.
NAT dinamic, la fel ca NAT static, nu este obișnuit în rețelele mai mici, dar se găsește în cadrul corporațiilor mai mari cu rețele complexe. În cazul în care NAT static oferă o mapare internă a adreselor IP statice unu-la-unu, NAT dinamic utilizează o grup de adrese IP publice.
Agrafarea NAT, de asemenea cunoscut ca si Loopback NAT or Reflecția NAT, este o caracteristică a multor routere de consum unde o mașină pe LAN este capabil să acceseze o altă mașină pe LAN prin adresa IP externă a LAN/routerului (cu redirecționarea portului configurată pe router pentru a direcționa cererile către mașina corespunzătoare din LAN). Această noțiune este descrisă oficial în 2008, RFC 5128.
Următorul descrie un exemplu de rețea:
Dacă un pachet este trimis către 203.0.113.1 de un computer la 192.168.1.100, pachetul ar fi în mod normal direcționat către Gateway implicit (routerul) Un router cu caracteristica loopback NAT detectează asta 203.0.113.1 este adresa interfeței sale WAN și tratează pachetul ca și cum ar veni de la acea interfață. Acesta determină destinația pentru acel pachet, pe baza regulilor DNAT (port forwarding) pentru destinație. Dacă datele au fost trimise la portul 80 și există o regulă DNAT pentru portul 80 direcționat către 192.168.1.2, atunci gazda de la acea adresă primește pachetul.
Dacă nu este disponibilă nicio regulă DNAT aplicabilă, routerul renunță la pachet. Un Destinație ICMP inaccesabilă răspunsul poate fi trimis. Dacă au existat reguli DNAT, traducerea adresei este încă în vigoare; routerul rescrie în continuare adresa IP sursă în pachet. Calculatorul local (192.168.1.100) trimite pachetul ca provenind de la 192.168.1.100, dar serverul (192.168.1.2) îl primește ca provenind de la 203.0.113.1. Când serverul răspunde, procesul este identic cu un expeditor extern. Astfel, comunicarea bidirecțională este posibilă între gazdele din interiorul rețelei LAN prin adresa IP publică.
Traducerea adreselor de rețea nu este folosită în mod obișnuit în IPv6 deoarece unul dintre obiectivele de proiectare ale IPv6 este restabilirea conectivității la rețea de la capăt la capăt. Spațiul mare de adrese IPv6 evită necesitatea de a conserva adrese și fiecărui dispozitiv i se poate atribui o adresă unică, rutabilă la nivel global. Utilizarea de adrese locale unice in combinatie cu traducerea prefixului de rețea poate obține rezultate similare cu NAT.
Spațiul mare de adresare al IPv6 poate fi încă învins în funcție de lungimea reală a prefixului dată de operator. Nu este neobișnuit să vi se înmâneze un prefix /64 – cea mai mică subrețea recomandată – pentru o întreagă rețea de domiciliu, necesitând utilizarea unei varietăți de tehnici pentru a subdiviza manual intervalul pentru ca toate dispozitivele să rămână accesibile. Chiar și NAT real de la IPv6 la IPv6, NAT66, se poate dovedi util uneori: blogul APNIC subliniază un caz în care autorului i-a fost furnizată doar o singură adresă (/128).
niste strat de aplicație protocoale, cum ar fi Protocolul de transfer de fișiere (FTP) și Protocolul de inițiere a sesiunii (SIP), trimit adrese de rețea explicite în datele aplicației lor. FTP în modul activ, de exemplu, utilizează conexiuni separate pentru controlul traficului (comenzi) și pentru traficul de date (conținutul fișierului). Atunci când solicită un transfer de fișiere, gazda care face cererea identifică conexiunea de date corespunzătoare prin intermediul acesteia strat de rețea și stratul de transport adrese. Dacă gazda care face cererea se află în spatele unui firewall NAT simplu, traducerea adresei IP sau a numărului portului TCP face ca informațiile primite de server să fie invalide. SIP controlează de obicei voce peste IP apeluri și suferă aceeași problemă. SIP și însoțitorul acestuia Protocolul de descriere a sesiunii poate folosi mai multe porturi pentru a configura o conexiune și a transmite fluxul de voce prin Protocol de transport în timp real. Adresele IP și numerele de porturi sunt codificate în datele de încărcare utilă și trebuie cunoscute înainte de parcurgerea NAT-urilor. Fără tehnici speciale, precum STUN, comportamentul NAT este imprevizibil și comunicațiile pot eșua. Application Layer Gateway Software-ul sau hardware-ul (ALG) pot corecta aceste probleme. Un modul software ALG care rulează pe un dispozitiv firewall NAT actualizează orice date de încărcare utilă invalide prin traducerea adresei. ALG-urile trebuie să înțeleagă protocolul de nivel superior pe care trebuie să-l repare și, astfel, fiecare protocol cu această problemă necesită un ALG separat. De exemplu, pe multe sisteme Linux, există module de kernel numite trackere de conexiune care servesc la implementarea ALG-urilor. Cu toate acestea, ALG nu poate funcționa dacă datele de protocol sunt criptate.
O altă soluție posibilă la această problemă este utilizarea Traversarea NAT tehnici folosind protocoale precum STUN or Stabilirea de conectivitate interactivă (ICE), sau abordări proprietare în a controlor de frontieră de sesiune. Traversarea NAT este posibilă atât în aplicațiile bazate pe TCP, cât și pe UDP, dar tehnica bazată pe UDP este mai simplu, mai larg înțeles și mai compatibil cu NAT-urile vechi.[citare] În ambele cazuri, protocolul de nivel înalt trebuie să fie proiectat ținând cont de traversarea NAT și nu funcționează în mod fiabil între NAT-uri simetrice sau alte NAT-uri moștenite cu un comportament prost.
Alte posibilitati sunt Internet Gateway Device Protocol, Protocol NAT Port Mapping (NAT-PMP), sau Protocolul de control al porturilor (PCP), dar acestea necesită ca dispozitivul NAT să implementeze acel protocol.
Majoritatea protocoalelor client-server (FTP fiind principala excepție), cu toate acestea, nu trimit informații de contact de nivel 3 și nu necesită niciun tratament special din partea NAT-urilor. De fapt, evitarea complicațiilor NAT este practic o cerință atunci când se proiectează astăzi noi protocoale de nivel superior.
NAT-urile pot cauza, de asemenea, probleme unde IPsec se aplică criptarea și în cazurile în care mai multe dispozitive precum Telefoane SIP sunt situate în spatele unui NAT. Telefoanele care își criptează semnalizarea cu IPsec încapsulează informațiile de port într-un pachet criptat, ceea ce înseamnă că dispozitivele NAT nu pot accesa și traduce portul. În aceste cazuri, dispozitivele NAT revin la operațiuni NAT simple. Aceasta înseamnă că tot traficul care se întoarce la NAT este mapat pe un singur client, determinând eșecul serviciului către mai mult de un client din spatele NAT. Există câteva soluții la această problemă: una este utilizarea TLS, care operează la stratul 4 și nu maschează numărul portului; altul este să încapsuleze IPsec-ul în interior UDP – aceasta din urmă fiind soluția aleasă de TISPAN pentru a realiza traversarea NAT securizată sau un NAT cu „IPsec Passthru” a sustine; alta este să folosești a controlor de frontieră de sesiune pentru a ajuta la traversarea NAT.
Stabilirea de conectivitate interactivă este o tehnică de traversare NAT care nu se bazează pe suport ALG.
Vulnerabilitatea protocolului DNS anunțată de Dan Kaminsky pe 8 iulie 2008, este afectat indirect de maparea portului NAT. A evita Otrăvire cache DNS, este foarte de dorit să nu traduceți numerele de port sursă UDP ale solicitărilor DNS de ieșire de la un server DNS în spatele unui firewall care implementează NAT. Soluția recomandată pentru vulnerabilitatea DNS este de a face ca toate serverele DNS de stocare în cache să utilizeze porturi aleatorii UDP sursă. Dacă funcția NAT derandomizează porturile sursă UDP, serverul DNS devine vulnerabil.
{{cite journal}}
: Jurnalul citat necesită |journal=
(ajutor)