Network Address Translation 1
Concetti di NAT e assegnazione IP pubblici L indirizzamento IP finora utilizzato è quello associato al protocollo IPv4. Ciascun indirizzo IPv4 è composto da 32 bit, quindi l insieme delle possibili combinazioni sono 2 32 = 4294967296. E certamente un numero grande ma non infinito e certamente inadeguato ai giorni nostri considerando che più di 10 Miliardi di apparati sono connessi in Internet e che ognuno di essi ha bisogno di un indirizzo IP!! Gli indirizzi IPv4 stanno quindi terminando. Per evitare il collasso, nel corso degli ultimi anni sono state sviluppate diverse soluzioni alternative, tra cui: 2
Un nuovo protocollo detto IPv6; un indirizzo IPv6 è formato da 128 bit, quindi il numero delle possibili combinazioni è di gran lunga superiore rispetto a IPv4 Network Address Translation (NAT) in sostanza gli indirizzi IP reali sono mascherati. Reti private RFC1918 Lo standard RFC1918 definisce delle classi di indirizzamento dette Reti Private in quanto utilizzabili solo all interno di un azienda o di un ente. E quindi possibile che due aziende utilizzino per le comunicazioni interne la stessa rete privata. L indirizzamento utilizzato su rete Internet è invece detto Pubblico. Gli indirizzi 3
pubblici sono erogati da un ente internazionale detto RIPE o IANA Un azienda per accedere su Internet deve necessariamente utilizzare un indirizzo pubblico rilasciato dal RIPE. CIDR è lo standard attraverso cui IANA, RIPE e le loro agenzie possono erogare indirizzi IP pubblici. CIDR è definito dallo standard RFC 4632 e definisce due capisaldi: Route summarization degli IP erogati: in questo modo si riduce la dimensione della routing table dei router Internet Assegnazione di range o blocchi di IP piuttosto che reti di classe A, B o C. 4
Come può un host di una rete interna privata accedere quindi su Internet? Può farlo utilizzando il servizio Network Address Translation (NAT). In sostanza il NAT effettua una traduzione degli indirizzi privati in indirizzi pubblici. Da Rete Internet, quindi, i messaggi risultano generati dall IP pubblico aziendale e non dall host della rete privata. Le reti private definite dalla specifica RFC1918 sono: Classe Rete IP Privata Numero Reti A 10.0.0.0 1 B 172.16.0.0-172.31.0.0 16 C 192.168.0.0 192.168.255.0 256 5
Static NAT Un NAT è di tipo statico se ciascun indirizzo IP della rete privata è tradotto sempre con lo stesso indirizzo pubblico. La corrispondenza tra indirizzo interno e esterno è quindi del tipo uno ad uno: a ciascun indirizzo interno corrisponde un indirizzo esterno. Il router possiede una tabella detta Xlate, NAT Table o Translation Table in cui ad ogni indirizzo privato (o interno) è associato il corrispondente indirizzo pubblico (o esterno) Illustriamo meglio il concetto con un esempio. Supponiamo che RIPE abbia rilasciato il range IP 200.1.1.1-200.1.1.100 ad un azienda e che quest ultima utilizzi indirizzamento privato 10.1.1.0/2 al suo interno. 6
PC A deve accedere al web server C presente su rete Internet. In che modo il router traduce l indirizzo interno in uno utilizzabile su rete Internet? 7
1. Il router riceve il pacchetto da A. Consulta la sua NAT Table e rileva che l indirizzo pubblico associato staticamente a PC A è 200.1.1.1 2. Il router modifica l indirizzo IP sorgente del pacchetto: rimuove l indirizzo IP del PC A e inserisce l indirizzo pubblico 200.1.1.1 3. Spedisce il pacchetto al next-hop configurato in tabella di routing Facciamo un altro esempio. In che modo il router traduce il traffico generato da PC B e diretto su Internet? 8
1. Il router riceve il pacchetto da B. Consulta la sua NAT Table e rileva che l indirizzo pubblico associato staticamente a PC B è 200.1.1.2 (l ip privato di PC B è infatti 10.1.1.2) 2. Il router modifica l indirizzo IP sorgente del pacchetto: rimuove l indirizzo IP di PC B e inserisce l indirizzo pubblico 200.1.1.2 3. Spedisce il pacchetto al next-hop configurato in tabella di routing Cisco utilizza il concetto di: Inside: per indicare un indirizzo IP interno a una rete 9
Outside: per indicare un indirizzo IP esterno a una rete Su questo criterio, gli indirizzi IP possono essere: Inside Local: Indirizzo IP interno ad una rete e effettivamente associato ad un host (configurato sulla scheda di rete dell host) Inside Global: Indirizzo IP interno ad una rete e utilizzato per rappresentare (nattare) un indirizzo Inside Local Outside Local: Indirizzo IP esterno alla rete e effettivamente associato ad un host (può essere anche un indirizzo di tipo privato sebbene presente al di fuori della rete) 10
Outside Global: Indirizzo IP esterno alla rete e utilizzato per rappresentare (nattare) un indirizzo Outside Local Nell esempio precedente, quindi, gli indirizzi IP 10.1.1.1 e 10.1.1.2 sono indirizzi Inside Local, mentre 200.1.1.1 e 200.1.1.2 sono indirizzi Inside Global. 11
12
Utilizzando Static NAT, ciascun indirizzo IP di tipo Local è tradotto sempre con lo stesso IP di tipo Global e il rapporto di traduzione è quindi 1:1. Per quanto semplice e logica, questa soluzione presenta notevoli limitazioni, in quanto la necessità di avere i indirizzi IP Global è direttamente proporzionale alla crescita degli indirizzi IP Local. Infatti, quando si aggiunge un nuovo PC in rete, è necessario configurare un indirizzo di tipo Local nelle impostazioni di rete del computer. Per poter accedere ad Internet o altre reti, il PC necessita anche di un nuovo indirizzo Global da utilizzare per le comunicazioni esterne. Per risolvere questo problema si raccomanda l utilizzo di Dynamic NAT o PAT descritti nel seguito 13
Dynamic NAT La principale differenza tra Static NAT e Dynamic NAT risiede nel rapporto di traduzione che indica quanti IP di tipo Local sono associati allo stesso indirizzo di tipo Global. Come visto, il rapporto di traduzione per Static Nat è 1 a 1 (1:1) in quanto ad ogni IP local è associato un solo IP global. Il rapporto di traduzione per Dynamic NAT è invece superiore in quanto lo stesso indirizzo IP di tipo Global può essere utilizzato per nattare più IP Local. In questo caso, la NAT Table è vuota e viene riempita dinamicamente ogni volta che è necessario effettuare una traduzione. Gli indirizzi 14
Global sono scelti di volta in volta da un pool prefissato e inseriti in NAT Table. Per chiarire il funzionamento analizziamo la figura che segue. 15
1. PC A invia un pacchetto al server 170.1.1 presente su rete Internet 2. Il router analizza il contenuto del pacchetto e in base ai parametri presenti nella sua configurazione capisce se nattare o meno il pacchetto 3. Il router seleziona il primo IP Inside Global disponibile tra quelli che compongono il pool 4. Aggiorna la NAT Table e aggiunge una voce per PC A 5. Inoltra il pacchetto utilizzando come IP Sorgente l Inside Global selezionato al passo precedente 16
Le informazioni dinamiche sono contenute in NAT Table per un tempo limitato e fintanto che fluisce traffico tra PC A e il server C. E possibile impostare un timeout per definire il massimo periodo in cui una entry può essere presente in tabella. E infine possibile rimuovere manualmente le entry dando il comando clear ip nat translation * Facendo uso di Dynamic NAT è quindi possibile utilizzare un range di IP Global inferiore rispetto al range di indirizzi di tipo Local. Ogni volta che un indirizzo Inside Local richiede una traduzione, il router preleva un IP Global dal pool. Se tutti gli IP Global sono già stati assegnati, allora il router scarta il pacchetto. 17
Overloading NAT e PAT Overloading Nat o Port Address Translation (PAT) è una tipologia caratterizzata da un rapporto di traduzione di gran lunga superiore rispetto a quello di Static e Dynamic NAT. Utilizzando PAT è addirittura possibile tradurre un gran numero di indirizzi Local con un solo indirizzo IP Global. Per poter funzionare PAT utilizza il concetto di Porta tipico di una connessione di livello 4 o Trasporto. Per capirne il funzionamento analizziamo la figura che segue. La figura mostra le connessioni instaurate da tre PC (A, B, C) sulla porta 80 di un web server remoto. Come vedi, ciascun PC utilizza una differente porta sorgente per instaurare la connessione (o socket) di livello 4. 18
L idea alla base del PAT è la seguente: piuttosto che associare un indirizzo Global a uno Local, è possibile eseguire il natting utilizzando un unico indirizzo e effettuare l associazione utilizzando le porte. La seguente figura illustra l implementazione di PAT su di un router Cisco. 19
Come vedi le connessioni dei tre PC sono nattate utilizzando un unico indirizzo IP (200.1.1.2) e associate a una differente porta. In questo modo è ancora possibile distinguere l indirizzo IP Local che ha generato la sessione in quanto a ciascuna porta è associata una diversa comunicazione. 20
In questo caso la NAT Table del router è la seguente: Inside Local Inside Global 10.1.1.1:1024 200.1.1.2:1024 10.1.1.2:1025 200.1.1.2:1025 10.1.1.2:1026 200.1.1.2:1026 La terminologia 10.1.1.1:1024 significa: Indirizzo IP: 10.1.1.1 Porta: 1024 21
Configurazione Static NAT Cisco IOS Per far utilizzo di Static NAT è sufficiente configurare manualmente su Cisco IOS le corrispondenze tra indirizzi Local e Global. La configurazione avviene in questo modo: 1. Definisci le interfacce del router facenti parte dell ambito Inside, per mezzo del comando ip nat inside. Il comando va dato dal Context di configurazione dell interfaccia 2. Definisci le interfacce del router facenti parte dell ambito Outside, per mezzo del comando ip nat outisde. Il comando va dato dal Context di configurazione dell interfaccia 22
3. Configura manualmente le associazioni tra indirizzi Inside Local e Inside global dando da Global Config il comando ip nat inside source static <inside-local> <inside-global> La figura che segue illustra la configurazione di un router Cisco. Il comando IOS per visualizzare la NAT table è: show ip nat translations 23
24
Configurazione Dynamic NAT Cisco IOS La configurazione di Dynamic NAT su Cisco IOS è per alcuni aspetti del tutto simile a quella precedentemente vista. In questo caso i passi da seguire sono: 1. Come per una Static NAT, definisci le interfacce del router facenti parte dell ambito Inside, per mezzo del comando ip nat inside. Il comando va dato dal Context di configurazione dell interfaccia 2. Come per una Static NAT, definisci le interfacce del router facenti parte dell ambito Outside, per mezzo del comando ip nat 25
outisde. Il comando va dato dal Context di configurazione dell interfaccia 3. Configura un access-list in grado di selezionare i pacchetti che devono essere nattati 4. Configura il pool di indirizzi Global o Pubblici utilizzati per effettuare il natting ip nat pool <nome> <1 Indirizzo><Ultimo Indirizzo> netmask <subnet-mask> 5. Abilita l utilizzo del dynamic NAT dando da Global Config il comando: Ip nat inside source list <acl-number> pool <pool-name> 26
La figura seguente mostra l implementazione di Dynamic NAT su di un router Cisco. Come puoi vedere, l interfaccia Fa0/0 appartiene all ambito Inside, mentre la Se0/1/0 a quello Outside. L Access list Standard 1 è utilizzata per catturare i pacchetti che devono essere sottoposti a NAT; tutti i pacchetti con IP Source 10.1.1.1 o 10.1.1.2 saranno dunque nattati utilizzando il primo indirizzo IP libero contenuto nel pool POOL_INTERNET. Se tutti gli indirizzi del pool sono già impegnati e se giunge una nuova richiesta di nat, il router non potrà far altro che scartare il pacchetto in quanto non ha nessun indirizzo a disposizione con cui nattare la comunicazione. In questo caso, può esser utile ripulire la NAT Table, liberando quindi indirizzi del pool, dando il comando clear ip nat translations * 27
28
Configurazione NAT Overloading/PAT Cisco IOS La configurazione PAT su Cisco IOS è per certi aspetti del tutto simile a quelle precedentemente viste. Bisogna fare però una distinzione nel caso in cui il Natting avvenga su più indirizzi IP oppure su un unico indirizzo. Nel seguito analizzeremo la configurazione PAT nel caso in cui la traduzione avvenga su un unico indirizzo IP di tipo global. La procedura da seguire è la seguente: 1. Definisci le interfacce del router facenti parte dell ambito Inside, per mezzo del comando ip nat inside. Il comando va dato dal Context di configurazione dell interfaccia 29
2. Definisci le interfacce del router facenti parte dell ambito Outside, per mezzo del comando ip nat outisde. Il comando va dato dal Context di configurazione dell interfaccia 3. Configura un access-list in grado di selezionare i pacchetti in ingresso che devono essere nattati 4. Abilita l utilizzo del dynamic NAT dando da Global Config il comando: Ip nat inside source list <acl-id> interface <type/number> overload 30
31
Come nel caso precedente, l access-list 1 è utilizzata per definire il traffico che deve essere sottoposto a traduzione: tutti i pacchetti provenienti dagli host 10.1.1.1 e 10.1.1.2 saranno nattati utilizzando l indirizzo IP dell interfaccia Serial0/1/0. Infine, la figura seguente illustra la configurazione NAT Overloading/PAT nel caso in cui il natting fosse realizzato su più indirizzi di tipo Global. Come vedi, la configurazione è identica a quella del Dynamic NAT se non per la presenza della stringa Overload. 32
33