Perché è una cattiva idea usare più livelli NAT o lo è?


19

La rete di computer di un'organizzazione ha un NAT con intervallo di indirizzi IP 192.168 / 16. Esiste un reparto con un server che ha un indirizzo IP 192.168.xy e questo server gestisce gli host di questo dipartimento con un altro NAT con un intervallo di indirizzi IP 172.16 / 16.

Quindi ci sono 2 strati di NAT. Perché invece non hanno subnet. Ciò consentirebbe un facile instradamento.

Ritengo che più livelli di NAT possano causare perdite di prestazioni. La prego di aiutarmi a confrontare le due strategie di progettazione.

Aggiornare:

@Jon Alcune ulteriori informazioni

Discutendo con un amico, ci siamo resi conto che la sottorete avrebbe causato il seguente problema. Le richieste ARP di un computer inonderebbero l'intera rete dell'organizzazione. Se il router non inoltra queste richieste, i PC di un reparto non saranno in grado di connettersi ai PC di altri reparti che comunque non possono essere eseguiti se si trovano dietro NAT diversi. Con uno sniffer di pacchetti abbiamo visto che esiste un gran numero di richieste ARP poiché la maggior parte dei computer nel dipartimento ha la Condivisione file su Windows abilitata.

Come risolvere questo problema?

Inoltre, se due computer si trovano dietro NAT diversi, non è possibile collegarsi tra loro.


Modifica la tua domanda in: "Perché è una cattiva idea utilizzare più livelli NAT?"

2
Un altro compito a casa ...
Jon Rhoades,

1
NO. è un problema pratico. Cito sempre i compiti.
Rohit Banga,

3
@Jon (e i suoi sostenitori), non ci sono problemi a porre domande a casa qui. È un argomento che è stato discusso dozzine di volte su meta.stackoverflow.com - anche se personalmente non vedo nulla nella domanda che punti a HW.
Mark Henderson

@Farseeker - l'intera domanda è astratta. Non sembra essere in grado di cambiare nulla, vuole che "confrontiamo le 2 strategie di progettazione" senza un obiettivo chiaro - profuma di compiti a casa, non un problema del mondo reale. Ovviamente sono più che felice di accettare che mi sbaglio e qualcuno ha questa configurazione folle - in tal caso, chiedi loro perché devono avere una buona ragione.
Jon Rhoades,

Risposte:


6

L'unico vero problema con il NATing multilivello è che confonde la topologia della rete. Se si utilizzano più livelli di NAT, si elimina il routing simmetrico tra tutti gli host nell'organizzazione e si incontra anche il potenziale di sovrapposizione di spazi di indirizzi privati ​​all'interno della rete. Immagina se hai utilizzato un intervallo di indirizzi nel tuo livello NAT n + 1 utilizzato nel livello n NAT. Tali reti non sarebbero mai in grado di instradarsi l'una verso l'altra, ma gli host nel livello n + 1 potrebbero avere lo stesso indirizzo del livello n, rendendo confusa l'identità del server.

Se stavo definendo la topologia di una grande rete, utilizzerei solo gli indirizzi 10. * o 172.16-24. * Per gli host su una qualsiasi delle nostre sottoreti. Quindi, se un dipartimento o un individuo volesse raddoppiare il NAT, potrebbe (usando la rete 192.168. *) Con la consapevolezza di essere responsabile della rete dietro il proprio host NAT. Sarei anche più propenso a creare più sottoreti piuttosto che lasciare che una di quelle doppie reti NAT diventasse troppo grande.


9

I problemi con NAT multilivello sono essenzialmente gli stessi del NAT a singolo strato ma aggravati. Ad esempio:

  1. Latenza dovuta al lavoro extra svolto durante la vita dei pacchetti (anche se è improbabile che ciò sia significativo nella maggior parte dei casi)

  2. Sapere da dove proviene qualcosa. Se stai cercando di rintracciare da dove provengono determinate richieste (forse il tuo firewall in uscita ha registrato quella che sembra una macchina compromessa che cerca di spargere spam o cercare altri target di infezione), NAT rende tale diagnostica molto più difficile.

  3. Il port forwarding della connessione in entrata, se hai bisogno di connessioni in entrata, è più facile da configurare e gestire.

  4. Numero limitato di porte. NAT funziona traducendo gli indirizzi di origine su se stesso su porte diverse, quindi ad esempio:

    • la macchina 1 parla con un server web esterno usando la porta 1024 poiché la sua sorgente viene tradotta nell'indirizzo del box NAT su, diciamo, sulla porta 10000.
    • la stessa macchina effettua due richieste a quel o ad un altro server Web contemporaneamente (non insolito) utilizzando la porta di origine 1025 (due connessioni simultanee devono avere porte di origine diverse). Il NAT box lo traduce in "me on source port 10001"
    • un'altra macchina parla tre connessioni a server esterni. Bene, la scatola NAT li traduce in "me sulle porte 10002, 10003 e 10004"
    • man mano che i pacchetti tornano in forma con le macchine esterne, il NAT box sa che roba destinata a se stessa sulla porta 10000 dovrebbe realmente andare alla macchina 1 sulla porta 1024 e così via per le altre connessioni attive.

    Tutto questo va bene e dandy fino a quando non si hanno molte connessioni in uscita - vale a dire una grande rete o una rete più piccola con macchine che effettuano molte connessioni (applicazioni P2P come quelle che implementano il protocollo bittorrent possono creare molte connessioni simultanee). Esistono solo 65536 porte nel protocollo IP, meno le 1024 riservate. Mentre 60.000 potrebbero sembrare molto, può essere rapidamente consumato, quindi la casella NAT deve decidere quali vecchie mappature possono essere rimosse, che di solito non è semplice come "rilasciare la più vecchia". Ciò può comportare bug strani (connessioni casuali che cadono per motivi difficili da diagnosticare) o che la macchina semplicemente non è in grado di stabilire nuove connessioni per un po '.

  5. caricare sulla (e) scatola (e) NAT. Se stai utilizzando piccole scatole a basso consumo (ad esempio router di supporto NAT standardizzati, piuttosto che un PC completo con una CPU pesante) per fare il tuo NAT il lavoro di traduzione extra (rispetto al semplice inoltro di pacchetti come da una tabella di routing di base ) potrebbe rallentare i trasferimenti attraverso di essi. Per l'accesso a Internet non è probabile che ciò costituisca un problema (la tua "connessione di rete sarà il collo di bottiglia) ma poiché stai effettuando il NAT tra i segmenti di rete locali, potrebbe diventare abbastanza evidente.


punto 4 questo problema dovrebbe essere lo stesso per qualsiasi numero di strati di NAT o no!
Rohit Banga,

È vero, il punto 4 è lo stesso problema sia su NAT a livello singolo sia su NAT a più livelli, ma NAT multilivello aggrava il problema di capire quali connessioni sono morte (l'host esterno potrebbe non conoscere tanto il contesto di quello interno) e fare diagnosi più difficile se le limitazioni del mapping delle porte diventano un problema. Può anche rendere più equa l'allocazione della larghezza di banda e altre forme di traffico da implementare e monitorare (anche se ci sono modi per aggirare questo, semplificare la topologia della rete è di solito l'opzione migliore).
David Spillett il

6

La perdita di prestazioni / velocità dipende davvero dalla qualità del router che si utilizza.

Per quanto riguarda l'idea buona / cattiva, sono contrario quando è possibile utilizzare semplicemente il routing, tuttavia, dipende davvero dall'ambiente e da ciò che si sta tentando di realizzare.

Se le macchine devono sempre eseguire solo alcune cose condivise su porte standard, puoi accedere al dispositivo router / nat e impostare una regola per consentire ciò che desideri (1). Tuttavia, se hai intenzione di svolgere molte attività da dispositivo a dispositivo, sarà molto più facile avere un percorso corretto con ogni macchina con il suo IP univoco (2).

(1) Ad esempio, uno a molti - Una macchina ha un server web e vuoi condividerlo con altri - imposteresti una regola nel router sulla porta 80 della macchina, quindi qualsiasi macchina dalla rete esterna (o all'interno se nat-loopback è abilitato) può semplicemente andare su http: //router.ip e può accedere.

(2) Se comunque ogni macchina avrà un web server acceso o userai molti servizi, avrai un incubo che imposterà tutte le regole (ma non è impossibile).

Per quanto riguarda il tuo scenario - Se un dipartimento utilizza 192.168.xx e l'altro 192.168.yx, esaminerei i dispositivi e se non ci sono sovrapposizioni, potrebbe essere semplicemente possibile cambiare la sottorete da / 24 a / 16 (o viceversa), quindi sostituire i router con switch / o simili e non perdere i servizi.

È davvero difficile aiutare senza sapere di più sulla tua rete, non c'è nulla di "sbagliato" con doppio NAT, purché sia ​​impostato correttamente. Tuttavia, a meno che tu non ne abbia davvero bisogno o non ci sia una buona ragione per farlo, guarderei a migrare via se puoi (opinione personale)


@iamrohitbanga - In risposta alle tue domande (troppo per i commenti).

Il confronto è difficile: il routing funziona bene per le reti private in cui ogni macchina ha la possibilità di accedere ad ogni macchina. Nat funziona bene, ma viene utilizzato principalmente per le reti che non necessitano di routing poiché di solito è necessario impostare manualmente regole / route.

Ad esempio, se si dispone di una connessione Internet e si disabilita NAT, quindi impostare manualmente percorsi o modalità a ponte - la macchina sarà direttamente su Internet - tutte le porte accessibili e qualsiasi macchina può fare ciò che vuole.

Se invece hai un router con NAT, ci vorrà l'IP esterno e fornirà "Nat-ed?" (non sono sicuro sulla terminologia ...) Internet - tutte le macchine interne hanno un IP non accessibile da Internet, ma è possibile impostare regole manuali - ad es. porta 80 su una macchina ... Funziona molto bene per le connessioni in uscita (firewall regole permettendo), ma può essere un incubo impostare regole in entrata se si ospitano molti servizi ... e se si fa qualcosa che richiede porte dinamiche (ftp, Windows AD ecc.) può essere un incubo.

Spero che questo ti aiuti, se vuoi sapere qualcos'altro, sentiti libero di chiedere.


potresti confrontare le due strategie. la rete viene utilizzata per fornire accesso a Internet agli host.
Rohit Banga,

@iamrohitbanga - aggiornamento della risposta
William Hilsum,

5

Il problema principale con NAT (in generale e con più livelli in particolare) è che può essere estremamente difficile da risolvere.


4

Il problema più grande con NAT è quando un software di rete obsoleto sta eseguendo la traduzione, il che fa male a molte applicazioni (FTP, VoIP ecc.). I moderni firewall / gateway hanno traduzioni (correzioni in termini Cisco) che lo rendono molto più semplice.

Non capisco perché la tua azienda utilizzi NAT tra le sottoreti private. Perché non semplicemente instradarlo?


2

Basta aggiornare la rete e i client a IPV6, quindi non è più necessario utilizzare NAT.


1

Per rispondere alla nuova seconda parte della tua domanda ...

I router interrompono i domini di trasmissione: i router non inoltrano i pacchetti arp, rimangono all'interno di una sottorete *. La condivisione di file Windows (seriamente?) Il traffico di trasmissione Netbios non lascerà la sottorete.

Con sottoreti:

Se è necessario accedere a una condivisione Windows dall'esterno di una sottorete, è possibile accedervi direttamente utilizzando il suo indirizzo IP o se si dispone di un server DNS o WINS configurato per nome host.

Con NAT:

Se il tuo NAT è del tipo PAT e quindi non è un mapping uno a uno, dovrai configurare il port forwarding affinché funzioni: questo sarebbe male.

Come è stato discusso ad naseum, NAT è in generale una cosa negativa in quanto interrompe la funzionalità di rete, che usiamo solo perché dobbiamo. Rotola su IPv6.

* Naturalmente esistono forwarder / relè / helper di trasmissione

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.