Newsgroup: it.comp.reti.ip-admin
Titolo: funzionamento NAT

scusate se la domanda potra' essere un po' banale, ma non riesco a capire
bene il funzionamento di un NAT...
allora, presupponiamo che io abbia 2 pc con ip privato
collegati ad un router, quest'ultimo collegato ad internet...
quindi, abbastanza ovviamente, quando da uno dei 2 pc
mi collego ad esempio ad un sito, il router cambia
l'indirizzo ip mittente nell'header del pacchetto, mettondo il suo indirizzo
pubblico... a questo punto quando arriveranno i pacchetti di risposta, il
router fara' da NAT, convertendo l'indirizzo destinatario dei pacchetti
arrivati dal server web.
fin qui tutto giusto vero??? ora: se io mi collego allo stesso server web,
anche dall'altro pc, il router dovrebbe "nattare" pure l'indirizzo
dell'altro pc, quindi: quando gli arriva un pacchetto dal server web, visto
e considerato che se e' NAT (e non PAT) agisce solo sull'header del
pacchetto ip, come fa a sapere se nel destinatario deve mettere l'indirizzo
del PC1 o del PC2 ?????
Grazie per le eventuali risposte ;o)

 fin qui tutto giusto vero???
No! :-P
Il NAT e' sui pacchetti di domanda entranti, non su quelli di risposta. Per
questi ultimi il router "ricorda" quale IP ha richiesto qualcosa a quale IP
e il pacchetto di ritorno arriva al richiedente.
Se pero' tu vuoi aprire un servizio su un PC interno allora dovrai NATtare
la porta di quel servizio sull'IP interno. Ad esempio su un PC metti il
server web, sull'altro FTP. Allora dovrai dire al router di inoltrare le
domande sulla porta 80 al primo PC mentre quelle sulla porta 21 all'altro.
Tutte le altre porte in ingresso sono chiuse (se il router e' configurato a
modo).
Saluti.
Stefano.

 
Questo però è NAT dinamico... il router cambia l'indirizzo sorgente dei
datagrammi in uscita e lo imposta a quello che l'ISP ci assegna.
Altrimenti come ritornano le eventuali risposte?
La domanda che Badkill faceva, che poi interessa pure a me, penso che sia:
se il NAT opera solo su informazioni di livello network, come si fa a
smistare le risposte correttamente? 
Lasciando perdere il protocollo TCP, se mando due ICMP (ad esempio) da due
computer diversi della LAN *contemporaneamente* allo stesso host su
internet, a chi il router invierà le risposte???
Ciao
-- 
T@1t


questo č port mapping, qualcosa di piů..


NAT
Supponiamo di avere un router con due IP pubblici, collegato a una rete interna
di 10 pc
Se faccio solo NAT il router puo' permettere solo a due pc di comunicare con
l'esterno, perche' si limita a fare una traduzione degli indirizzi. Puo' essere
una soluzione semplice nel caso in cui le macchine della rete interna non siano
sempre accese o debbano uscire su internet in orari diversi. Non c'e' ambiguita'
perche' ai due pc vengono assegnati i due ip pubblici del router e questo gli
permette di discriminare i pacchetti ip
Con il NAPT (Network Address Port Translation) si moltiplicano gli indirizzi
ricorrendo ai numeri di porta.
Supponiamo di avere un solo ip pubblico. Il router avra' una tabella del tipo
Private Address: Ip del pc nella rete privata
Private Port: source port del pc nella rete privata 
External Address: indirizzo esterno con cui devo comunicare
External Port: porta di destinazione
Nat Port: qui assegno una delle porte libere del router
Protocol: TCP o UDP
ogni riga di questa tabella e' unica, poiche' la Nat Port e' diversa per ogni
connessione
Una naptBox e' quindi un router che implementa anche il livello TCP e deve
cambiare dei campi nell'header IP e TCP/UDP.
Le cose pero' si complicano parecchio visto che molte applicazioni non
rispettano lo stack TCP/IP. Ad esempio l'FTP trasmette nel flusso di dati anche
le informazioni su IP e TCP; se da una parte ho un pc dietro una naptbox e
dall'altra il server ftp quest'ultimo estrarra' l'indirizzo ip da usare dal
flusso di dati e non dall'header dei pacchetti ricevuti e quindi spedira' i
pacchetti all'IP privato del pc invece che all'ip della naptbox. Percio' la
NaptBox dovra' cambiare l'IP anche all'interno del flusso dati FTP. Ma questo
non e' salvato usando 32 bit in maniera fissa, bensi' e' scritto in notazione
dotted decimal ( 131.12.3.4, 134.254.250.125) e quindi la sua lunghezza e'
variabile, percio' cambiando questo valore cambia la lunghezza del messaggio, la
numerazione dei pacchetti tcp, etc.
-o-

[snip..]
quindi la maggiorparte dei router in circolazione lavorano anche a livello
4,
o non si chiamano piu' router ma in un altro modo??
e con un router che fa solo da NAT c'ho e' impossibile,
1 indirizzo pubblico --> 1indirizzo privato.
Tnks.