Inleiding
In dit document wordt beschreven hoe u problemen kunt oplossen met de Network Address Translation (NAT)-configuratie op het Cisco Adaptive Security Appliance (ASA)-platform.
Voorwaarden
Vereisten
Er zijn geen specifieke vereisten van toepassing op dit document.
Gebruikte componenten
De informatie in dit document is gebaseerd op ASA versie 8.3 en hoger.
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u zorgen dat u de potentiële impact van elke opdracht begrijpt.
Problemen oplossen NAT-configuratie op de ASA
Opmerking: Zie voor enkele basisvoorbeelden van NAT-configuraties, waaronder een video die een basis NAT-configuratie toont, het gedeelte Gerelateerde informatie onderaan dit document.
Wanneer u problemen met NAT-configuraties oplost, is het belangrijk om te begrijpen hoe de NAT-configuratie op de ASA wordt gebruikt om de NAT-beleidstabel op te bouwen.
Deze configuratiefouten zijn verantwoordelijk voor het merendeel van de NAT-problemen waarmee ASA-beheerders worden geconfronteerd:
- De NAT-configuratieregels zijn buiten werking. Een handmatige NAT-regel wordt bijvoorbeeld bovenaan de NAT-tabel geplaatst, waardoor meer specifieke regels die verder naar beneden in de NAT-tabel worden geplaatst, nooit worden geraakt.
- De netwerkobjecten die in de NAT-configuratie worden gebruikt, zijn te breed, waardoor het verkeer per ongeluk overeenkomt met deze NAT-regels en meer specifieke NAT-regels mist.
Het packet tracer hulpprogramma kan worden gebruikt om de meeste NAT-gerelateerde problemen op de ASA te diagnosticeren. Zie de volgende sectie voor meer informatie over hoe de NAT-configuratie wordt gebruikt om de NAT-beleidstabel samen te stellen en hoe u specifieke NAT-problemen kunt oplossen en oplossen.
Bovendien kan de opdracht show nat detail worden gebruikt om te begrijpen welke NAT-regels worden getroffen door nieuwe verbindingen.
Hoe de ASA-configuratie wordt gebruikt om de NAT-beleidstabel op te bouwen
Alle pakketten die door de ASA worden verwerkt, worden geëvalueerd aan de hand van de NAT-tabel. Deze evaluatie begint bovenaan (sectie 1) en werkt naar beneden totdat een NAT-regel is gekoppeld.
Over het algemeen wordt, zodra een NAT-regel is gekoppeld, die NAT-regel toegepast op de verbinding en worden er geen NAT-beleidsregels meer gecontroleerd aan de hand van het pakket, maar er zijn enkele kanttekeningen die hierna worden uitgelegd.
De NAT-beleidstabel
Het NAT-beleid op de ASA is opgebouwd uit de NAT-configuratie.
De drie secties van de ASA NAT-tabel zijn:
| Sectie 1 |
Handmatig NAT-beleid Deze worden verwerkt in de volgorde waarin ze in de configuratie worden weergegeven. |
| Sectie 2 |
Automatisch NAT-beleid Deze worden verwerkt op basis van het NAT-type (statisch of dynamisch) en de prefix (subnetmasker) lengte in het object. |
| Sectie 3 |
Na-auto handmatig NAT-beleid Deze worden verwerkt in de volgorde waarin ze in de configuratie worden weergegeven. |
Dit diagram toont de verschillende NAT-secties en hoe ze zijn gerangschikt:

NAT-regelovereenkomst
Sectie 1
- Een stroom wordt eerst geëvalueerd aan de hand van sectie 1 van de NAT-tabel die begint met de eerste regel.
- Als de bron en de IP-bestemming van het pakket overeenkomen met de parameters van de handmatige NAT-regel, wordt de vertaling toegepast en stopt het proces en worden er geen verdere NAT-regels in een sectie geëvalueerd.
- Als er geen NAT-regel overeenkomt, wordt de stroom vervolgens geëvalueerd aan de hand van sectie 2 van de NAT-tabel.
Sectie 2
- Een stroom wordt geëvalueerd aan de hand van de sectie 2 NAT-regels in de eerder opgegeven volgorde, eerst de statische NAT-regels en vervolgens de dynamische NAT-regels.
- Als een vertaalregel overeenkomt met de bron- of bestemmings-IP van de stroom, kan de vertaling worden toegepast en kunnen de rest van de regels verder worden geëvalueerd om te zien of ze overeenkomen met het andere IP in de stroom. Een auto-NAT-regel kan bijvoorbeeld de bron-IP vertalen en een andere auto-NAT-regel kan de bestemming vertalen.
- Als de stroom overeenkomt met een auto-NAT-regel, stopt het NAT-opzoeken wanneer het einde van sectie 2 is bereikt en worden de regels in sectie 3 niet geëvalueerd.
- Als er geen NAT-regel uit sectie 2 is afgestemd op de stroom, gaat het opzoeken verder naar sectie 3
Sectie 3
- Het proces in sectie 3 is in wezen hetzelfde als in sectie 1. Als de bron en de IP-bestemming van het pakket overeenkomen met de parameters van de handmatige NAT-regel, wordt de vertaling toegepast en stopt het proces en worden er geen verdere NAT-regels in een sectie geëvalueerd.
Dit voorbeeld laat zien hoe de ASA NAT-configuratie met twee regels (één Manual NAT-instructie en één Auto NAT-configuratie) wordt weergegeven in de NAT-tabel:

Hoe NAT-problemen op te lossen
Het hulpprogramma Packet Tracer gebruiken
Om problemen met NAT-configuraties op te lossen, gebruikt u het hulpprogramma packet tracer om te controleren of een pakket het NAT-beleid raakt. Met Packet Tracer kunt u een voorbeeldpakket opgeven dat de ASA binnenkomt, en de ASA geeft aan welke configuratie van toepassing is op het pakket en of het is toegestaan of niet.
In het volgende voorbeeld wordt een voorbeeld van een TCP-pakket gegeven dat de interne interface binnenkomt en bestemd is voor een host op internet. Het packet tracer-hulpprogramma laat zien dat het pakket overeenkomt met een dynamische NAT-regel en wordt vertaald naar het externe IP-adres van 172.16.123.4:
ASA# packet-tracer input inside tcp 10.10.10.123 12345 192.168.200.123 80
...(output omitted)...
Phase: 2
Type: NAT
Subtype:
Result: ALLOW
Config:
object network 10.10.10.0-net
nat (inside,outside) dynamic interface
Additional Information:
Dynamic translate 10.10.10.123/12345 to 172.16.123.4/12345
...(output omitted)...
Result:
input-interface: inside
input-status: up
input-line-status: up
output-interface: outside
output-status: up
output-line-status: up
Action: allow
ASA#
Kies de NAT-regel en klik op Packet Trace om de pakkettracer te activeren vanuit de Cisco Adaptive Security Device Manager (ASDM). Hierbij worden de IP-adressen gebruikt die in de NAT-regel zijn opgegeven als de ingangen voor het hulpmiddel Packet Tracer:

De uitvoer van de opdracht Nat weergeven weergeven weergeven
De uitvoer van de opdracht show nat detail kan worden gebruikt om de NAT-beleidstabel te bekijken. De tellers translate_hits en untranslate_hits kunnen specifiek worden gebruikt om te bepalen welke NAT-vermeldingen op de ASA worden gebruikt.
Als u ziet dat uw nieuwe NAT-regel geen translate_hits of untranslate_hits heeft, betekent dit dat het verkeer niet aankomt bij de ASA, of misschien een andere regel die een hogere prioriteit heeft in de NAT-tabel overeenkomt met het verkeer.
Hier is de NAT-configuratie en de NAT-beleidstabel van een andere ASA-configuratie:

In het vorige voorbeeld zijn er zes NAT-regels geconfigureerd op deze ASA. De nat-output toont hoe deze regels worden gebruikt om de NAT-beleidstabel samen te stellen, evenals het aantal translate_hits en untranslate_hits voor elke regel.
Deze tiktellers worden slechts eenmaal per verbinding verhoogd. Nadat de verbinding is opgebouwd via de ASA, worden de NAT-lijnen niet verhoogd door volgende pakketten die overeenkomen met die huidige verbinding (net zoals de manier waarop toegangslijsttrekkers werken op de ASA).
Translate_hits: het aantal nieuwe verbindingen dat in voorwaartse richting overeenkomt met de NAT-regel.
"Voorwaartse richting" betekent dat de verbinding via de ASA is gebouwd in de richting van de interfaces die in de NAT-regel zijn gespecificeerd.
Als een NAT-regel specificeert dat de interne server naar de externe interface wordt vertaald, is de volgorde van de interfaces in de NAT-regel "nat (binnen, buiten)..."; als die server een nieuwe verbinding met een host aan de buitenkant initieert, neemt de translate_hit-teller toe.
Untranslate_hits: het aantal nieuwe verbindingen dat in omgekeerde richting overeenkomt met de NAT-regel.
Als een NAT-regel specificeert dat de interne server naar de externe interface wordt vertaald, is de volgorde van de interfaces in de NAT-regel "nat (binnen, buiten)..."; als een client aan de buitenkant van de ASA een nieuwe verbinding met de server aan de binnenkant initieert, neemt de untranslate_hit-teller toe.
Nogmaals, als u ziet dat uw nieuwe NAT-regel geen translate_hits of untranslate_hits heeft, betekent dit dat het verkeer niet aankomt bij de ASA, of misschien een andere regel die een hogere prioriteit heeft in de NAT-tabel overeenkomt met het verkeer.
NAT-probleemoplossingsmethodologie
Gebruik packet tracer om te bevestigen dat een sample pakket overeenkomt met de juiste NAT configuratie regel op de ASA. Gebruik de opdracht details tonen om te begrijpen welke NAT-beleidsregels worden geraakt. Als een verbinding overeenkomt met een andere NAT-configuratie dan verwacht, lost u het volgende op:
- Is er een andere NAT-regel die voorrang heeft op de NAT-regel die u van plan was om het verkeer te raken?
- Is er een andere NAT-regel met objectdefinities die te breed zijn (het subnetmasker is te kort, zoals 255.0.0.0) waardoor dit verkeer overeenkomt met de verkeerde regel?
- Zijn de handmatige NAT-beleidsregels buiten werking, waardoor het pakket overeenkomt met de verkeerde regel?
- Is uw NAT-regel onjuist geconfigureerd, waardoor de regel niet overeenkomt met uw verkeer?
Zie de volgende sectie voor voorbeeldproblemen en oplossingen.
Veelvoorkomende problemen met NAT-configuraties
Hier zijn enkele veelvoorkomende problemen die worden ervaren wanneer u NAT configureert op de ASA.
Probleem: Verkeer mislukt als gevolg van NAT Reverse Path Failure (RPF) Fout: Asymmetrische NAT-regels afgestemd op voorwaartse en achterwaartse stromen
De NAT RPF-controle zorgt ervoor dat een verbinding die door de ASA in de voorwaartse richting wordt vertaald, zoals de TCP-synchronisatie (SYN), wordt vertaald door dezelfde NAT-regel in de omgekeerde richting, zoals de TCP/SYN/acknowledge (ACK).
Meestal wordt dit probleem veroorzaakt door inkomende verbindingen die bestemd zijn voor het lokale (niet-vertaalde) adres in een NAT-instructie. Op basisniveau verifieert de NAT RPF dat de omgekeerde verbinding van de server naar de client overeenkomt met dezelfde NAT-regel; als dit niet het geval is, mislukt de NAT RPF-controle.
Voorbeeld: 209.165.200.225

Wanneer de externe host op 192.168.200.225 een pakket rechtstreeks naar het lokale (niet-vertaalde) IP-adres van 10.2.3.2 stuurt, laat de ASA het pakket vallen en logt deze syslog:
%ASA-5-305013: Asymmetric NAT rules matched for forward and reverse flows;
Connection for icmp src outside:192.168.200.225 dst inside:10.2.3.2 (type 8, code 0)
denied due to NAT reverse path failure
Oplossing:
Zorg er eerst voor dat de host gegevens naar het juiste wereldwijde NAT-adres verzendt. Als de host pakketten naar het juiste adres verzendt, controleert u de NAT-regels die door de verbinding worden geraakt.
Controleer of de NAT-regels correct zijn gedefinieerd en of de objecten waarnaar in de NAT-regels wordt verwezen, correct zijn. Controleer ook of de volgorde van de NAT-regels passend is.
Gebruik het hulpprogramma Packet Tracer om de details van het geweigerde pakket op te geven. Packet tracer moet het gedropte pakket weergeven vanwege de RPF-controlefout.
Kijk vervolgens naar de uitvoer van packet tracer om te zien welke NAT-regels worden geraakt in de NAT-fase en de NAT-RPF-fase.
Als een pakket overeenkomt met een NAT-regel in de NAT RPF-controlefase, wat aangeeft dat de omgekeerde stroom een NAT-vertaling zou raken, maar niet overeenkomt met een regel in de NAT-fase, wat aangeeft dat de voorwaartse stroom GEEN NAT-regel zou raken, wordt het pakket weggelaten.
Deze uitvoer komt overeen met het scenario in het vorige diagram, waarbij de externe host ten onrechte verkeer verzendt naar het lokale IP-adres van de server en niet naar het algemene (vertaalde) IP-adres:
ASA# packet-tracer input outside tcp 192.168.200.225 1234 10.2.3.2 80
.....
Phase: 8
Type: NAT
Subtype: rpf-check
Result: DROP
Config:
object network inside-server
nat (inside,outside) static 172.18.22.1
Additional Information:
...
ASA(config)#
Wanneer het pakket bestemd is voor het juiste toegewezen IP-adres van 172.18.22.1, komt het pakket overeen met de juiste NAT-regel in de UN-NAT-fase in de voorwaartse richting, en dezelfde regel in de NAT RPF-controlefase:
ASA(config)# packet-tracer input outside tcp 192.168.200.225 1234 172.18.22.1 80
...
Phase: 2
Type: UN-NAT
Subtype: static
Result: ALLOW
Config:
object network inside-server
nat (inside,outside) static 172.18.22.1
Additional Information:
NAT divert to egress interface inside
Untranslate 172.18.22.1/80 to 10.2.3.2/80
...
Phase: 8
Type: NAT
Subtype: rpf-check
Result: ALLOW
Config:
object network inside-server
nat (inside,outside) static 172.18.22.1
Additional Information:
...
ASA(config)#
Probleem: Handmatige NAT-regels zijn niet in orde, waardoor onjuiste pakketmatches worden veroorzaakt
De handmatige NAT-regels worden verwerkt op basis van hun uiterlijk in de configuratie. Als een zeer brede NAT-regel als eerste in de configuratie wordt vermeld, kan deze een andere, meer specifieke regel verderop in de NAT-tabel overschrijven. Gebruik packet tracer om te controleren welke NAT-regel uw verkeer raakt; het kan nodig zijn om de handmatige NAT-vermeldingen naar een andere volgorde te herschikken.
Oplossing:
NAT-regels opnieuw ordenen met ASDM.

Oplossing:
NAT-regels kunnen opnieuw worden besteld met de CLI als u de regel verwijdert en opnieuw invoegt op een specifiek lijnnummer. Als u een nieuwe regel op een specifieke regel wilt invoegen, voert u het lijnnummer in net nadat de interfaces zijn opgegeven.
Voorbeeld:
ASA(config)# nat (inside,outside) 1 source static 10.10.10.0-net
10.10.10.0-net destination static 192.168.1.0-net 192.168.1.0-net
Probleem
Een NAT-regel is te breed en komt per ongeluk overeen met een deel van het verkeer. Soms worden NAT-regels gemaakt die te brede objecten gebruiken. Als deze regels aan de bovenkant van de NAT-tabel worden geplaatst (bijvoorbeeld bovenaan sectie 1), kunnen ze meer verkeer matchen dan de bedoeling is en ervoor zorgen dat NAT-regels verderop in de tabel nooit worden geraakt.
Oplossing
Gebruik packet tracer om te bepalen of uw verkeer overeenkomt met een regel met objectdefinities die te breed zijn. Als dit het geval is, moet u de reikwijdte van die objecten verkleinen of de regels verder naar beneden in de NAT-tabel of naar de sectie na de automatische selectie (sectie 3) van de NAT-tabel verplaatsen.
Probleem
Een NAT-regel leidt het verkeer om naar een verkeerde interface. NAT-regels kunnen voorrang hebben op de routeringstabel wanneer ze bepalen welke interface een pakket de ASA verlaat. Als een binnenkomend pakket overeenkomt met een vertaald IP-adres in een NAT-instructie, wordt de NAT-regel gebruikt om de uitgang-interface te bepalen.
De NAT-omleidingscontrole (die de routeringstabel kan overschrijven) controleert of er een NAT-regel is die de vertaling van het bestemmingsadres opgeeft voor een inbound pakket dat op een interface aankomt.
Als er geen regel is die expliciet specificeert hoe het IP-adres van de pakketbestemming moet worden vertaald, wordt de algemene routeringstabel geraadpleegd om de uitgang-interface te bepalen.
Als er een regel is die expliciet aangeeft hoe het IP-adres van de pakketbestemming moet worden vertaald, wordt het pakket met de NAT-regel naar de andere interface in de vertaling getrokken en wordt de algemene routeringstabel effectief overgeslagen.
Dit probleem wordt meestal gezien voor inkomende verkeer, dat aankomt op de buitenste interface, en is meestal te wijten aan out-of-order NAT regels die het verkeer omleiden naar onbedoelde interfaces.
Voorbeeld:

Oplossingen:
Dit probleem kan worden opgelost met een van deze acties:
- Bestel de NAT-tabel zodat de meer specifieke vermelding eerst wordt vermeld.
- Gebruik niet-overlappende globale IP-adresbereiken voor de NAT-instructies.
Merk op dat als de NAT-regel een identiteitsregel is (wat betekent dat de IP-adressen niet worden gewijzigd door de regel), het trefwoord voor het opzoeken van routes kan worden gebruikt (dit trefwoord is niet van toepassing op het vorige voorbeeld omdat de NAT-regel geen identiteitsregel is).
Het trefwoord route-lookup zorgt ervoor dat de ASA een extra controle uitvoert wanneer deze overeenkomt met een NAT-regel. Het controleert of de routeringstabel van de ASA het pakket doorstuurt naar dezelfde uitgang-interface waarnaar deze NAT-configuratie het pakket omleidt.
Als de routeringstabel-uitgang-interface niet overeenkomt met de NAT-omleidingsinterface, wordt de NAT-regel niet gekoppeld (de regel wordt overgeslagen) en gaat het pakket verder naar beneden in de NAT-tabel om te worden verwerkt door een latere NAT-regel.
De optie route-opzoeken is alleen beschikbaar als de NAT-regel een NAT-regel voor identiteit is, wat betekent dat de IP-adressen niet worden gewijzigd door de regel. De optie route-opzoeken kan worden ingeschakeld volgens de NAT-regel als u route-opzoeken toevoegt aan het einde van de NAT-regel, of als u het selectievakje Opzoeken routetabel om uitgang-interface te vinden in de NAT-regelconfiguratie in ASDM aanvinkt:

Probleem: Een NAT-regel zorgt ervoor dat de ASA naar Proxy Address Resolution Protocol (ARP) voor verkeer op de toegewezen interface
De ASA Proxy ARP's voor het wereldwijde IP-adresbereik in een NAT-verklaring op de wereldwijde interface. Deze Proxy ARP-functionaliteit kan worden uitgeschakeld op een per-NAT-regelbasis als u het no-proxy-arp-trefwoord aan de NAT-instructie toevoegt.
Dit probleem wordt ook gezien wanneer het globale adressubnet per ongeluk wordt gemaakt om veel groter te zijn dan het was bedoeld.
Oplossing
Voeg indien mogelijk het no-proxy-arp-trefwoord toe aan de NAT-regel.
Voorbeeld:
ASA(config)# object network inside-server
ASA(config-network-object)# nat (inside,outside) static 172.18.22.1 no-proxy-arp
ASA(config-network-object)# end
ASA#
ASA# show run nat
object network inside-server
nat (inside,outside) static 172.18.22.1 no-proxy-arp
ASA#
Dit kan ook worden bereikt met ASDM. Schakel binnen de NAT-regel het selectievakje Proxy ARP uitschakelen in de uitgang-interface in.

.
Gerelateerde informatie