In alcune situazioni, potrebbe essere necessario configurare i comandi NAT (Network Address Translation) statici e dinamici su un router Cisco. In questo documento viene illustrato come eseguire questa operazione e viene fornito uno scenario di esempio.
La conoscenza dei concetti e delle operazioni NAT di base è utile.
Le informazioni fornite in questo documento si basano sulle seguenti versioni software e hardware:
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.
Per ulteriori informazioni sulle convenzioni usate, consultare il documento Cisco sulle convenzioni nei suggerimenti tecnici.
Con il protocollo NAT dinamico, le traduzioni non esistono nella tabella NAT finché il router non riceve il traffico che richiede la traduzione. Le traduzioni dinamiche hanno un periodo di timeout dopo il quale vengono eliminate dalla tabella di traduzione.
Con NAT statico, le traduzioni esistono nella tabella di conversione NAT non appena si configurano i comandi NAT statici e rimangono nella tabella di conversione fino a quando non si eliminano i comandi NAT statici.
Di seguito è riportato un esempio di diagramma di rete:
Questi comandi sono configurati sul router NAT mostrato sopra:
Router NAT |
version 12.3
ip nat pool test 172.16.131.2 172.16.131.10 netmask 255.255.255.0
!--- Refer to ip nat pool for more details on the command.
.
ip nat inside source list 7 pool test
!--- Refer to ip nat inside source for more details on the command.
ip nat inside source static 10.10.10.1 172.16.131.1
interface e 0
ip address 10.10.10.254 255.255.255.0
ip nat inside
interface s 0
ip address 172.16.130.2 255.255.255.0
ip nat outside
ip route 192.168.1.0 255.255.255.0 172.16.130.1
access-list 7 permit 10.10.10.0 0.0.0.255 |
La configurazione sul dispositivo OutsideA è:
All'esterno di un router |
version 12.3
hostname outsideA
!
!
!
interface Serial1/0
ip address 172.16.130.1 255.255.255.0
serial restart-delay 0
clockrate 64000
!
interface FastEthernet2/0
ip address 192.168.1.1 255.255.255.0
speed auto
half-duplex
ip route 172.16.131.0 255.255.255.0 172.16.130.2 |
La configurazione sul dispositivo InsideA è:
All'interno di un router |
version 12.3
!
interface Ethernet1/0
ip address 10.10.10.1 255.255.255.0
half-duplex
!
ip route 0.0.0.0 0.0.0.0 10.10.10.254
!
! |
Usando il comando show ip nat translation, è possibile visualizzare il contenuto della tabella di traduzione:
NATrouter#show ip nat translations
Pro Inside global Inside local Outside local Outside global
--- 172.16.131.1 10.10.10.1 --- ---
Nella tabella di traslazione viene elencata solo la traslazione statica. Questa voce converte l'indirizzo globale interno nell'indirizzo locale interno, il che significa che i dispositivi sul cloud esterno possono inviare pacchetti all'indirizzo globale 172.16.131.1 e raggiungere il dispositivo sul cloud interno, che ha l'indirizzo locale 10.10.10.1.
Di seguito è riportata la stessa procedura:
outsideA#ping 172.16.131.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.131.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/32/32 ms
NATrouter#debug ip nat
18:12:06: NAT*: s=172.16.130.1, d=172.16.131.1->10.10.10.1 [1005]
18:12:06: NAT: s=10.10.10.1->172.16.131.1, d=172.16.130.1 [1005]
18:12:06: NAT*: s=172.16.130.1, d=172.16.131.1->10.10.10.1 [1006]
18:12:06: NAT*: s=10.10.10.1->172.16.131.1, d=172.16.130.1 [1006]
18:12:06: NAT*: s=172.16.130.1, d=172.16.131.1->10.10.10.1 [1007]
18:12:06: NAT*: s=10.10.10.1->172.16.131.1, d=172.16.130.1 [1007]
18:12:06: NAT*: s=172.16.130.1, d=172.16.131.1->10.10.10.1 [1008]
18:12:06: NAT*: s=10.10.10.1->172.16.131.1, d=172.16.130.1 [1008]
18:12:06: NAT*: s=172.16.130.1, d=172.16.131.1->10.10.10.1 [1009]
18:12:06: NAT*: s=10.10.10.1->172.16.131.1, d=172.16.130.1 [1009]
Non vengono generate né immesse altre traduzioni nella tabella di conversione finché il router non riceve un pacchetto sulla sua interfaccia interna con un indirizzo di origine autorizzato dall'elenco di controllo di accesso (ACL, Access Control List) 7.
Tuttavia, poiché non sono state ancora immesse traduzioni dinamiche, i dispositivi esterni non possono raggiungere nessuno dei dispositivi interni (tranne 10.10.10.1), neanche se inviano pacchetti a un indirizzo globale (da 172.16.131.2 a 172.16.131.10). Quando il router riceve un pacchetto destinato a uno di questi indirizzi globali, controlla la tabella di conversione per verificare se esiste una traduzione. Se non ce ne sono, cerca di inoltrare il pacchetto. Questo comportamento NAT viene descritto più avanti in Configurazione di esempio con il comando ip nat external source list e in Configurazione di esempio con il comando statico ip nat outside source.
Nella topologia sopra riportata, se la comunicazione tra dispositivi di rete interni ed esterni ha origine solo da dispositivi interni, la traduzione dinamica funziona correttamente. Ma cosa succede se nella rete interna viene aggiunto un server e-mail che deve ricevere i pacchetti provenienti dall'esterno? A questo punto è necessario configurare una voce NAT statica in modo che i server di posta elettronica esterni possano comunicare con il server di posta elettronica interno. Se nell'esempio precedente il server e-mail è il dispositivo con l'indirizzo locale 10.10.10.1, si dispone già di una traduzione statica.
Tuttavia, nei casi in cui non si hanno molti indirizzi globali da utilizzare e è necessario configurare staticamente un singolo dispositivo per NAT, è possibile utilizzare una configurazione come quella riportata di seguito:
Router NAT |
ip nat inside source list 7 interface serial 0 overload
ip nat inside source static tcp 10.10.10.1 25 172.16.130.2 25
!--- Refer to ip nat inside source for more details on the command.
interface e 0
ip address 10.10.10.254 255.255.255.0
ip nat inside
!--- For more details the ip nat inside|outside command, !--- please refer to ip nat inside .
interface s 0
ip address 172.16.130.2 255.255.255.0
ip nat outside
access-list 7 permit 10.10.10.0 0.0.0.255
ip route 0.0.0.0 0.0.0.0 172.16.130.1 |
Nell'esempio sopra riportato, NAT è configurato per sovraccaricare l'indirizzo IP del seriale 0. Ciò significa che più indirizzi locali interni possono essere convertiti in modo dinamico nello stesso indirizzo globale, in questo caso l'indirizzo assegnato al numero di serie 0. Inoltre, NAT è configurato in modo statico in modo che i pacchetti provenienti dall'indirizzo locale 10.10.10.1 con porta TCP 25 (SMTP) vengano convertiti nella porta TCP 25 dell'indirizzo IP del numero di serie 0. Poiché si tratta di una voce NAT statica, i server di posta esterni possono generare pacchetti SMTP (porta TCP 25) all'indirizzo globale 172.16.131.254.
Nota: sebbene sia possibile utilizzare lo stesso indirizzo globale per NAT dinamico e statico, quando possibile è preferibile utilizzare indirizzi globali diversi.
La tabella di conversione NAT contiene la voce seguente:
NATRouter#show ip nat translations
Pro Inside global Inside local Outside local Outside global
tcp 172.16.130.2:25 10.10.10.1:25 --- ---
L'output del comando debug ip nat visualizza la conversione NAT quando il dispositivo externalA accede a InsideA:
04:21:16: NAT: s=192.168.1.3, d=172.16.130.2->10.10.10.1 [9919]
04:21:16: NAT: s=10.10.10.1->172.16.130.2, d=192.168.1.3 [0]
04:21:16: NAT*: s=192.168.1.3, d=172.16.130.2->10.10.10.1 [9922]
04:21:16: NAT*: s=192.168.1.3, d=172.16.130.2->10.10.10.1 [9923]
04:21:16: NAT*: s=10.10.10.1->172.16.130.2, d=192.168.1.3 [1]
04:21:16: NAT*: s=10.10.10.1->172.16.130.2, d=192.168.1.3 [2]
04:21:16: NAT*: s=10.10.10.1->172.16.130.2, d=192.168.1.3 [3]
04:21:16: NAT*: s=192.168.1.3, d=172.16.130.2->10.10.10.1 [9927]
04:21:16: NAT*: s=10.10.10.1->172.16.130.2, d=192.168.1.3 [4]
04:21:16: NAT: s=10.10.10.1->172.16.130.2, d=192.168.1.3 [5]
04:21:16: NAT*: s=192.168.1.3, d=172.16.130.2->10.10.10.1 [9931]
04:21:17: NAT*: s=192.168.1.3, d=172.16.130.2->10.10.10.1 [9934]
04:21:17: NAT: s=192.168.1.3, d=172.16.130.2->10.10.10.1 [9935]
04:21:17: NAT*: s=10.10.10.1->172.16.130.2, d=192.168.1.3 [6]
In sintesi, la NAT dinamica richiede che i pacchetti vengano scambiati attraverso il router NAT per generare le traduzioni NAT nella tabella di traduzione. Se si usa il comando ip nat inside, i pacchetti devono provenire dall'interno. Se si usa il comando ip nat external, i pacchetti devono provenire dall'esterno.
Il protocollo NAT statico non richiede lo switching dei pacchetti attraverso il router e le traduzioni vengono immesse staticamente nella tabella di conversione.