Introduzione
In questo documento viene descritto come configurare il comandoip nat outside source list
e viene descritto cosa succede al pacchetto IP durante il processo NAT.
Prerequisiti
Requisiti
Nessun requisito specifico previsto per questo documento.
Componenti usati
Per la stesura del documento, sono stati usati router Cisco con software Cisco IOS®.
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.
Premesse
È possibile usare questo comando per convertire l'indirizzo di origine dei pacchetti IP che vengono inviati alla rete dall'esterno. Questa azione converte l'indirizzo di destinazione dei pacchetti IP che viaggiano nella direzione opposta, dall'interno all'esterno della rete. Questo comando è utile quando le reti sono sovrapposte e gli indirizzi di rete interni si sovrappongono agli indirizzi esterni. Prendiamo in considerazione il seguente esempio di rete.
Convenzioni
Per ulteriori informazioni sulle convenzioni usate, consultare il documento Cisco sulle convenzioni nei suggerimenti tecnici.
Configurazione
In questa sezione vengono presentate le informazioni necessarie per configurare le funzionalità descritte più avanti nel documento.
Nota: per ulteriori informazioni sui comandi menzionati in questo documento, usare lo strumento Command Lookup Tool (solo utenti registrati).
Esempio di rete
Il documento usa la seguente configurazione di rete:
Esempio di rete
Quando si invia un ping dall'interfaccia di loopback0 del router R1 (172.16.88.1) all'interfaccia di loopback0 del router R2 (172.31.1.1), si verifica la sequenza di eventi successiva:
- Inoltro pacchetti: il router R1 inoltra i pacchetti al router NAT-T perché è configurato con un percorso predefinito. Sull'interfaccia esterna del router NAT, il pacchetto ha un indirizzo di origine (SA) di 172.16.88.1 e un indirizzo di destinazione (DA) di 172.31.1.1.
- Traduzione NAT: poiché l'associazione di sicurezza è consentita dall'access-list 1, che viene utilizzata dal comando ip nat outside source list, viene tradotta in un indirizzo dal pool NAT "NET". In questo caso, l'indirizzo viene tradotto in 172.31.16.10, che è il primo indirizzo disponibile nel pool NAT.
- Routing to Destination: dopo la traduzione, il router NAT cerca la destinazione nella relativa tabella di routing e instrada il pacchetto. Il router R2 riceve il pacchetto sull'interfaccia in entrata con un'ASA di 172.31.16.10 e un DA di 172.31.1.1. Il router R2 risponde inviando una risposta echo ICMP (Internet Control Message Protocol) all'indirizzo 172.31.16.10. Se il router R2 non dispone di un percorso verso 172.31.16.10, il pacchetto viene scartato.
- Gestione delle risposte: in questo caso, il router R2 ha un percorso predefinito, quindi invia il pacchetto di risposta al router NAT, usando un'ASA di 172.31.1.1 e un DA di 172.31.16.10. Il router NAT riceve il pacchetto sull'interfaccia interna e verifica la presenza di un percorso all'indirizzo 172.31.16.10. Se non ha una route, risponde con una risposta ICMP "destinazione irraggiungibile".
- Translation and Routing Back: in questo caso, il router NAT dispone di un percorso verso 172.31.16.10 a causa dell'opzione add-route del comando ip nat external source, che aggiunge un percorso host basato sulla traduzione tra l'indirizzo globale esterno e l'indirizzo locale esterno. Il router NAT ritrasferisce il pacchetto all'indirizzo di origine originale (172.16.88.1) e instrada il pacchetto verso il router R1 verso l'uscita della relativa interfaccia esterna.
Configurazioni
Router R1 |
hostname R1
!
!--- Output suppressed.
!
interface Loopback0
ip address 172.16.88.1 255.255.255.0
!
!--- Output suppressed.
!
interface GigabitEthernet0/0
ip address 172.16.191.254 255.255.255.252
duplex auto
speed auto
!
!--- Output suppressed.
ip route 0.0.0.0 0.0.0.0 172.16.191.253
!--- Default route to forward packets to NAT-Router.
!--- Output suppressed. |
Router NAT-Router |
hostname NAT-Router
!
!--- Output suppressed.
!
interface GigabitEthernet0/0
ip address 172.16.191.253 255.255.255.252
ip nat outside
ip virtual-reassembly in
duplex auto
speed auto
!
interface GigabitEthernet0/1
ip address 172.31.192.202 255.255.255.0
ip nat inside
ip virtual-reassembly in
duplex auto
speed auto
!
ip nat pool NET 172.31.16.10 172.31.16.254 netmask 255.255.255.0
!--- NAT pool defining Outside Local addresses to be used for translation.
!
ip nat outside source list 1 pool NET add-route
!
!--- Configures translation for Outside Global addresses !--- with the NAT pool.
!
ip route 172.16.88.0 255.255.255.0 172.16.191.254
ip route 172.31.1.0 255.255.255.0 172.31.192.201
!
!--- Static routes for reaching the loopback interfaces on R1 and R2.
!
access-list 1 permit 172.16.88.0 0.0.0.255
!
!--- Access-list defining Outside Global addresses to be translated.
!--- Output suppressed. |
Router R2 |
hostname R2
!
!--- Output suppressed.
interface Loopback0
ip address 172.31.1.1 255.255.255.0
!
!
interface GigabitEthernet0/0
ip address 172.31.192.201 255.255.255.0
duplex auto
speed auto
!
!--- Output suppressed.
ip route 0.0.0.0 0.0.0.0 172.31.192.202
!--- Default route to forward packets to NAT-Router.
!--- Output suppressed. |
Verifica
Le informazioni contenute in questa sezione permettono di verificare che la configurazione funzioni correttamente.
Alcuni comandi show sono supportati dallo strumento Output Interpreter (solo utenti registrati); lo strumento permette di visualizzare un'analisi dell'output del show
comando.
Il comando show ip nat translation può essere usato per controllare le voci di traduzione, come mostrato nell'output:
NAT-Router#show ip nat translations
Pro Inside global Inside local Outside local Outside global
--- --- --- 172.31.16.10 172.16.88.1
icmp 172.31.1.1:0 172.31.1.1:0 172.31.16.10:0 172.16.88.1:0
NAT-Router#
L'output mostra che l'indirizzo globale esterno 172.16.88.1, che è l'indirizzo sull'interfaccia Loopback0 del router R1, viene convertito nell'indirizzo locale esterno 172.31.16.10.
È possibile usare il comando show ip route per controllare le voci della tabella di routing, come mostrato:
NAT-Router#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
Gateway of last resort is not set
172.16.0.0/16 is variably subnetted, 3 subnets, 3 masks
S 172.16.88.0/24 [1/0] via 172.16.191.254
C 172.16.191.252/30 is directly connected, GigabitEthernet0/0
L 172.16.191.253/32 is directly connected, GigabitEthernet0/0
172.31.0.0/16 is variably subnetted, 4 subnets, 2 masks
S 172.31.1.0/24 [1/0] via 172.31.192.201
S 172.31.16.10/32 [1/0] via 172.16.88.1
C 172.31.192.0/24 is directly connected, GigabitEthernet0/1
L 172.31.192.202/32 is directly connected, GigabitEthernet0/1
NAT-Router#
L'output mostra una route /32 per l'indirizzo locale esterno 172.31.16.10, creato a causa dell'opzione add-route del comando ip nat outside source. Questo percorso viene utilizzato per il routing e la conversione dei pacchetti che viaggiano dall'interno all'esterno della rete.
Risoluzione dei problemi
In questa sezione vengono fornite informazioni utili per risolvere i problemi di configurazione.
Questo output è il risultato dell'esecuzione dei comandi debug ip packet e debug ip nat sul router NAT-Router, durante il ping tra l'indirizzo di interfaccia (172.16.88.1) del router R1 e l'indirizzo di interfaccia (172.31.1.1) del router R2:
!--- The source address in the first packet arriving on the outside interface is first translated.
*Oct 4 20:26:48.839: NAT: s=172.16.88.1->172.31.16.10, d=172.31.1.1 [0]
!--- The ICMP echo request packet with the translated source address is routed and forwarded on the inside interface.
*Oct 4 20:26:48.839: IP: s=172.31.16.10 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, output feature, NAT Inside(8), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.839: IP: s=172.31.16.10 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, output feature, Common Flow Table(29), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.839: IP: s=172.31.16.10 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, output feature, Stateful Inspection(30), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.839: IP: s=172.31.16.10 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, output feature, NAT ALG proxy(63), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.839: IP: s=172.31.16.10 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), g=172.31.192.201, len 100, forward
*Oct 4 20:26:48.839: IP: s=172.31.16.10 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, sending full packet
!--- The ICMP echo reply packet arriving on the inside interface, is first routed based on the destination address.
Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.31.16.10, len 100, input feature, Common Flow Table(5), rtype 0, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.31.16.10, len 100, input feature, Stateful Inspection(8), rtype 0, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.31.16.10, len 100, input feature, Virtual Fragment Reassembly(39), rtype 0, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.31.16.10, len 100, input feature, Virtual Fragment Reassembly After IPSec Decryption(57), rtype 0, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.31.16.10, len 100, input feature, MCI Check(109), rtype 0, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
!--- The destination address in the packet is then translated.
*Oct 4 20:26:48.841: NAT: s=172.31.1.1, d=172.31.16.10->172.16.88.1 [0]
!--- The ICMP echo reply packet with the translated destination address is forwarded on the outside interface.
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.16.88.1 (GigabitEthernet0/0), len 100, output feature, Post-routing NAT Outside(26), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.16.88.1 (GigabitEthernet0/0), len 100, output feature, Common Flow Table(29), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.16.88.1 (GigabitEthernet0/0), len 100, output feature, Stateful Inspection(30), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.16.88.1 (GigabitEthernet0/0), len 100, output feature, NAT ALG proxy(63), rtype 1, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE
*Oct 4 20:26:48.841: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.16.88.1 (GigabitEthernet0/0), g=172.16.191.254, len 100, forward
*Oct 4 20:26:48.843: IP: s=172.31.1.1 (GigabitEthernet0/1), d=172.16.88.1 (GigabitEthernet0/0), len 100, sending full packet
*Oct 4 20:26:48.845: NAT*: s=172.16.88.1->172.31.16.10, d=172.31.1.1 [1]
*Oct 4 20:26:48.846: NAT*: s=172.31.1.1, d=172.31.16.10->172.16.88.1 [1]
*Oct 4 20:26:48.848: NAT*: s=172.16.88.1->172.31.16.10, d=172.31.1.1 [2]
*Oct 4 20:26:48.849: NAT*: s=172.31.1.1, d=172.31.16.10->172.16.88.1 [2]
*Oct 4 20:26:48.851: NAT*: s=172.16.88.1->172.31.16.10, d=172.31.1.1 [3]
*Oct 4 20:26:48.852: NAT*: s=172.31.1.1, d=172.31.16.10->172.16.88.1 [3]
*Oct 4 20:26:48.854: NAT*: s=172.16.88.1->172.31.16.10, d=172.31.1.1 [4]
*Oct 4 20:26:48.855: NAT*: s=172.31.1.1, d=172.31.16.10->172.16.88.1 [4]
La procedura precedente viene ripetuta per ciascun pacchetto ricevuto sull'interfaccia esterna.
Riepilogo
La differenza principale tra l'uso del comando ip nat outside source list (NAT dinamico) e il comando ip nat outside source static (NAT statico) è che la tabella di conversione non contiene voci finché il router (configurato per NAT) non verifica i criteri di conversione del pacchetto. Nell'esempio precedente, il pacchetto con ASA 172.16.88.1 (che arriva all'interfaccia esterna del router NAT) soddisfa l'access-list 1, i criteri usati dal comando ip nat outside source list. Per questo motivo, i pacchetti devono provenire dalla rete esterna prima che i pacchetti provenienti dalla rete interna possano comunicare con l'interfaccia loopback0 del router R1.
In questo esempio è importante tenere presente due aspetti:
1. Quando il pacchetto si sposta dall'esterno verso l'interno, la traduzione viene eseguita per prima, quindi viene controllata la tabella di routing per la destinazione. Quando il pacchetto viene spostato dall'interno all'esterno, la tabella di routing viene controllata prima per individuare la destinazione e quindi si verifica la traduzione.
2. È importante notare quale parte del pacchetto IP viene tradotta quando si usa ciascuno dei comandi precedenti. La tabella seguente fornisce le linee guida:
Comando |
Azione |
ip nat elenco fonti esterne |
- Converte l'origine dei pacchetti IP che vengono trasmessi dalla rete esterna alla rete interna
- Converte la destinazione dei pacchetti IP che vengono trasmessi dalla rete interna alla rete esterna
|
ip nat nell'elenco delle origini |
- Converte l'origine dei pacchetti IP che vengono trasmessi dalla rete interna alla rete esterna
- Converte la destinazione dei pacchetti IP che vengono trasmessi dalla rete esterna alla rete interna
|
Queste linee guida indicano che esiste più di un modo per tradurre un pacchetto. A seconda delle esigenze specifiche, è possibile determinare come definire le interfacce NAT (interne o esterne) e i percorsi contenuti nella tabella di routing prima o dopo la traduzione. Tenere presente che la parte di pacchetto tradotta dipende dalla direzione in cui il pacchetto è diretto e dalla configurazione del NAT.
Informazioni correlate