Come rilevare Network Address Translation (NAT)?

5

Come posso rilevare se NAT è utilizzato in rete o no?

So che se si dispone di un indirizzo privato e si è in grado di connettersi a una rete pubblica oa Internet, quindi è necessario NAT.

Ma come può rilevare che NAT viene utilizzato in una rete interna (che non è connessa a Internet ma utilizza NAT) o no ?

C'è un modo che possiamo controllare dal pacchetto IP o tramite qualche altro metodo?

    
posta Johan Gelp 01.12.2013 - 11:46
fonte

2 risposte

6

Questa domanda mi ha riportato alcuni ricordi di quando ho creato (con l'aiuto di un amico) un piccolo strumento per rilevare la presenza di NAT nelle reti.

L'idea è abbastanza semplice (ispirata / rubata dalla tecnica di attraversamento NAT in IPSec ):

  • Hai il segmento di rete A e il segmento di rete B, e vuoi rilevare la presenza di un NAT tra di loro.

  • Invia un pacchetto TCP contenente, nel suo payload, un digest MD5 del tuo indirizzo IP e la porta di origine da un host nel segmento A a un host nel segmento B.

  • Ascolta il pacchetto sull'host nel segmento B. Una volta ricevuto, esegui l'IP di origine e la porta di origine tramite MD5 e confronta il risultato con l'hash nel payload.

  • Hash match - > Nessun NAT.

Lo strumento consisteva in due piccoli A.exe e B.exe scritti in C ++.

Nota: come tutte le tecniche di rilevamento NAT disponibili, questa soluzione funziona mediante il controllo incrociato delle coppie di porte IP. Non c'è altro modo che garantisce il rilevamento NAT

    
risposta data 01.12.2013 - 12:41
fonte
6

Molto dipende dal tuo scenario.

Se i due host collaborano, basta che uno dei due invii il suo IP all'altro. Opzionalmente hash / criptalo per mantenere i filtri di riscrittura del protocollo (come ftp-masq) dalla riscrittura non solo del pacchetto IP dell'header ma anche del payload. Quindi, se i due indirizzi non corrispondono, NAT deve essere al lavoro.

Se hai solo un host, che per esempio si connette al tuo host, e vuoi sapere se si tratta di un 'vero IP' o di un IP nattato, probabilmente non sarai in grado di - se la connessione è prevista per avere qualche servizio disponibile, puoi provare a connetterti al suo indirizzo e alla porta corrispondenti; a meno che la macchina NATting esegua anche la conversione reverse masquerading / "virtual server", dovresti essere in grado di vedere se il servizio è aperto sulla macchina richiedente (no NAT) o no (NAT).

Con diversi host, potresti essere in grado di contare i pacchetti e uscire dalle porte delle connessioni in entrata. Le caselle NAT e le caselle "ordinarie" hanno diversi schemi di assegnazione delle porte. Le asimmetrie del traffico provenienti da diverse porte sorgente possono anche essere sintomatiche del NAT (o qualcuno che mantiene aperte diverse pagine Web su un proxy, quanto è probabile che tale dipenda dallo scenario. Due coppie di porte che hanno entrambi il traffico solitamente interattivo di un tipo molto diverso è probabilmente dovuto al fatto che ci sono due utenti dietro un NAT. E così via).

Un altro approccio potrebbe essere quello di ispezionare la tempistica dei pacchetti e il TTL. Solitamente le implementazioni NAT non reimpostano il contatore TTL, quindi verrà ridotto di uno quando si esegue il NAT. Anche NAT richiede un po 'di tempo, e questo può essere investigato statisticamente.

Finalmente potresti provare ad essere subdolo e rispondere con pacchetti contraffatti, giocando di nuovo con TTL. Se la casella NAT sta rigenerando TTL per nascondere il suo NAT, è probabile che lo farà solo per i pacchetti in uscita e si baserà su un codice normale per il traffico in entrata. Se invii un pacchetto con TTL creato per "scadere in caso di impatto", un computer non-NATted lo riceverà comunque. Il box NAT lo riceverà, counter TTL decrement , e il pacchetto morirà in transito senza raggiungere la macchina di origine. Otterrai una risposta o una risposta ICMP superata dalla TTL.

A volte, strategie simili possono essere impiegate con schemi di frammentazione dei pacchetti, ma ciò richiede la notevole fortuna di avere una configurazione MTU asimmetricamente favorevole nelle "gambe" dalla tua macchina alla presunta scatola NAT, e da questo alla macchina reale.

    
risposta data 01.12.2013 - 13:20
fonte

Leggi altre domande sui tag