Introduzione
In questo documento viene descritta una configurazione che utilizza il comando ip nat external source static e i pacchetti IP risultanti dal processo NAT.
Prerequisiti
Requisiti
Cisco raccomanda la conoscenza di questo argomento:
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
In questo documento viene fornita una configurazione di esempio con l'uso del comando ip nat outside source static e viene fornita una breve descrizione di ciò che accade al pacchetto IP durante il processo NAT. Si consideri la topologia di rete in questo documento come esempio.
Configurazione
Esempio di rete
Il documento usa la seguente configurazione di rete.
Esempio di rete
Quando si esegue un ping proveniente dall'interfaccia di loopback1 del router R1 e destinato all'interfaccia di loopback0 del router R2, si verifica quanto segue:
- Sull'interfaccia esterna (Gi0/0) del router NAT, il pacchetto ping viene visualizzato con un indirizzo di origine (SA) di 172.16.89.32 e un indirizzo di destinazione (DA) di 172.31.1.1.
- NAT converte l'associazione di sicurezza nell'indirizzo locale esterno 172.31.16.5 (corrispondente al comando ip nat external source static configurato sul router NAT).
- Il NAT-Router controlla quindi la tabella di routing per verificare che non sia presente un percorso verso 172.31.1.1.
- Se il percorso non esiste, il router NAT scarta il pacchetto. Tuttavia, in questo caso, il router NAT ha un percorso verso 172.31.1.1 tramite la route statica configurata fino alla subnet 172.31.1.0/24. Inoltra il pacchetto alla destinazione.
- Il router R2 riceve il pacchetto sull'interfaccia in entrata (Gi0/0), ora con un'ASA di 172.31.16.5 e un'ASA di 172.31.1.1.
- Per rispondere, R2 invia una risposta echo ICMP (Internet Control Message Protocol) a 172.31.16.5 (l'indirizzo NAT).
- Se R2 non ha un percorso, scarta il pacchetto. Tuttavia, in questo caso, ha un percorso predefinito verso il router NAT.
- Pertanto, invia un pacchetto di risposta al router NAT, con un'ASA di 172.31.1.1 e un DA di 172.31.16.5.
- Il router NAT vede il pacchetto e cerca un percorso verso l'indirizzo 172.31.16.5.
- In caso contrario, risponde con un messaggio ICMP "destinazione irraggiungibile".
- In questo caso, la route statica è configurata per la subnet 172.31.16.0/24 e punta a R1.
- Converte il pacchetto indietro all'indirizzo 172.16.89.32 e lo inoltra all'interfaccia esterna (Gi0/0).
Configurazioni
In questo documento vengono usate le seguenti configurazioni:
Router R1 |
hostname R1
!
!--- Output suppressed.
!
interface Loopback1
ip address 172.16.89.32 255.255.255.0
!
interface GigabitEthernet0/0
ip address 172.16.191.254 255.255.255.252
duplex auto
speed auto
!
interface GigabitEthernet0/1
no ip address
shutdown
! !--- 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 command defines GigabitEthernet0/1 as a NAT inside interface and GigabitEthernet0/0 as a NAT outside interface.
!--- Output suppressed.
!
no ip http server
no ip http secure-server
ip nat outside source static 172.16.89.32 172.31.16.5
ip route 172.31.1.0 255.255.255.0 172.31.192.201
ip route 172.31.16.0 255.255.255.0 172.16.191.254
!
!--- Outside local address is defined as 172.31.16.5.
!--- Static routes for reaching the loopback interfaces on R2 and subnet 172.31.16.0 towards R1. |
Nota: in questo particolare scenario, non è necessaria una route statica che punti a Loopback1 su R1. Infatti, quando la risposta ICMP entra nel router NAT, la tabella di routing viene controllata prima per la destinazione e quindi viene eseguita la traduzione dell'indirizzo.
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
Usare il comando show ip nat translation 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.5 172.16.89.32
icmp 172.31.1.1:21 172.31.1.1:21 172.31.16.5:21 172.16.89.32:21
NAT-Router#
Risoluzione dei problemi
In questo esempio vengono utilizzati il debug della conversione NAT e il debug dei pacchetti IP per dimostrare il processo NAT.
Attenzione: poiché i comandi di debug generano una quantità significativa di output, utilizzarli solo quando il traffico sulla rete IP è basso in modo che le altre attività del sistema non vengano influenzate negativamente.
Nota: questi output di debug sono stati ottenuti da router con software Cisco IOS. La raccolta di questi output di debug può variare in base alla piattaforma in uso.
Nota: fare riferimento a Informazioni importanti sui comandi di debug prima di usare i comandi debug.
Questo output è il risultato dell'uso simultaneo dei comandi debug ip packet e debug ip nat sul router NAT, durante il ping dall'indirizzo di interfaccia R1 loopback1 (172.16.89.32) all'indirizzo di interfaccia R2 loopback0 (172.31.1.1).
Questo output visualizza il primo pacchetto che arriva all'interfaccia esterna del router NAT. L'indirizzo di origine 172.16.89.32 viene convertito in 172.31.16.5. Il pacchetto ICMP viene inoltrato alla destinazione dell'interfaccia Gigabit Ethernet 0/1.
*Sep 19 15:34:39.925: NAT: s=172.16.89.32->172.31.16.5, d=172.31.1.1 [100]
*Sep 19 15:34:39.925: IP: s=172.31.16.5 (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
*Sep 19 15:34:39.926: IP: s=172.31.16.5 (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
*Sep 19 15:34:39.926: IP: s=172.31.16.5 (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
*Sep 19 15:34:39.927: IP: s=172.31.16.5 (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
*Sep 19 15:34:39.927: IP: s=172.31.16.5 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), g=172.31.192.201, len 100, forward
*Sep 19 15:34:39.928: IP: s=172.31.16.5 (GigabitEthernet0/0), d=172.31.1.1 (GigabitEthernet0/1), len 100, sending full packet
Questo output mostra il pacchetto restituito originato da 172.31.1.1 con un indirizzo di destinazione di 172.31.16.5, che viene convertito in 172.16.89.32. Il pacchetto ICMP risultante viene inoltrato dall'interfaccia Gigabit Ethernet0/0 (NAT-Router).
*Sep 19 15:34:39.930: NAT*: i: icmp (172.31.1.1, 20) -> (172.31.16.5, 20) [100]
*Sep 19 15:34:39.930: NAT*: s=172.31.1.1, d=172.31.16.5->172.16.89.32 [100]
Lo scambio di pacchetti ICMP continua. Il processo NAT per questo output di debug è lo stesso dell'output precedente.
*Sep 19 15:34:39.932: NAT*: o: icmp (172.16.89.32, 20) -> (172.31.1.1, 20) [101]
*Sep 19 15:34:39.932: NAT*: s=172.16.89.32->172.31.16.5, d=172.31.1.1 [101]
*Sep 19 15:34:39.933: NAT*: i: icmp (172.31.1.1, 20) -> (172.31.16.5, 20) [101]
*Sep 19 15:34:39.933: NAT*: s=172.31.1.1, d=172.31.16.5->172.16.89.32 [101]
*Sep 19 15:34:39.935: NAT*: o: icmp (172.16.89.32, 20) -> (172.31.1.1, 20) [102]
*Sep 19 15:34:39.935: NAT*: s=172.16.89.32->172.31.16.5, d=172.31.1.1 [102]
*Sep 19 15:34:39.936: NAT*: i: icmp (172.31.1.1, 20) -> (172.31.16.5, 20) [102]
*Sep 19 15:34:39.936: NAT*: s=172.31.1.1, d=172.31.16.5->172.16.89.32 [102]
*Sep 19 15:34:39.938: NAT*: o: icmp (172.16.89.32, 20) -> (172.31.1.1, 20) [103]
*Sep 19 15:34:39.938: NAT*: s=172.16.89.32->172.31.16.5, d=172.31.1.1 [103]
*Sep 19 15:34:39.939: NAT*: i: icmp (172.31.1.1, 20) -> (172.31.16.5, 20) [103]
*Sep 19 15:34:39.939: NAT*: s=172.31.1.1, d=172.31.16.5->172.16.89.32 [103]
*Sep 19 15:34:39.940: NAT*: o: icmp (172.16.89.32, 20) -> (172.31.1.1, 20) [104]
*Sep 19 15:34:39.940: NAT*: s=172.16.89.32->172.31.16.5, d=172.31.1.1 [104]
*Sep 19 15:34:39.942: NAT*: i: icmp (172.31.1.1, 20) -> (172.31.16.5, 20) [104]
*Sep 19 15:34:39.942: NAT*: s=172.31.1.1, d=172.31.16.5->172.16.89.32 [104]
Riepilogo
Quando il pacchetto si sposta dall'esterno verso l'interno, la conversione viene eseguita per prima, quindi viene controllata la tabella di routing per individuare la destinazione.
Quando il pacchetto viene spostato dall'interno all'esterno, la tabella di routing viene controllata prima per individuare la destinazione, quindi viene eseguita la traduzione.
Per ulteriori informazioni, fare riferimento all'ordine di funzionamento NAT.
Prendere nota della parte del pacchetto IP che viene convertita quando viene utilizzata con ciascuno dei comandi precedenti. La tabella contiene le linee guida:
Comando |
Azione |
statico origine esterna ip nat |
- Converte l'origine dei pacchetti IP trasmessi dall'esterno all'interno.
- Converte la destinazione dei pacchetti IP trasmessi dall'interno all'esterno.
|
statico origine ip nat inside |
- Converte l'origine dei pacchetti IP trasmessi dall'interno all'esterno.
- Converte la destinazione dei pacchetti IP trasmessi dall'esterno all'interno.
|
Queste linee guida indicano che esiste più di un modo per tradurre un pacchetto. In base alle esigenze specifiche, 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 viaggia il pacchetto e dal modo in cui si configura il NAT.
Informazioni correlate