Lezioni di informatica

Tipo di connessione nat. NAT sulle dita: cos'è? Esistono tre tipi di NAT

Cos'è il NAT

Il tuo computer può essere connesso direttamente a Internet. Poi dicono di sì esterno Indirizzo IP.

Ciò di solito significa che il computer è collegato direttamente a un modem (DSL, cavo o analogico normale).

Dietro NAT significa che il tuo computer non è connesso a Internet, ma a una rete locale. Allora l'ha fatto interno Un indirizzo IP di per sé inaccessibile da Internet.

Il tuo computer accede a Internet tramite NAT, il processo di traduzione degli indirizzi interni in esterni e viceversa. Un dispositivo NAT è solitamente chiamato router.

La particolarità del NAT è che le connessioni avviate dal tuo computer passano in modo trasparente attraverso il dispositivo NAT a Internet. Tuttavia, le connessioni che altri computer vorrebbero stabilire con voi da Internet non possono raggiungervi.

Trovare l'indirizzo IP del computer

Esegui">Apri una finestra di dialogo per eseguire i programmi: fai clic sul pulsante Start, seleziona Esegui dal menu.

In Windows 2000/XP, digita il comando cmd /k ipconfig, fai clic su OK e guarda il risultato.

Configurazione IP di Windows 2000 Scheda Ethernet Connessione alla rete locale: Suffisso DNS specifico della connessione . : Indirizzo IP. . . . . . . . . . . . : 192.168.1.10 Maschera di sottorete. . . . . . . . . . . : 255.255.255.0 Gateway predefinito. . . . . . . . . : 192.168.1.1

Il primo di questi indirizzi è l'indirizzo IP del tuo computer.

Sei dietro NAT?

Tre intervalli di indirizzi IP speciali sono riservati per le reti locali e non vengono utilizzati in Internet:

10. 0. 0. 0 - 10. 255.255.255 172. 16. 0. 0 - 172. 31.255.255 192.168. 0. 0 - 192.168.255.255

Se l'indirizzo IP del tuo computer si trova in uno di questi intervalli, cioè inizia con 10. o con 192.168. oppure da 172.nn. (dove nn va da 16 a 31), allora questo è un indirizzo locale (interno) e sei sicuramente dietro NAT.

In caso contrario, controlla ora con quale indirizzo IP ti vedono gli altri computer su Internet. Ad esempio, su whatsmyip.org (“Il tuo indirizzo IP è x.x.x.x” nella parte superiore della pagina) o su myipaddress.com.

Se l'indirizzo IP del tuo computer corrisponde a uno di questi siti visualizzati, sei sicuramente connesso direttamente a Internet.

In altri casi è impossibile dirlo con certezza. Sono possibili le seguenti opzioni:

  • Sei dietro NAT, ma il tuo amministratore di rete ha scelto indirizzi interni non standard per la tua rete locale. Trovalo e chiedigli perché ha dovuto farlo.
  • accedi a Internet tramite un server proxy (poi whatsmyip.org ti ha mostrato l'indirizzo di questo server proxy). In molti casi, puoi determinare se esiste un server proxy tra te e Internet, utilizzando ad esempio lagado.com/proxy-test.

    La connessione tramite proxy non è trattata in questa guida..

Possibilità di connessione tramite NAT

Se sei dietro NAT, il passaggio successivo è determinare dove si trova esattamente il dispositivo NAT.

Fornitore NAT

    Poi lo dicono
  • il provider ti fornisce Internet tramite NAT,
  • o che il fornitore non ti fornisce un indirizzo IP esterno,
  • o che sei connesso attraverso la rete locale del provider

Il modo più semplice è chiamare il tuo provider e scoprirlo. Oppure chiedi a vicini esperti con la stessa connessione.

Quando ti connetti a Internet tramite la rete locale del provider, non puoi creare una porta accessibile per te stesso. A meno che, ovviamente, il tuo provider non reindirizzi una porta specifica appositamente per te, il che è improbabile. O a meno che non si paghi un extra per un servizio che di solito viene chiamato indirizzo IP "esterno" ("bianco").

NAT in un ufficio o in un condominio

In linea di principio, la situazione è la stessa, ma puoi cercare approcci all'amministratore locale. In definitiva, decidere se una porta è disponibile dipende dalla possibilità di accedere alle impostazioni del router.

Inoltre, puoi anche provare UPnP, nel caso in cui il tuo router lo abbia lasciato abilitato.

NAT è tuo

In questo caso puoi quasi sempre configurarlo e ottenere una porta disponibile.

Di solito si tratta di una connessione tramite un router domestico o di una connessione tramite un altro computer, ad esempio utilizzando ICS (la seconda opzione non è considerata qui).

Naturalmente, in linea di principio, succede anche che tu abbia NAT sia a casa che presso il tuo provider, cioè il tuo computer è dietro due NAT contemporaneamente. Questo può essere verificato andando nelle impostazioni del router, guardando il suo indirizzo esterno e poi seguendo lo scenario sopra (se appartiene a Questo indirizzo degli intervalli di rete locale, corrisponde all'indirizzo con cui sei visto su Internet).

Buona giornata, cari lettori! Bene, parliamone NAT.

Oggi parleremo più in dettaglio di un argomento un po' doloroso e piuttosto incomprensibile, ma più incomprensibile che doloroso.

In misura maggiore, questo problema riguarda coloro che giocano a giochi multiplayer e, in breve, questo problema suona più o meno così: "PERCHÉ NESSUNO VIENE DA ME?" Per altri, questo problema sembra leggermente diverso, vale a dire:

  • Perchè il torrent non si scarica?
  • Perché utenti/amici/conoscenti/persone sconosciute non riescono a connettersi a FTP, WEB, VOIP (TS, Mumble, Bucket) e ad altri server che stai cercando di configurare da così tanto tempo e nemmeno a controllare che tutto funzioni per te?
  • Perché il tuo server domestico personale è vuoto? Potrebbe trattarsi di una cospirazione universale?

Ma però non c'è nessun complotto, il colpevole di tutti questi guai è accanto a te e ti fa l'occhiolino sornione con le lampadine, e si chiama... un router, sì, sì, lo stesso che distribuisce Internet a tutti i tuoi dispositivi (e forse quelli dei tuoi vicini).

In breve, gli utenti di Internet semplicemente non possono connettersi a te perché il tuo router non glielo consente, ma lo fa non solo per capriccio, ma perché non sa che tutte queste persone vogliono connettersi a te. Quindi pensa che vogliano qualcosa da lui.

Sì, ti ho appena descritto perché è necessario il NAT. E ora di cosa si tratta.

Definizione generale

NAT (Network Address Translation) è un meccanismo che consente al router di determinare quali servizi si trovano dietro il router e dovrebbero essere accessibili da Internet in modo che gli utenti da lì possano utilizzare questi servizi (non ho preso la definizione dal wiki, perché è astruso e non tutti lo capiscono).

NAT è presente in tutti i router e sistemi operativi server in una forma o nell'altra. Nei router questo viene solitamente chiamato port forwarding, in Linux iptables, sui server Windows - in apparecchiature speciali. Ora parliamo dei diversi tipi di NAT.

Digitarne uno, NAT statico

Il NAT statico non è necessario per la tua casa, ma è necessario se il tuo provider ha assegnato diversi indirizzi IP (indirizzi esterni o “bianchi”) alla tua azienda, e hai bisogno che alcuni server siano sempre visibili da Internet, senza che i loro indirizzi cambino.

Quelli. Si verifica la conversione dell'indirizzo 1-1 (un IP esterno viene assegnato a un server interno). Con questa configurazione, i tuoi server saranno sempre accessibili da Internet su qualsiasi porta.

  • Il vantaggio di questo metodo è che si apre l'accesso da Internet specificamente per un determinato programma su un determinato computer/server, tutte le altre porte del computer/server rimangono chiuse;
  • Lo svantaggio è che è necessario aprire manualmente tutte le porte (a volte i programmi lo fanno per te utilizzando la tecnologia UPnP, ma ciò non sempre accade).

Epilogo

Si è rivelato un po' caotico e l'argomento è piuttosto complicato, ma spero che ora la parola NAT non vi faccia rabbrividire :)

Come sempre, se avete domande, pensieri, aggiunte, ecc., non esitate a commentare questo post.

PS: Per l'esistenza dell'articolo, un ringraziamento speciale a un amico del progetto e membro del nostro team con il soprannome “barn4k“

Queste sono tecnologie completamente diverse. Non confonderli.

Cos'è il NAT

NAT è un termine collettivo che si riferisce alla tecnologia di traduzione degli indirizzi e/o dei protocolli di rete. I dispositivi NAT eseguono trasformazioni sul passaggio dei pacchetti, sostituendo indirizzi, porte, protocolli, ecc.

Esistono concetti più ristretti di SNAT, DNAT, masquerading, PAT, NAT-PT, ecc.

perché è necessario NAT, come viene utilizzato

Per connettere la rete interna a Internet

  • attraverso un pool di indirizzi esterni
  • tramite un indirizzo esterno

Per sostituire un indirizzo IP esterno con un altro (reindirizzamento del traffico)

Per bilanciare il carico tra server identici con indirizzi IP diversi.

Per combinare due reti locali con indirizzamento interno che si interseca.

come funziona il NAT

s+d NAT (unione di rami - male!)

mappatura delle porte, porte di inoltro

Vantaggi e svantaggi

Incompatibile con alcuni protocolli. Una particolare implementazione NAT deve supportare l'ispezione del protocollo richiesto.

NAT ha la proprietà di "schermare" la rete interna dal mondo esterno, ma non può essere utilizzato al posto di un firewall.

Configurazione su Cisco IOS

I router e i firewall Cisco supportano diversi tipi di NAT, a seconda del set di opzioni software. Il più utilizzato è il metodo NAT con l'associazione di indirizzi locali interni a diverse porte dello stesso indirizzo esterno (PAT nella terminologia Cisco).

Per configurare NAT su un router, è necessario: o Determinare il traffico che deve essere tradotto (utilizzando liste di accesso o mappe di percorso);

IP access-list esteso PERMESSO LOCALE ip 10.0.0.0 0.255.255.255 qualsiasi

Route-map INT1 corrisponde all'indirizzo IP LOCALE interfaccia di corrispondenza FastEthernet0/1.1

L'elenco di accesso LOCALE seleziona tutto il traffico dalla rete 10.

La mappa del percorso INT1 seleziona l'elenco di accesso LOCALE del traffico in uscita attraverso la sottointerfaccia Fa 0/1.1

o Determinare a quali indirizzi esterni trasmettere. Seleziona un pool di indirizzi esterni. Per PAT è sufficiente un indirizzo.

Pool nat IP GLOBALE 212.192.64.74 212.192.64.74 maschera di rete 255.255.255.0

Specificando un pool di indirizzi esterni denominato GLOBAL. C'è un solo indirizzo nel pool.

o Abilita NAT per gli indirizzi interni ed esterni selezionati.

IP nat all'interno della mappa di percorso di origine INT1 sovraccarico GLOBALE

Abilita NAT per la traduzione dell'indirizzo di origine sull'interfaccia interna. Verrà trasmesso solo il traffico che rientra nelle condizioni della mappa del percorso INT1. L'indirizzo esterno verrà preso dal pool GLOBAL.

Ip nat interno sorgente statico tcp 10.0.0.1 23 212.192.64.74 23 extend

“Port forwarding” statico o “pubblicazione di servizi”. Nel traffico diretto all'indirizzo 212.192.64.74 sulla porta TCP 23, la destinazione verrà sostituita dall'indirizzo 10.0.0.1 e dalla porta 23.

o Assegnare interfacce interne ed esterne.

Interfaccia FastEthernet0/0 ip nat interno interfaccia FastEthernet0/1.1 ip nat esterno

L'interfaccia Fa 0/0 è assegnata internamente per NAT.

La sottointerfaccia Fa 0/1.1 è assegnata come esterna per NAT.

O Debug e diagnostica:

Traduzioni Ship Nat - visualizza la tabella delle trasmissioni attuali; cancella traduzioni ip nat: elimina tutte le traduzioni correnti; debug ip nat – abilita i messaggi di debug (undebug all – disabilita il debug).

Esempi

Ecco alcuni esempi demo per l'emulatore Cisco Packet Tracer.

Uno schema semplice per connettere una piccola rete a Internet tramite un pool di indirizzi esterni

Uno schema semplice per connettere una rete a Internet tramite un indirizzo esterno

Schema di combinazione di reti con indirizzamento intersecante

Come funziona il NAT

Il modo in cui vengono applicate le regole NAT varia a seconda dei diversi produttori e delle diverse apparecchiature. Ecco la procedura per applicare le policy NAT per i router su Cisco IOS:

Dall'interno all'esterno

Se IPSec, controlla la decrittografia dell'elenco di accesso di input - per CET (Cisco Encryption Technology) o IPSec controlla l'elenco di accesso di input controlla i limiti di velocità di input account di input reindirizzamento al routing della policy della cache Web instradamento NAT dall'interno all'esterno (traduzione da locale a globale) crittografia (controlla mappa e contrassegnare per la crittografia) controllare l'elenco di accesso all'output ispezionare (controllo degli accessi basato sul contesto (CBAC)) TCP intercettare la crittografia Accodamento

Dall'esterno all'interno

Se IPSec, controlla la decrittografia dell'elenco di accesso di input - per CET o IPSec controlla l'elenco di accesso di input controlla i limiti di velocità di input input accounting reindirizza alla cache Web NAT dall'esterno all'interno (traduzione da globale a locale) policy routing routing crypto (controlla la mappa e contrassegna la crittografia) controlla elenco di accesso all'output ispeziona CBAC TCP intercetta la crittografia Accodamento

Canale Internet di un provider tramite NAT

Uno schema semplice per implementare NAT con un provider

Prenotazione di un canale Internet da due provider utilizzando NAT, ip sla

Dato: riceviamo Internet per diversi computer dall'ISP1. Ci ha dato l'indirizzo 212.192.88.150. L'accesso a Internet è organizzato da questo indirizzo IP tramite NAT.

Compito: connettere un provider di backup - ISP2. Ci darà l'indirizzo 212.192.90.150. Organizza il bilanciamento del traffico: invia il traffico web tramite l'ISP1, altro traffico tramite l'ISP2. Se uno dei provider fallisce, consenti a tutto il traffico di passare attraverso il canale live.

Qual è la difficoltà del compito? cancellare le traduzioni di ip nat?

schema

Configurazione

1 cancella traduzioni ip nat *

Un pezzo di EEM del genere è stato trovato e testato. L'evento non viene generato su tutte le versioni di IOS, occorre fare chiarezza.

! applet gestore eventi NAT-TRACK evento pattern syslog "TRACKING-5-STATE" azione 0.1 cli comando "abilita" azione 0.2 aspetta 3 azione 0.3 cli comando "cancella traduzione ip nat *" azione 0.4 syslog msg "traduzione NAT cancellata dopo la modifica dello stato della traccia "!

2 Se l'interfaccia del provider fallisce, c'è un'alta probabilità che il suo gateway effettui il ping attraverso il secondo

! nome utente NOME password 0 PASSWORD abilita segreto 0 CONFIG PASSWORD! ! controllo del login alla linea del router vty 0 4 login local ! ! DHCP ip pool DHCP Rete LAN Maschera di rete interna router predefinito Gateway server DNS 10.11.12.13 ! DNS: fittizio inventato da loro, NON dalla nostra rete locale! ! ! Monitorare il ping all'indirizzo gateway-1 del provider! Attendi 100 ms per una risposta! Ping con una frequenza di 1 secondo ip sla monitor 1 tipo protocollo eco ipIcmpEcho GatewayProv1 interfaccia sorgente InterfaceOnProv1 timeout 100 frequenza 1 ! ! Monitor ping per provider-2 monitor sla ip 2 tipo protocollo eco ipIcmpEcho GatewayProv2 interfaccia sorgente InterfaceNaProv2 timeout 50 frequenza 1 ! ! Avvio dei ping 1 e 2, ora e per sempre ip sla monitor pianificazione 1 vita per sempre ora di inizio ora ip sla monitor pianificazione 2 per sempre ora di inizio ora! ! Tracce 10 e 20: tracciamento dello stato dei ping! Reagisce allo stato Giù o Su con un ritardo di 1 secondo. traccia 10 rtr 1 ritardo raggiungibilità giù 1 su 1 ! traccia 20 rtr 2 ritardo raggiungibilità giù 1 su 1 ! ! ! Percorsi verso tutte le reti esterne su entrambi i provider! I percorsi sono collegati alle tracce! e verrà attivato solo se la pista è nello stato Up! quelli. se il gateway per il provider corrispondente è disponibile ip route 0.0.0.0 0.0.0.0 GatewayProv1 traccia 10 ip route 0.0.0.0 0.0.0.0 GatewayProv2 traccia 20 ! ! ! int fa 0/0 no chiuso! ! Interfacce secondarie verso fornitori esterni! sono contrassegnati come esterni per l'interfaccia NAT FastEthernet0/0.1 descrizione ISP1 incapsula dot1q NumeroVlanProv1 indirizzo IP ipOnProv1 Maschera ip nat esterno ! interfaccia FastEthernet0/0.2 descrizione Incapsulamento ISP2 dot1Q NumeroVlanProv2 indirizzo ip ipNaProv2 Maschera ip nat esterno ! ! Interfaccia alla rete interna! contrassegnato come interno per NAT! La policy di routing è associata all'interfaccia PBR FastEthernet0/1 indirizzo IP ipOnInternalNet maschera ip nat all'interno della policy ip route-map PBR no shut! ! Accedi alle liste dalla rete interna verso l'esterno! Per il traffico web e tutto il resto ip access-list esteso LOCALE permesso ip intranet qualsiasi! elenco di accesso ip permesso WEB esteso rete interna tcp qualsiasi eq permesso www rete interna tcp qualsiasi eq 443 ! ip access-list esteso TUTTI permessi ip qualunque qualunque ! ! ! mappa radice PBR complicata! Se il traffico è dalla LAN al Web! quindi assegna il primo provider come gateway! Altrimenti altro traffico dalla zona! assegnare il secondo provider come gateway. ! Quando si assegna un gateway, il permesso PBR della mappa di percorso delle tracce 10 corrisponde all'indirizzo IP WEB impostato ip verifica-disponibilità dell'hop successivo GatewayProv1 1 traccia 10 ! route-map PBR permesso 20 corrisponde all'indirizzo IP TUTTI imposta ip next-hop verifica-disponibilità GatewayProv2 1 traccia 20 ! ! ! rootmap ISP1 complicata! funziona se il traffico proviene dalla LAN! cercando di uscire tramite l'interfaccia Fa0/0.1 route-map ISP1 permesso 10 corrispondenza indirizzo IP LOCALE corrispondenza interfaccia FastEthernet0/0.1! ! rootmap ISP2 complicata! funziona se il traffico proviene dalla LAN! cercando di uscire tramite l'interfaccia Fa0/0.2 route-map ISP2 permesso 10 corrispondenza indirizzo IP LOCALE corrispondenza interfaccia FastEthernet0/0.2! ! ! Finalmente NAT ;-) ! ! Traffico dalla LAN al primo provider Naviga attraverso la prima interfaccia ip nat all'interno della mappa di percorso sorgente Interfaccia ISP1 Sovraccarico FastEthernet0/0.1 ! ! Traffico dalla LAN al secondo provider Naviga attraverso la seconda interfaccia ip nat all'interno della mappa di percorso sorgente Interfaccia ISP2 Sovraccarico FastEthernet0/0.2 ! ! Reindirizzare il traffico verso DNS fittizi su Google-DNS ip nat fonte esterna statico 8.8.8.8 10.11.12.13 no-alias ! ! inoltro della porta interna 3389 alla porta esterna 1111 ip nat inside source statico tcp internalHost 3389 external 1111 extendable ip nat inside source statico tcp internalHost 3389 external 1111 extendable! !

Varie

CGN (carrier grade nat) con uno speciale pool di indirizzi privati

NAT come ALG (application layer gateway), (protocolli di testo semplice, ad esempio SIP)

Router Internet, server di accesso, firewall. Il più popolare è NAT di origine(SNAT), l'essenza del meccanismo è sostituire l'indirizzo di origine quando un pacchetto passa in una direzione e sostituire inversamente l'indirizzo di destinazione nel pacchetto di risposta. Oltre agli indirizzi di origine/destinazione è possibile sostituire anche i numeri di porta di origine e di destinazione.

Oltre a SNAT, cioè Spesso viene utilizzato anche fornire agli utenti di una rete locale indirizzi interni con accesso a Internet NAT di destinazione, quando le richieste provenienti dall'esterno vengono tradotte dal firewall su un server della rete locale che ha un indirizzo interno e quindi non è direttamente accessibile dalla rete esterna (senza NAT).

Le figure seguenti mostrano un esempio di funzionamento del meccanismo NAT.


Riso. 7.1.

Un utente di una rete aziendale invia una richiesta a Internet, che arriva all'interfaccia interna del router, del server di accesso o del firewall (dispositivo NAT).

Il dispositivo NAT riceve il pacchetto e inserisce una voce nella tabella di tracciamento della connessione, che controlla la traduzione degli indirizzi.

Quindi sostituisce l'indirizzo di origine del pacchetto con il proprio indirizzo IP pubblico esterno e invia il pacchetto alla sua destinazione su Internet.

L'host di destinazione riceve il pacchetto e invia una risposta al dispositivo NAT.

Il dispositivo NAT, a sua volta, dopo aver ricevuto questo pacchetto, cerca l'origine del pacchetto originale nella tabella di tracciamento della connessione, sostituisce l'indirizzo IP di destinazione con il corrispondente indirizzo IP privato e inoltra il pacchetto al computer di origine. Poiché il dispositivo NAT invia pacchetti per conto di tutti i computer interni, modifica la porta di rete di origine e queste informazioni vengono archiviate nella tabella di rilevamento delle connessioni.

Esistono 3 concetti base per la traduzione degli indirizzi:

  • statico (SAT, traduzione statica degli indirizzi di rete),
  • dinamico (DAT, Dynamic Address Translation),
  • mascheramento (NAPT, NAT Overload, PAT).

NAT statico associa gli indirizzi IP locali a indirizzi pubblici specifici su base uno a uno. Utilizzato quando l'host locale deve essere accessibile dall'esterno utilizzando indirizzi fissi.

NAT dinamico mappa un insieme di indirizzi privati ​​su un insieme di indirizzi IP pubblici. Se il numero di host locali non supera il numero di indirizzi pubblici disponibili, sarà garantito che ciascun indirizzo locale corrisponda a un indirizzo pubblico. Altrimenti, il numero di host che possono accedere contemporaneamente alle reti esterne sarà limitato dal numero di indirizzi pubblici.

NAT mascherato(NAPT, NAT Overload, PAT, masquerading) è una forma di NAT dinamico che mappa più indirizzi privati ​​su un singolo indirizzo IP pubblico utilizzando porte diverse. Noto anche come PAT (Port Address Translation).

Possono esserci diversi meccanismi per l'interazione tra una rete locale interna e una rete pubblica esterna: ciò dipende dal compito specifico di fornire l'accesso alla rete esterna e viceversa ed è prescritto da determinate regole. Sono definiti 4 tipi di traduzione degli indirizzi di rete:

  • Cono Pieno
  • Cono ristretto
  • Cono limitato dal porto
  • Simmetrico

Nei primi tre tipi di NAT, la stessa porta esterna viene utilizzata per comunicare tra diversi indirizzi IP sulla rete esterna e indirizzi della rete locale. Il quarto tipo, simmetrico, utilizza una porta esterna separata per ciascun indirizzo e porta.

Cono Pieno, la porta esterna del dispositivo (router, server di accesso, firewall) è aperta alle richieste provenienti da qualsiasi indirizzo. Se un utente da Internet deve inviare un pacchetto a un client situato dietro NAT, ha solo bisogno di conoscere la porta esterna del dispositivo attraverso la quale viene stabilita la connessione. Ad esempio, un computer dietro NAT con un indirizzo IP 192.168.0.4 invia e riceve pacchetti sulla porta 8000, che mappano all'indirizzo IP esterno e alla porta come 10.1.1.1:12345. I pacchetti dalla rete esterna arrivano al dispositivo con indirizzo IP: porta 10.1.1.1:12345 e vengono poi inviati al computer client 192.168.0.4:8000.

Nei pacchetti in arrivo viene controllato solo il protocollo di trasporto; L'indirizzo e la porta di destinazione, l'indirizzo e la porta di origine non hanno importanza.

Quando si utilizza NAT, funziona per tipo Cono ristretto, la porta esterna del dispositivo (router, server di accesso, firewall) è aperta a qualsiasi pacchetto inviato dal computer client, nel nostro esempio: 192.168.0.4:8000. Ed un pacchetto proveniente da una rete esterna (ad esempio dal computer 172.16.0.5:4000) ad un dispositivo con indirizzo: porta 10.1.1.1:12345 verrà inviato al computer 192.168.0.4:8000 solo se precedentemente 192.168.0.4:8000 ha inviato una richiesta all'indirizzo IP dell'host esterno (nel nostro caso, al computer 172.16.0.5:4000). Cioè, il router trasmetterà i pacchetti in arrivo solo da un indirizzo di origine specifico (nel nostro caso, il computer 172.16.0.5:4000), ma il numero di porta di origine può essere qualsiasi cosa. Altrimenti, NAT blocca i pacchetti provenienti da host a cui 192.168.0.4:8000 non ha inviato una richiesta.

Meccanismo NAT Cono limitato dal porto quasi simile al meccanismo del cono ristretto NAT. Solo in questo caso NAT blocca tutti i pacchetti provenienti da host a cui il computer client 192.168.0.4:8000 non ha inviato una richiesta a nessun indirizzo IP e porta. Il router presta attenzione al numero di porta di origine corrispondente e non presta attenzione all'indirizzo di origine. Nel nostro esempio, il router trasmetterà i pacchetti in entrata con qualsiasi indirizzo di origine, ma la porta di origine deve essere 4000. Se il client ha inviato richieste alla rete esterna a diversi indirizzi IP e porte, sarà in grado di inviare pacchetti al client sull'indirizzo IP: porta 10.1 .1.1:12345.

NAT simmetrico differisce significativamente dai primi tre meccanismi nel modo in cui mappa l'indirizzo IP interno:porta all'indirizzo esterno:porta. Questa visualizzazione dipende dall'indirizzo IP:porta del computer a cui è destinata la richiesta inviata. Ad esempio, se il computer client 192.168.0.4:8000 invia una richiesta al computer n. 1 (172.16.0.5:4000), potrebbe apparire come 10.1.1.1:12345, mentre allo stesso tempo se invia dalla stessa porta ( 192.168.0.4:8000) a un indirizzo IP diverso, verrà visualizzato diversamente (10.1.1.1:12346).

  • Permette di impedire o limitare l'accesso dall'esterno agli host interni, lasciando la possibilità di accesso dalla rete interna a quella esterna. Quando viene avviata una connessione dall'interno della rete, viene creata una trasmissione. I pacchetti di risposta che arrivano dall'esterno corrispondono alla trasmissione generata e vengono quindi fatti passare. Se non esiste una traduzione corrispondente per i pacchetti provenienti dalla rete esterna (e può essere creata quando la connessione è avviata o statica), non è consentito il passaggio.
  • Consente di nascondere determinati servizi interni di host/server interni. In sostanza, la stessa trasmissione di cui sopra viene eseguita su una porta specifica, ma è possibile sostituire la porta interna di un servizio ufficialmente registrato (ad esempio, la porta TCP 80 (server HTTP) con la porta esterna 54055). Pertanto, dall'esterno, sull'indirizzo IP esterno dopo la traduzione degli indirizzi, il sito (o forum) per i visitatori esperti potrà accedere all'indirizzo http://dlink.ru:54055, ma sul server interno situato dietro NAT funzionerà sulla solita 80a porta.
  • Tuttavia, vale la pena menzionare gli svantaggi di questa tecnologia:

    1. Non tutti i protocolli possono "attraversare" il NAT. Alcuni falliscono se è presente una traduzione degli indirizzi sul percorso tra host comunicanti. Alcuni firewall di traduzione degli indirizzi IP possono correggere questa carenza sostituendo opportunamente gli indirizzi IP non solo nelle intestazioni IP, ma anche a livelli più alti (ad esempio, nei comandi del protocollo FTP).
    2. A causa della traduzione degli indirizzi multi-a-uno, sorgono ulteriori difficoltà nell'identificazione degli utenti e nella necessità di archiviare registri di traduzione completi.
    3. Attacco DoS da parte di un host che esegue NAT: se NAT viene utilizzato per connettere molti utenti allo stesso servizio, può creare l'illusione di un attacco DoS al servizio (successi e fallimenti multipli). Ad esempio, un numero eccessivo di utenti ICQ dietro NAT porta a problemi di connessione al server per alcuni utenti a causa del superamento della velocità di connessione consentita.

    Gli indirizzi IP sono una risorsa scarsa. Il provider può avere un indirizzo /16 (ex classe B), che consente di connettere 65.534 host. Se ci sono più clienti, iniziano a sorgere problemi. Agli host che si connettono di tanto in tanto a Internet tramite una normale linea telefonica è possibile assegnare indirizzi IP in modo dinamico, solo per la durata della connessione. Quindi un indirizzo /16 servirà fino a 65.534 utenti attivi, e questo potrebbe essere sufficiente per un ISP con diverse centinaia di migliaia di clienti. Al termine della sessione di comunicazione, l'indirizzo IP viene assegnato a una nuova connessione. Questa strategia può risolvere i problemi degli operatori che non hanno un numero molto elevato di clienti privati ​​collegati tramite linea telefonica, ma non aiuterà gli operatori la cui clientela è costituita in maggioranza da organizzazioni.

    Il fatto è che i clienti aziendali preferiscono avere una connessione costante a Internet, almeno durante la giornata lavorativa. Sia i piccoli uffici, ad esempio le agenzie di viaggio, composte da tre dipendenti, sia le grandi aziende dispongono di reti locali costituite da un certo numero di computer. Alcuni computer sono postazioni di lavoro dei dipendenti, altri fungono da server web. In generale, è presente un router LAN collegato all'ISP tramite una linea dedicata per fornire una connessione permanente. Questa soluzione fa sì che ogni computer sia associato ad un indirizzo IP per tutto il giorno. Infatti, anche tutti i computer presi insieme dai clienti aziendali non possono coprire gli indirizzi IP a disposizione del provider. Per un indirizzo di lunghezza /16 questo limite è, come abbiamo già notato, 65 534. Tuttavia, se il fornitore di servizi Internet ha un numero di clienti aziendali dell'ordine di decine di migliaia, questo limite verrà raggiunto molto rapidamente.

    Il problema è ulteriormente aggravato dal fatto che un numero crescente di utenti privati ​​desiderano avere un collegamento ADSL o via cavo a Internet. Le caratteristiche di questi metodi sono le seguenti:

    a) gli utenti ricevono un indirizzo IP permanente;

    b) non è previsto alcun pagamento a tempo (viene addebitato solo il canone di abbonamento mensile).

    Gli utenti di questo tipo di servizio hanno una connessione permanente a Internet. Uno sviluppo in questa direzione porta ad una crescente carenza di indirizzi IP. Assegnare al volo gli indirizzi IP, come avviene con una connessione telefonica, è inutile, perché il numero di indirizzi attivi in ​​un dato momento può essere molte volte maggiore di quello del provider.

    Spesso la situazione è ulteriormente complicata dal fatto che molti utenti di Internet ADSL e via cavo hanno due o più computer a casa (ad esempio, uno per ogni membro della famiglia) e desiderano che tutte le macchine abbiano accesso a Internet. Cosa fare: dopotutto esiste un solo indirizzo IP rilasciato dal provider! La soluzione è questa: è necessario installare un router e connettere tutti i computer a una rete locale. Dal punto di vista del fornitore, in questo caso la famiglia agirà come un analogo di una piccola azienda con diversi computer. Benvenuti nella Corporazione Pupkin!

    Il problema della carenza di indirizzi IP non è affatto teorico e non riguarda affatto un futuro lontano. È già rilevante e dobbiamo combatterlo qui e ora. Il progetto a lungo termine prevede il trasferimento totale dell'intera Internet al protocollo IPv6 con indirizzamento a 128 bit. Questa transizione sta effettivamente avvenendo gradualmente, ma il processo è così lento che si trascina per anni. Vedendo ciò, molti hanno capito che era urgente trovare una soluzione, almeno per il prossimo futuro. Tale soluzione è stata trovata sotto forma di un metodo di traduzione degli indirizzi di rete, NAT (traduzione degli indirizzi di rete), descritto nella RFC 3022. L'essenza di ciò verrà discussa più avanti e informazioni più dettagliate possono essere trovate in (Butcher, 2001).

    L'idea di base della traduzione degli indirizzi di rete è quella di assegnare a ciascuna azienda un indirizzo IP (o almeno un piccolo numero di indirizzi) per il traffico Internet. All'interno dell'azienda, ogni computer riceve un indirizzo IP univoco, che viene utilizzato per instradare il traffico interno. Tuttavia, non appena il pacchetto lascia l'edificio aziendale e viene inviato al provider, viene eseguita la traduzione dell'indirizzo. Per implementare questo schema sono state create tre gamme di cosiddetti indirizzi IP privati. Possono essere utilizzati all'interno dell'azienda a sua discrezione. L'unica limitazione è che i pacchetti con tali indirizzi non devono in nessun caso apparire su Internet stessa. Questi tre intervalli riservati sono:

    10.0.0.0 - 10.255.255.255/8 (16.777.216 host)

    172.16.0.0 - 172.31.255.255/12 (1.048.576 host)

    192.168.0.0 -192.168.255.255/16 (65.536 host)

    Il funzionamento del metodo di traduzione dell'indirizzo di rete è mostrato nel diagramma seguente. All'interno del territorio aziendale ogni macchina ha un proprio indirizzo univoco del tipo 10.x.y.z. Tuttavia, quando un pacchetto lascia la sede dell'azienda, passa attraverso un blocco NAT che traduce l'indirizzo IP interno di origine (10.0.0.1 nella figura) nell'indirizzo IP reale che l'azienda ha ricevuto dall'ISP (198.60.42.12 nel nostro esempio) . Un blocco NAT è solitamente un singolo dispositivo con un firewall che fornisce sicurezza monitorando rigorosamente il traffico in entrata e in uscita di un'azienda. Il blocco NAT può essere integrato con il router aziendale.

    Abbiamo finora evitato un piccolo dettaglio: quando arriva una risposta ad una richiesta (ad esempio da un server web), questa è indirizzata a 198.60.42.12. Come fa il blocco NAT a sapere con quale indirizzo interno sostituire l'indirizzo pubblico dell'azienda? Questo è il problema principale con l'utilizzo della traduzione degli indirizzi di rete. Se ci fosse un campo libero nell'intestazione del pacchetto IP, potrebbe essere utilizzato per ricordare l'indirizzo di chi ha inviato la richiesta. Ma nell'intestazione rimane solo un bit inutilizzato. In linea di principio sarebbe possibile creare un campo del genere per il vero indirizzo di origine, ma ciò richiederebbe la modifica del codice IP su tutte le macchine in Internet. Questa non è la soluzione migliore, soprattutto se vogliamo trovare una soluzione rapida al problema di rimanere senza indirizzi IP.

    Questo è ciò che realmente è accaduto. I progettisti NAT hanno notato che il carico utile della maggior parte dei pacchetti IP è TCP o UDP. Entrambi i formati hanno intestazioni contenenti i numeri di porta di origine e di destinazione. I numeri di porta sono numeri interi a 16 bit che indicano dove inizia e finisce la connessione TCP. La posizione in cui sono archiviati i numeri di porta viene utilizzata come campo richiesto per il funzionamento del NAT.

    Quando un processo vuole stabilire una connessione TCP con un processo remoto, contatta una porta TCP libera sul proprio computer. Questa porta diventa la porta di origine, che indica al codice TCP dove inoltrare i pacchetti per quella connessione. Il processo determina anche la porta di destinazione. La porta di destinazione indica a chi consegnare il pacchetto sul lato remoto. Le porte da 0 a 1023 sono riservate a servizi noti. Ad esempio, la porta 80 viene utilizzata dai server Web, quindi i client remoti possono sceglierli come target. Ogni messaggio TCP in uscita contiene informazioni sulla porta di origine e sulla porta di destinazione. Insieme servono per identificare i processi su entrambe le estremità utilizzando la connessione.

    Facciamo un'analogia che chiarirà in qualche modo il principio dell'uso delle porte. Supponiamo che un'azienda abbia un numero di telefono generale. Quando le persone lo compongono, sentono la voce di un operatore che chiede esattamente a chi desiderano connettersi e li collega all'interno telefonico appropriato. Il numero di telefono principale è analogo all'indirizzo IP di un'azienda e gli interni su entrambe le estremità sono analoghi alle porte. L'indirizzamento delle porte utilizza un campo a 16 bit che identifica il processo che riceve il pacchetto in entrata.

    Utilizzando il campo Source Port possiamo risolvere il problema della visualizzazione degli indirizzi. Quando un pacchetto in uscita arriva ad un blocco NAT, l'indirizzo sorgente nella forma 192.168.c.d viene sostituito con l'indirizzo IP reale. Inoltre, il campo TCP Source Port viene sostituito dall'indice di una tabella di traduzione del blocco NAT contenente 65.536 voci. Ciascuna voce contiene l'indirizzo IP di origine e il numero di porta di origine. Infine, i checksum delle intestazioni TCP e IP vengono ricalcolati e inseriti nel pacchetto. È necessario sostituire il campo Porta di origine perché le macchine con indirizzi locali 10.0.0.1 e 10.0.0.2 potrebbero accidentalmente voler utilizzare la stessa porta (5000, ad esempio). Pertanto, per identificare in modo univoco il processo mittente, il campo Porta di origine da solo non è sufficiente.

    Quando un pacchetto arriva al blocco NAT dell'ISP, viene recuperato il valore del campo Source Port dell'intestazione TCP. Viene utilizzato come indice nella tabella di mappatura dei blocchi NAT. In base alla voce trovata in questa tabella vengono determinati l'indirizzo IP interno e la porta di origine TCP reale. Questi due valori vengono inseriti nel pacchetto. I checksum TCP e IP vengono quindi ricalcolati. Il pacchetto viene inviato al router principale dell'azienda per la consegna normale con un indirizzo come 192.168.y.z.

    Nel caso dell'ADSL o di Internet via cavo, la traduzione degli indirizzi di rete può essere utilizzata per facilitare la lotta contro la carenza di indirizzi. Gli indirizzi assegnati agli utenti sono 10.x.y.z. Non appena il pacchetto lascia la proprietà del provider e va in Internet, finisce in un blocco NAT che converte l'indirizzo interno nel vero indirizzo IP del provider. Al ritorno si effettua l'operazione inversa. In questo senso, per il resto di Internet, il provider con i suoi clienti che utilizzano connessioni ADSL e via cavo appare come una grande azienda.

    Sebbene lo schema sopra descritto risolva parzialmente il problema della carenza di indirizzi IP, molti aderenti all’IP vedono NAT come una sorta di infezione che si diffonde su tutta la Terra. E possono essere compresi.

    In primo luogo, il principio stesso della traduzione degli indirizzi di rete non si adatta all’architettura IP, il che implica che ciascun indirizzo IP identifica in modo univoco solo una macchina al mondo. L'intera struttura software di Internet è costruita sfruttando questo fatto. Quando si traducono gli indirizzi di rete, si scopre che migliaia di macchine possono (e effettivamente lo hanno) avere l'indirizzo 10.0.0.1.

    In secondo luogo, NAT trasforma Internet da una rete senza connessione in qualcosa di simile a una rete orientata alla connessione. Il problema è che il blocco NAT deve mantenere una tabella di mappatura per tutte le connessioni che lo attraversano. Ricordare lo stato della connessione è compito delle reti orientate alla connessione, ma non delle reti prive di connessione. Se un blocco NAT si rompe e le sue tabelle di mappatura vengono perse, tutte le connessioni TCP che lo attraversano possono essere dimenticate. In assenza di traduzione degli indirizzi di rete, il guasto di un router non ha alcun effetto sull'attività TCP. Il processo di invio attende semplicemente alcuni secondi e invia nuovamente i pacchetti non riconosciuti. Con NAT, Internet diventa suscettibile ai guasti quanto una rete a commutazione di circuito.

    In terzo luogo, NAT viola una delle regole fondamentali della progettazione di protocolli a più livelli: il livello k non dovrebbe fare alcuna ipotesi su ciò che il livello k+1 inserisce nel campo del payload. Questo principio determina l'indipendenza dei livelli l'uno dall'altro. Se TCP viene sostituito da TCP-2, che ha un formato di intestazione diverso (ad esempio, indirizzamento della porta a 32 bit), la traduzione dell'indirizzo di rete fallirà. L'idea generale dei protocolli multistrato è che i cambiamenti in uno degli strati non possono in alcun modo influenzare gli altri strati. NAT distrugge questa indipendenza.

    In quarto luogo, non è necessario che i processi su Internet utilizzino solo TCP o UDP. Se l'utente della macchina A decide di inventare un nuovo protocollo del livello di trasporto per comunicare con l'utente della macchina B (questo potrebbe essere fatto, ad esempio, per alcune applicazioni multimediali), allora dovrà in qualche modo fare i conti con il fatto che il blocco NAT non sarà in grado di elaborare correttamente il campo TCP Source Port.

    In quinto luogo, alcune applicazioni inseriscono gli indirizzi IP nel testo dei messaggi. Il destinatario li recupera da lì e poi li elabora. Poiché NAT non sa nulla di questo metodo di indirizzamento, non sarà in grado di elaborare correttamente i pacchetti e qualsiasi tentativo da parte del lato remoto di utilizzare questi indirizzi fallirà. Il protocollo di trasferimento file, FTP (File Transfer Protocol), utilizza esattamente questo metodo e potrebbe rifiutarsi di funzionare durante la traduzione degli indirizzi di rete a meno che non vengano adottate misure speciali. Anche il protocollo di telefonia Internet H.323 ha una proprietà simile. È possibile migliorare il metodo NAT e farlo funzionare correttamente con H.323, ma è impossibile migliorarlo ogni volta che appare una nuova applicazione.

    Sesto, poiché il campo Source Port è a 16 bit, è possibile mappare circa 65.536 indirizzi di computer locali su un singolo indirizzo IP. In realtà questo numero è leggermente inferiore: le prime 4096 porte sono riservate alle esigenze di servizio. In generale, se sono presenti più indirizzi IP, ciascun indirizzo IP può supportare fino a 61.440 indirizzi locali.

    Questi e altri problemi associati alla Network Address Translation sono discussi nella RFC 2993. In genere, gli oppositori del NAT affermano che risolvere il problema della carenza di indirizzi IP creando una patch temporanea interferisce solo con il reale processo evolutivo del passaggio a IPv6. Ma se torniamo alla realtà, vedremo che nella maggior parte dei casi NAT è semplicemente una cosa insostituibile, soprattutto per i piccoli uffici con un numero di computer da diverse a diverse dozzine. NAT può essere implementato da solo nel sistema operativo Linux utilizzando