5.0. Network Address Translation voor IPv4
5.0.1. Inleiding
Alle openbare IPv4-adressen die over het internet gaan, moeten worden geregistreerd bij een Regionaal Internet Register (RIR). Organisaties kunnen openbare adressen leasen van een SP, maar alleen de geregistreerde houder van een openbaar internetadres kan dat adres toewijzen aan een netwerkapparaat. Met een theoretisch maximum van 4,3 miljard adressen is de IPv4-adresruimte echter ernstig beperkt. Toen Bob Kahn en Vint Cerf in 1981 voor het eerst de reeks TCP/IP-protocollen, waaronder IPv4, ontwikkelden, hadden ze nooit gedacht wat het internet zou worden. In die tijd was de personal computer vooral een curiositeit voor hobbyisten en het World Wide Web was nog meer dan een decennium verwijderd.
Met de verspreiding van personal computing en de komst van het World Wide Web werd het al snel duidelijk dat 4,3 miljard IPv4-adressen niet genoeg zouden zijn. De langetermijnoplossing was IPv6, maar er waren meer directe oplossingen nodig om uitputting aan te pakken. Voor de korte termijn werden verschillende oplossingen geïmplementeerd door de IETF, waaronder Network Address Translation (NAT) en RFC 1918 private IPv4-adressen. Het hoofdstuk bespreekt hoe NAT, in combinatie met het gebruik van privé-adresruimte, wordt gebruikt om zowel IPv4-adressen te behouden als efficiënter te gebruiken om netwerken van elke omvang toegang tot internet te geven. Dit hoofdstuk behandelt:
NAT-kenmerken, terminologie en algemene bewerkingen
- De verschillende soorten NAT, waaronder statische NAT, dynamische NAT en NAT met overbelasting
- De voor- en nadelen van NAT
- De configuratie, verificatie en analyse van statische NAT, dynamische NAT en NAT met overbelasting
- Hoe port forwarding kan worden gebruikt om toegang te krijgen tot een intern apparaat vanaf internet
- Problemen met NAT oplossen met show- en debug-commando’s
- Hoe NAT voor IPv6 wordt gebruikt om te vertalen tussen IPv6-adressen en IPv4-adressen
5.1. NAT werking
5.1.1. NAT-kenmerken
5.1.1.1. IPv4 Private Address Space
Er zijn niet genoeg openbare IPv4-adressen om een uniek adres toe te wijzen aan elk apparaat dat met internet is verbonden. Netwerken worden gewoonlijk geïmplementeerd met behulp van privé IPv4-adressen, zoals gedefinieerd in RFC 1918. De onderstaande tabel toont het bereik van adressen dat is opgenomen in RFC 1918. Het is zeer waarschijnlijk dat de computer die u gebruikt om deze cursus te bekijken, een privéadres heeft gekregen.
Klasse | RFC 1918 Intern Adresbereik | CIDR Prefix |
---|---|---|
A | 10.0.0.0 – 10.255.255.255 | 10.0.0.0/8 |
B | 172.16.0.0 – 172.31.255.255 | 172.16.0.0/12 |
C | 192.168.0.0 – 192.168.255.255 | 192.168.0.0/16 |
Deze privéadressen worden binnen een organisatie of site gebruikt om apparaten lokaal te laten communiceren. Omdat deze adressen echter geen enkel bedrijf of organisatie identificeren, kunnen privé-IPv4-adressen niet via internet worden gerouteerd. Om een apparaat met een privé IPv4-adres toegang te geven tot apparaten en bronnen buiten het lokale netwerk, moet het privéadres eerst worden vertaald naar een openbaar adres.
Zoals weergegeven in de volgende afbeelding, zorgt NAT voor de vertaling van privéadressen naar openbare adressen. Hierdoor kan een apparaat met een privé IPv4-adres toegang krijgen tot bronnen buiten hun privénetwerk, zoals die op internet. NAT in combinatie met privé IPv4-adressen is een nuttige methode gebleken om openbare IPv4-adressen te behouden. Een enkel, openbaar IPv4-adres kan worden gedeeld door honderden, zelfs duizenden apparaten, elk geconfigureerd met een uniek privé IPv4-adres.
Zonder NAT zou de uitputting van de IPv4-adresruimte ruim voor het jaar 2000 hebben plaatsgevonden. NAT heeft echter bepaalde beperkingen, die later in dit hoofdstuk zullen worden onderzocht. De oplossing voor de uitputting van IPv4-adresruimte en de beperkingen van NAT is de uiteindelijke overgang naar IPv6.
5.1.1.2. Wat is NAT?
NAT heeft veel toepassingen, maar het primaire doel is om openbare IPv4-adressen te behouden. Het doet dit door netwerken toe te staan intern privé-IPv4-adressen te gebruiken en alleen vertalingen naar een openbaar adres te bieden wanneer dat nodig is. NAT heeft als bijkomend voordeel dat het een mate van privacy en beveiliging aan een netwerk toevoegt, omdat het interne IPv4-adressen verbergt voor externe netwerken.
NAT-compatibele routers kunnen worden geconfigureerd met een of meer geldige openbare IPv4-adressen. Deze openbare adressen worden de NAT-pool genoemd. Wanneer een intern apparaat verkeer uit het netwerk stuurt, vertaalt de NAT-enabled router het interne IPv4-adres van het apparaat naar een openbaar adres uit de NAT-pool. Voor externe apparaten lijkt al het verkeer dat het netwerk binnenkomt en verlaat een openbaar IPv4-adres te hebben uit de opgegeven pool van adressen.
Een NAT-router werkt meestal aan de rand van een stub-netwerk. Een stub-netwerk is een netwerk dat een enkele verbinding heeft met het aangrenzende netwerk, een weg in en een weg uit het netwerk. Het voorbeeld in de volgende afbeelding is R2 een edgerouter. Gezien vanaf de ISP vormt R2 een stub-netwerk.
Wanneer een apparaat binnen het stub-netwerk wil communiceren met een apparaat buiten zijn netwerk, wordt het pakket doorgestuurd naar de grensrouter. De grensrouter voert het NAT-proces uit en vertaalt het interne privéadres van het apparaat naar een openbaar, extern, routeerbaar adres.
Opmerking: De verbinding met de ISP kan een privéadres of een openbaar adres gebruiken dat wordt gedeeld door klanten. Voor de doeleinden van dit hoofdstuk wordt een openbaar adres weergegeven.
5.1.1.3. NAT-terminologie
In NAT-terminologie is het interne netwerk de reeks netwerken die onderhevig zijn aan vertaling. Het externe netwerk verwijst naar alle andere netwerken.
Bij gebruik van NAT hebben IPv4-adressen verschillende aanduidingen, afhankelijk van of ze zich op het privénetwerk of op het openbare netwerk (internet) bevinden en of het verkeer inkomend of uitgaand is.
NAT omvat vier soorten adressen:
- Binnen lokaal adres
- Binnen globaal adres
- Buiten lokaal adres
- Buiten globaal adres
Bij het bepalen welk type adres wordt gebruikt, is het belangrijk om te onthouden dat NAT-terminologie altijd wordt toegepast vanuit het perspectief van het apparaat met het vertaalde adres:
- Binnenadres – Het adres van het apparaat dat wordt vertaald door NAT.
- Buitenadres – Het adres van het bestemmingsapparaat.
NAT gebruikt ook het concept van lokaal of globaal met betrekking tot adressen:
- Lokaal adres – Een lokaal adres is elk adres dat aan de binnenkant van het netwerk wordt weergegeven.
- Globaal adres – Een globaal adres is elk adres dat aan de buitenkant van het netwerk wordt weergegeven.
In onderstaande afbeelding heeft PC1 een intern lokaal adres van 192.168.10.10. Vanuit het perspectief van PC1 heeft de webserver een extern adres van 209.165.201.1.
Wanneer pakketten worden verzonden van PC1 naar het globale adres van de webserver, wordt het interne lokale adres van PC1 vertaald naar 209.165.200.226 (binnen het globale adres). Het adres van het externe apparaat wordt meestal niet vertaald, omdat dat adres meestal een openbaar IPv4-adres is.
Merk op dat PC1 verschillende lokale en globale adressen heeft, terwijl de webserver voor beide hetzelfde openbare IPv4-adres heeft. Vanuit het perspectief van de webserver lijkt het verkeer afkomstig van PC1 afkomstig te zijn van 209.165.200.226, het interne globale adres.
De NAT-router, R2 in de afbeelding, is het demarcatiepunt tussen de binnen- en buitennetwerken en tussen lokale en globale adressen.
De termen, binnen en buiten, worden gecombineerd met de termen lokaal en globaal om naar specifieke adressen te verwijzen. In de afbeelding is router R2 geconfigureerd om NAT te leveren. Het heeft een pool van openbare adressen om toe te wijzen aan interne hosts.
- Binnen lokaal adres – Het adres van de bron gezien vanuit het netwerk. In de afbeelding is het IPv4-adres 192.168.10.10 toegewezen aan PC1. Dit is het interne lokale adres van PC1.
- Binnen globaal adres – Het adres van de bron gezien vanaf het externe netwerk. In de afbeelding, wanneer verkeer van PC1 naar de webserver wordt gestuurd op 209.165.201.1, vertaalt R2 het interne lokale adres naar een intern globaal adres. In dit geval verandert R2 het IPv4-bronadres van 192.168.10.10 in 209.165.200.226. In NAT-terminologie wordt het interne lokale adres van 192.168.10.10 vertaald naar het interne algemene adres van 209.165.200.226.
- Buiten globaal adres – Het adres van de bestemming gezien vanaf het externe netwerk. Het is een wereldwijd routeerbaar IPv4-adres dat is toegewezen aan een host op internet. De webserver is bijvoorbeeld bereikbaar op IPv4-adres 209.165.201.1. Meestal zijn de externe lokale en externe globale adressen hetzelfde.
- Buiten lokaal adres – Het adres van de bestemming gezien vanaf het interne netwerk. In dit voorbeeld stuurt PC1 verkeer naar de webserver op het IPv4-adres 209.165.201.1. Hoewel ongebruikelijk, kan dit adres anders zijn dan het globaal routeerbare adres van de bestemming.
De volgende afbeelding laat zien hoe verkeer wordt geadresseerd dat wordt verzonden van een interne pc naar een externe webserver, via de NAT-router. Het laat ook zien hoe retourverkeer in eerste instantie wordt aangepakt en vertaald.
Opmerking: het gebruik van het externe lokale adres valt buiten het bestek van deze cursus.
5.1.1.4. Hoe NAT werkt
In onderstaande animatie wil PC1 met privéadres 192.168.10.10 communiceren met een externe webserver met openbaar adres 209.165.201.1.
PC1 stuurt een pakket dat is geadresseerd aan de webserver. Het pakket wordt doorgestuurd door R1 naar R2.
Wanneer het pakket aankomt bij R2, de NAT-enabled router voor het netwerk, leest R2 het IPv4-bronadres van het pakket om te bepalen of het pakket voldoet aan de criteria die zijn gespecificeerd voor vertaling.
In dit geval komt het IPv4-bronadres overeen met de criteria en wordt het vertaald van 192.168.10.10 (binnen het lokale adres) naar 209.165.200.226 (binnen het globale adres). R2 voegt deze toewijzing van het lokale naar het globale adres toe aan de NAT-tabel.
R2 stuurt het pakket met het vertaalde bronadres naar de bestemming.
De webserver antwoordt met een pakket geadresseerd aan het interne globale adres van PC1 (209.165.200.226).
R2 ontvangt het pakket met bestemmingsadres 209.165.200.226. R2 controleert de NAT-tabel en vindt een vermelding voor deze toewijzing. R2 gebruikt deze informatie en vertaalt het interne globale adres (209.165.200.226) naar het interne lokale adres (192.168.10.10), en het pakket wordt doorgestuurd naar PC1.
5.1.2. Soorten NAT
5.1.2.1. Statische NAT
Er zijn drie soorten NAT-vertaling:
- Statische adresvertaling (statische NAT) – Een-op-een adrestoewijzing tussen lokale en globale adressen.
- Dynamische adresvertaling (dynamische NAT) – Veel-op-veel-adrestoewijzing tussen lokale en globale adressen.
- Port Address Translation (PAT) – Veel-op-een adrestoewijzing tussen lokale en globale adressen. Deze methode wordt ook wel overloading (NAT-overloading) genoemd.
Statische NAT
Statische NAT gebruikt een één-op-één toewijzing van lokale en globale adressen. Deze mappings worden geconfigureerd door de netwerkbeheerder en blijven constant.
In de onderstaand voorbeeld is R2 geconfigureerd met statische toewijzingen voor de interne lokale adressen van Svr1, PC2 en PC3. Wanneer deze apparaten verkeer naar internet sturen, worden hun interne lokale adressen vertaald naar de geconfigureerde interne globale adressen. Voor externe netwerken hebben deze apparaten openbare IPv4-adressen.
Inside Local Address | Inside Global Address – Addresses reachable via R2 |
---|---|
192.168.10.10 | 209.165.200.226 |
192.168.10.11 | 209.165.200.227 |
192.168.10.12 | 209.165.200.228 |
Statische NAT is met name handig voor webservers of apparaten die een consistent adres moeten hebben dat toegankelijk is vanaf internet, zoals een bedrijfswebserver. Het is ook handig voor apparaten die buiten de locatie toegankelijk moeten zijn voor bevoegd personeel, maar niet voor het grote publiek op internet. Een netwerkbeheerder van PC4 kan bijvoorbeeld SSH naar het interne globale adres van Svr1 (209.165.200.226). R2 vertaalt dit interne globale adres naar het interne lokale adres en verbindt de beheerderssessie met Svr1.
Statische NAT vereist dat er voldoende openbare adressen beschikbaar zijn om aan het totale aantal gelijktijdige gebruikerssessies te voldoen.
5.1.2.2. Dynamische NAT
Dynamic NAT gebruikt een pool van openbare adressen en wijst deze toe op basis van wie het eerst komt, het eerst maalt. Wanneer een intern apparaat toegang vraagt tot een extern netwerk, wijst dynamische NAT een beschikbaar openbaar IPv4-adres uit de pool toe.
In de onderstaand voorbeeld heeft PC3 toegang tot internet gekregen met het eerste beschikbare adres in de dynamische NAT-pool. De overige adressen zijn nog beschikbaar voor gebruik. Net als bij statische NAT, vereist dynamische NAT dat er voldoende openbare adressen beschikbaar zijn om te voldoen aan het totale aantal gelijktijdige gebruikerssessies.
Inside Local Address | Inside Global Address Pool – Addresses reachable via R2 |
---|---|
192.168.10.12 | 209.165.200.226 |
Available | 209.165.200.227 |
Available | 209.165.200.228 |
Available | 209.165.200.229 |
Available | 209.165.200.230 |
5.1.2.3. Port Address Translation (PAT)
Port Address Translation (PAT), ook bekend als NAT-overload, wijst meerdere privé-IPv4-adressen toe aan een enkel openbaar IPv4-adres of een paar adressen. Dit is wat de meeste thuisrouters doen. De ISP wijst één adres toe aan de router, maar meerdere leden van het huishouden kunnen tegelijkertijd toegang krijgen tot internet. Dit is de meest voorkomende vorm van NAT.
Met PAT kunnen meerdere adressen worden toegewezen aan één of enkele adressen, omdat elk privéadres ook wordt gevolgd door een poortnummer. Wanneer een apparaat een TCP/IP-sessie start, genereert het een TCP- of UDP-bronpoortwaarde om de sessie uniek te identificeren. Wanneer de NAT-router een pakket van de client ontvangt, gebruikt deze het bronpoortnummer om de specifieke NAT-vertaling uniek te identificeren.
PAT zorgt ervoor dat apparaten voor elke sessie met een server op internet een ander TCP-poortnummer gebruiken. Wanneer een reactie van de server terugkomt, bepaalt het bronpoortnummer, dat het bestemmingspoortnummer wordt op de terugreis, naar welk apparaat de router de pakketten doorstuurt. Het PAT-proces valideert ook dat de inkomende pakketten zijn aangevraagd, waardoor een zekere mate van beveiliging aan de sessie wordt toegevoegd.
De onderstaande animatie illustreert het PAT-proces. PAT voegt unieke bronpoortnummers toe aan het interne globale adres om onderscheid te maken tussen vertalingen.
Terwijl R2 elk pakket verwerkt, gebruikt het een poortnummer (1331 en 1555, in dit voorbeeld) om het apparaat te identificeren waarvan het pakket afkomstig is. Het bronadres (SA) is het interne lokale adres waaraan het door TCP/IP toegewezen poortnummer is toegevoegd. Het bestemmingsadres (DA) is het externe lokale adres waaraan het servicepoortnummer is toegevoegd. In dit voorbeeld is de servicepoort 80, wat HTTP is.
Voor het bronadres vertaalt R2 het interne lokale adres naar een intern algemeen adres met het poortnummer toegevoegd. Het bestemmingsadres wordt niet gewijzigd, maar wordt nu het externe globale IP-adres genoemd. Wanneer de webserver antwoordt, wordt het pad omgekeerd.
5.1.2.4. Volgende beschikbare poort
In het vorige voorbeeld zijn de clientpoortnummers, 1331 en 1555, niet gewijzigd op de NAT-router. Dit is niet erg waarschijnlijk, omdat de kans groot is dat deze poortnummers al aan andere actieve sessies zijn gekoppeld.
PAT probeert de oorspronkelijke bronpoort te behouden. Als de oorspronkelijke bronpoort echter al wordt gebruikt, wijst PAT het eerste beschikbare poortnummer toe vanaf het begin van de juiste poortgroep 0-511, 512-1.023 of 1.024-65.535. Als er geen poorten meer beschikbaar zijn en er is meer dan één extern adres in de adrespool, gaat PAT naar het volgende adres om te proberen de oorspronkelijke bronpoort toe te wijzen. Dit proces gaat door totdat er geen beschikbare poorten of externe IP-adressen meer zijn.
Klik op de knop Afspelen in de afbeelding om de PAT-bewerking te bekijken. In dit voorbeeld heeft PAT de volgende beschikbare poort (1445) toegewezen aan het tweede hostadres.
In de onderstaande animatie hebben de hosts hetzelfde poortnummer 1444 gekozen. Dit is acceptabel voor het binnenadres, omdat de hosts unieke privé IP-adressen hebben. Bij de NAT-router moeten echter de poortnummers worden gewijzigd; anders zouden pakketten van twee verschillende hosts R2 verlaten met hetzelfde bronadres. In dit voorbeeld wordt ervan uitgegaan dat de eerste 420 poorten al in gebruik zijn, dus het volgende beschikbare poortnummer, 1445, is gebruikt.
5.1.2.5. NAT en PAT vergelijken
Door de verschillen tussen NAT en PAT samen te vatten, kunt u ze beter begrijpen.
Zoals volgende tabel laat zien, vertaalt NAT IPv4-adressen op een 1:1-basis tussen privé-IPv4-adressen en openbare IPv4-adressen.
Inside Global Address Pool | Inside Local Address |
---|---|
209.165.200.226 | 192.168.10.10 |
209.165.200.227 | 192.168.10.11 |
209.165.200.228 | 192.168.10.12 |
209.165.200.229 | 192.168.10.13 |
De volgende tabel laat echter zien hoe PAT zowel het adres als het poortnummer wijzigt.
Inside Global Address | Inside Local Address |
---|---|
209.165.200.226:1444 | 192.168.10.10:1444 |
209.165.200.226:1445 | 192.168.10.11:1444 |
209.165.200.226:1555 | 192.168.10.12:1555 |
209.165.200.226:1556 | 192.168.10.13:1555 |
NAT stuurt inkomende pakketten door naar hun interne bestemming door te verwijzen naar het inkomende IPv4-bronadres dat door de host op het openbare netwerk is opgegeven. Met PAT zijn er over het algemeen slechts één of een paar openbaar toegankelijke IPv4-adressen. Inkomende pakketten van het openbare netwerk worden naar hun bestemming op het particuliere netwerk gerouteerd door te verwijzen naar een tabel in de NAT-router. Deze tabel houdt openbare en privépoortparen bij. Dit wordt het volgen van verbindingen genoemd.
Pakketten zonder een Layer 4-segment
Hoe zit het met IPv4-pakketten die andere gegevens dan een TCP- of UDP-segment vervoeren? Deze pakketten bevatten geen Layer 4-poortnummer. PAT vertaalt de meest voorkomende protocollen van IPv4 die geen TCP of UDP als transportlaagprotocol gebruiken. De meest voorkomende hiervan is ICMPv4. Elk van deze soorten protocollen wordt door PAT anders behandeld. ICMPv4-queryberichten, echo-verzoeken en echo-antwoorden bevatten bijvoorbeeld een query-ID. ICMPv4 gebruikt de Query-ID om een echo-verzoek te identificeren met het bijbehorende echo-antwoord. De query-ID wordt verhoogd met elk verzonden echo-verzoek. PAT gebruikt de Query-ID in plaats van een Layer 4-poortnummer.
Opmerking: andere ICMPv4-berichten gebruiken de Query-ID niet. Deze berichten en andere protocollen die geen TCP- of UDP-poortnummers gebruiken, variëren en vallen buiten het bestek van dit curriculum.
5.1.3. Voordelen van NAT
5.1.3.1. Voordelen van NAT
Zoals blijkt, biedt NAT veel voordelen, waaronder:
- NAT behoudt het wettelijk geregistreerde adresseringsschema door de privatisering van intranetten toe te staan. NAT bewaart adressen door middel van multiplexing op poortniveau van de toepassing. Met NAT-overbelasting kunnen interne hosts een enkel openbaar IPv4-adres delen voor alle externe communicatie. In dit type configuratie zijn er maar heel weinig externe adressen nodig om veel interne hosts te ondersteunen.
- NAT vergroot de flexibiliteit van verbindingen met het openbare netwerk. Er kunnen meerdere pools, back-uppools en taakverdelingspools worden geïmplementeerd om betrouwbare openbare netwerkverbindingen te garanderen.
- NAT biedt consistentie voor interne netwerkadresseringsschema’s. Op een netwerk dat geen privé-IPv4-adressen en NAT gebruikt, vereist het wijzigen van het openbare IPv4-adresschema de heradressering van alle hosts op het bestaande netwerk. De kosten van het heradresseren van hosts kunnen aanzienlijk zijn.
- NAT zorgt ervoor dat het bestaande privé IPv4-adresschema behouden blijft, terwijl het gemakkelijk kan worden gewijzigd naar een nieuw openbaar adresseringsschema. Dit betekent dat een organisatie van ISP kan veranderen en geen interne klanten hoeft te veranderen.
- NAT biedt netwerkbeveiliging. Omdat privénetwerken hun adressen of interne topologie niet adverteren, blijven ze redelijk veilig wanneer ze worden gebruikt in combinatie met NAT om gecontroleerde externe toegang te krijgen. NAT vervangt echter geen firewalls.
5.1.3.2. Nadelen van NAT
Het feit dat hosts op internet rechtstreeks lijken te communiceren met het NAT-apparaat, in plaats van met de eigenlijke host in het privénetwerk, creëert een aantal problemen. Enkele van de nadelen van NAT zijn:
- Verminderde prestaties.
- Verminderde End-to-end functionaliteit.
- End-to-end IP-traceerbaarheid gaat verloren.
- Tunnelen wordt ingewikkelder.
- Het initiëren van TCP-verbindingen kan worden verstoord.
Een nadeel van het gebruik van NAT houdt verband met de netwerkprestaties, met name voor realtime-protocollen zoals VoIP. NAT verhoogt de schakelvertragingen omdat de vertaling van elk IPv4-adres binnen de pakketheaders tijd kost. Het eerste pakket is altijd procesgeschakeld en gaat door het langzamere pad. De router moet elk pakket bekijken om te beslissen of het vertaald moet worden. De router moet de IPv4-header wijzigen en mogelijk de TCP- of UDP-header. De IPv4-headercontrolesom, samen met de TCP- of UDP-controlesom, moet elke keer dat een vertaling wordt gemaakt opnieuw worden berekend. Resterende pakketten gaan via het snel-geschakelde pad als er een cache-item bestaat; anders lopen ook zij vertraging op.
Een ander nadeel van het gebruik van NAT is dat end-to-end adressering verloren gaat. Veel internetprotocollen en -toepassingen zijn afhankelijk van end-to-end-adressering van de bron tot de bestemming. Sommige toepassingen werken niet met NAT. Sommige beveiligingstoepassingen, zoals digitale handtekeningen, mislukken bijvoorbeeld omdat het IPv4-bronadres verandert voordat het de bestemming bereikt. Toepassingen die fysieke adressen gebruiken in plaats van een gekwalificeerde domeinnaam, bereiken geen bestemmingen die via de NAT-router worden vertaald. Soms kan dit probleem worden vermeden door statische NAT-toewijzingen te implementeren.
End-to-end IPv4-traceerbaarheid gaat ook verloren. Het wordt veel moeilijker om pakketten te traceren die talloze pakketadreswijzigingen ondergaan over meerdere NAT-hops, wat het oplossen van problemen een uitdaging maakt.
Het gebruik van NAT bemoeilijkt ook tunnelingprotocollen, zoals IPsec, omdat NAT waarden in de headers wijzigt die interfereren met de integriteitscontroles die door IPsec en andere tunnelingprotocollen worden uitgevoerd.
Services die de initiatie van TCP-verbindingen van het externe netwerk vereisen, of stateless protocollen, zoals die met UDP, kunnen worden verstoord. Tenzij de NAT-router is geconfigureerd om dergelijke protocollen te ondersteunen, kunnen inkomende pakketten hun bestemming niet bereiken. Sommige protocollen kunnen één instantie van NAT tussen deelnemende hosts accommoderen (passieve FTP, bijvoorbeeld), maar mislukken wanneer beide systemen door NAT van internet worden gescheiden.
5.2. NAT configureren
5.2.1. Statische NAT configureren
5.2.1.1. Statische NAT configureren
Statische NAT is een één-op-één-toewijzing tussen een binnenadres en een buitenadres. Met statische NAT kunnen externe apparaten verbindingen tot stand brengen met interne apparaten met behulp van het statisch toegewezen openbare adres. Een interne webserver kan bijvoorbeeld worden toegewezen aan een specifiek intern algemeen adres, zodat deze toegankelijk is vanaf externe netwerken.
De volgende afbeelding toont een binnennetwerk met daarin een webserver met een privé IPv4-adres. Router R2 is geconfigureerd met statische NAT om apparaten op het externe netwerk (internet) toegang te geven tot de webserver. De client op het externe netwerk heeft toegang tot de webserver via een openbaar IPv4-adres. Statische NAT vertaalt het openbare IPv4-adres naar het privé IPv4-adres.
Inside Global Address | Inside Local Address |
---|---|
209.165.201.5 | 192.168.10.254 |
Er zijn twee basistaken bij het configureren van statische NAT-vertalingen.
Stap 1. De eerste taak is om een mapping te maken tussen het interne lokale adres en de interne globale adressen. Het interne lokale adres 192.168.10.254 en het algemene adres 209.165.201.5 in Afbeelding 1 zijn bijvoorbeeld geconfigureerd als een statische NAT-vertaling.
Stap 2. Nadat de mapping is geconfigureerd, worden de interfaces die deelnemen aan de vertaling geconfigureerd als binnen of buiten ten opzichte van NAT. In het voorbeeld is de seriële 0/0/0-interface van R2 een interne interface en is seriële 0/1/0 een externe interface.
Pakketten die binnenkomen op de interne interface van R2 (Serial 0/0/0) vanaf het geconfigureerde interne lokale IPv4-adres (192.168.10.254) worden vertaald en vervolgens doorgestuurd naar het externe netwerk. Pakketten die aankomen op de externe interface van R2 (Serial 0/1/0), die zijn geadresseerd aan het geconfigureerde interne globale IPv4-adres (209.165.201.5), worden vertaald naar het interne lokale adres (192.168.10.254) en vervolgens doorgestuurd naar de binnen netwerk.
De volgende tabel geeft een overzicht van de opdrachten die nodig zijn om statische NAT te configureren.
Stap | Actie | Opmerkingen |
---|---|---|
1 | Breng een statische vertaling tot stand tussen een intern lokaal adres en een intern algemeen adres. Router(config)# ip nat inside source static local-ip global-ip | Voer de no ip nat inside source static globaleconfiguratie modusopdracht in om de dynamische bronvertaling te verwijderen. |
2 | Specificeer de interne interface. Router(config)# interface type number | Voer de interface opdracht in. De CLI-prompt verandert van (config)# naar (config-if)#. |
3 | Markeer de interface als verbonden met de binnenkant. Router(config-if)# ip nat inside | |
4 | Sluit de interfaceconfiguratiemodus af. Router(config-if)# exit | |
5 | Geef de externe interface op. Router(config)# interface type number | |
6 | Markeer de interface als verbonden met de buitenkant. Router(config-if)# ip nat outside |
Het volgend voorbeeld toont de opdrachten die nodig zijn op R2 om een statische NAT-toewijzing te maken naar de webserver in de voorbeeldtopologie. Met de getoonde configuratie vertaalt R2 pakketten van de webserver met adres 192.168.10.254 naar het openbare IPv4-adres 209.165.201.5. De internetclient stuurt webverzoeken naar het openbare IPv4-adres 209.165.201.5. R2 stuurt dat verkeer door naar de webserver op 192.168.10.254.
Establishes static translation between an inside local address and an inside global address.
R2(config)# ip nat inside source static 192.168.10.254 209.165.201.5
R2(config)# interface Serial0/0/0
R2(config-if)# ip address 10.1.1.2 255.255.255.252
Identifies interface serial 0/0/0 as an inside NAT interface.
R2(config-if)# ip nat inside
R2(config-if)# exit
R2(config)# interface Serial0/1/0
R2(config-if)# ip address 209.165.200.225 255.255.255.224
Identifies interface serial 0/1/0 as the outside NAT interface.
R2(config-if)# ip nat outside
5.2.1.2. Statische NAT analyseren
Met de vorige configuratie illustreert de afbeelding het statische NAT-vertaalproces tussen de client en de webserver. Meestal worden statische vertalingen gebruikt wanneer clients op het externe netwerk (internet) servers op het interne (interne) netwerk moeten bereiken.
- De klant wil een verbinding met de webserver openen. De client stuurt een pakket naar de webserver met behulp van het openbare IPv4-bestemmingsadres 209.165.201.5. Dit is het interne globale adres van de webserver.
- Het eerste pakket dat R2 van de client op zijn NAT-buiteninterface ontvangt, zorgt ervoor dat R2 zijn NAT-tabel controleert. Het bestemmings-IPv4-adres bevindt zich in de NAT-tabel en wordt vertaald.
- R2 vervangt het interne algemene adres van 209.165.201.5 door het interne lokale adres van 192.168.10.254. R2 stuurt het pakket vervolgens door naar de webserver.
- De webserver ontvangt het pakket en reageert op de client met het interne lokale adres 192.168.10.254.
5a. R2 ontvangt het pakket van de webserver op zijn NAT-binneninterface met het bronadres van het interne lokale adres van de webserver, 192.168.10.254.
5b. R2 controleert de NAT-tabel op een vertaling voor het interne lokale adres. Het adres is te vinden in de NAT-tabel. R2 vertaalt het bronadres naar het interne globale adres van 209.165.201.5 en stuurt het pakket door vanuit zijn seriële 0/1/0-interface naar de client.
- De cliënt ontvangt het pakket en vervolgt het gesprek. De NAT-router voert stappen 2 tot 5b uit voor elk pakket. Stap 6 is niet weergegeven in de afbeelding.
Inside Global Address | Inside Local Address | Outside Local Address | Outside Global Address |
---|---|---|---|
209.165.201.5 | 192.168.10.254 | 209.165.200.254 | 209.165.200.254 |
5.2.1.3. Statische NAT verifiëren
Een handig commando om de NAT-bewerking te verifiëren is show ip nat translations. Deze opdracht toont actieve NAT-vertalingen. Statische vertalingen staan, in tegenstelling tot dynamische vertalingen, altijd in de NAT-tabel. Het volgend voorbeeld toont de uitvoer van deze opdracht met behulp van het vorige configuratievoorbeeld. Omdat het voorbeeld een statische NAT-configuratie is, is de vertaling altijd aanwezig in de NAT-tabel, ongeacht eventuele actieve communicatie.
R2# show ip nat translations
Pro Inside global Inside local Outside local Outside global
--- 209.165.201.5 192.168.10.254 --- ---
R2#
Als de opdracht wordt gegeven tijdens een actieve sessie, geeft de uitgang ook het adres van het externe apparaat aan, zoals weergegeven in het volgend voorbeeld.
R2# show ip nat translations
Pro Inside global Inside local Outside local Outside global
--- 209.165.201.5 192.168.10.254 209.165.200.254 209.165.200.254
R2#
Een ander handige opdracht is show ip nat statistics. Zoals weergegeven in het volgend voorbeeld, geeft de opdracht show ip nat statisics informatie weer over het totale aantal actieve vertalingen, NAT-configuratieparameters, het aantal adressen in de pool en het aantal toegewezen adressen.
R2# clear ip nat statistics
R2# show ip nat statistics
Total active translations: 1 (1 static, 0 dynamic; 0 extended)
Peak translations: 0
Outside interfaces:
Serial0/0/1
Inside interfaces:
Serial0/0/0
Hits: 0 Misses: 0
Client PC establishes a session with the web server
R2# show ip nat statistics
Total active translations: 1 (1 static, 0 dynamic; 0 extended)
Peak translations: 2, occurred 00:00:14 ago
Outside interfaces:
Serial0/1/0
Inside interfaces:
Serial0/0/0
Hits: 5 Misses: 0
Om te controleren of de NAT-vertaling werkt, kunt u het beste de statistieken van eerdere vertalingen wissen met de opdraht clear ip nat statistics voordat u gaat testen.
Voorafgaand aan enige communicatie met de webserver, toont de opdracht show ip nat statistics geen huidige hits. Nadat de client een sessie met de webserver tot stand heeft gebracht, is de opdracht show ip nat statistics verhoogd tot vijf hits. Hiermee wordt gecontroleerd of de statische NAT-vertaling plaatsvindt op R2.
5.2.2. Dynamische NAT configureren
5.2.2.1. Dynamische NAT werking
Terwijl statische NAT een permanente toewijzing biedt tussen een intern lokaal adres en een intern algemeen adres, maakt dynamische NAT de automatische toewijzing van interne lokale adressen aan interne globale adressen mogelijk. Deze interne globale adressen zijn doorgaans openbare IPv4-adressen. Dynamic NAT gebruikt een groep of pool van openbare IPv4-adressen voor vertaling.
Dynamische NAT vereist, net als statische NAT, de configuratie van de binnen- en buiteninterfaces die deelnemen aan NAT. Waar statische NAT echter een permanente toewijzing aan een enkel adres maakt, gebruikt dynamische NAT een pool van adressen.
Opmerking: vertalen tussen openbare en privé IPv4-adressen is verreweg het meest gebruikte gebruik van NAT. NAT-vertalingen kunnen echter plaatsvinden tussen elk paar adressen.
De voorbeeldtopologie die in de afbeelding wordt getoond, heeft een binnennetwerk met adressen uit de privéadresruimte van RFC 1918. Aan router R1 zijn twee LAN’s verbonden, 192.168.10.0/24 en 192.168.11.0/24. Router R2, de grensrouter, is geconfigureerd voor dynamische NAT met behulp van een pool van openbare IPv4-adressen 209.165.200.226 tot en met 209.165.200.240.
Inside Global Address | Inside Local Address Pool |
---|---|
209.165.200.226 | 192.168.10.10 |
209.165.200.227 | 192.168.11.10 |
209.165.200.228 | Available |
… | … |
209.165.200.240 | Available |
De pool van openbare IPv4-adressen (binnen de globale adrespool) is beschikbaar voor elk apparaat in het interne netwerk op basis van wie het eerst komt, het eerst maalt. Met dynamische NAT wordt een enkel binnenadres vertaald naar een enkel buitenadres. Met dit type vertaling moeten er voldoende adressen in de pool zijn om alle interne apparaten die tegelijkertijd toegang tot het externe netwerk nodig hebben, te huisvesten. Als alle adressen in de pool zijn gebruikt, moet een apparaat wachten op een beschikbaar adres voordat het toegang krijgt tot het externe netwerk.
5.2.2.2. Dynamische NAT configureren
Er zijn vijf stappen bij het configureren van dynamische NAT-vertalingen.
Stap 1. Definieer de pool van adressen die voor de vertaling moet worden gebruikt. Het zwembad krijgt een naam toegewezen om het te identificeren. De pool van beschikbare adressen wordt gedefinieerd door het begin-IPv4-adres en het eind-IPv4-adres van de pool aan te geven. Deze pool van adressen is meestal een groep openbare adressen. Gebruik de opdracht ip nat pool pool-name start-ip end-ip {netmask netmask | prefix-length prefix-length}. De trefwoorden netmask of prefix-length geven aan welke adresbits bij het netwerk horen en welke bits bij de host voor de reeks adressen.
Stap 2. Configureer een standaard ACL om alleen die adressen te identificeren (toestaan) die moeten worden vertaald, met behulp van volgende opdracht access-list access-list-number permit source [source-wildcard]. Een ACL die te tolerant is, kan tot onvoorspelbare resultaten leiden. Onthoud dat er een impliciete deny all instructie aan het einde van elke ACL staat.
Stap 3. Bind de ACL aan de pool. De opdracht ip nat inside source list access-list-number number pool pool name wordt gebruikt om de ACL aan de pool te binden. Deze configuratie wordt door de router gebruikt om te identificeren welke apparaten (lijst) welke adressen ontvangen (pool).
Stap 4. Identificeer welke interfaces zich binnenin bevinden met behulp van de opdracht interface type number ip nat inside.
Stap 5. Bepaal welke interfaces zich buiten bevinden met behulp van de opdracht interface type number ip nat outside.
Het volgende voorbeeld toont een topologie en een configuratie. Deze configuratie maakt vertaling mogelijk voor alle hosts op het 192.168.0.0/16-netwerk, inclusief de 192.168.10.0 en 192.168.11.0 LAN’s, wanneer ze verkeer genereren dat S0/0/0 binnenkomt en S0/1/0 verlaat. Deze hosts worden vertaald naar een beschikbaar adres in de pool in het bereik 209.165.200.226 – 209.165.200.240.
R2(config)# ip nat pool NAT-POOL1 209.165.200.226 209.165.200.240 netmask 255.255.255.224
R2(config)# access-list 1 permit 192.168.0.0 0.0.255.255
R2(config)# ip nat inside source list 1 pool NAT-POOL1
R2(config)# interface Serial0/0/0
R2(config-if)# ip nat inside
R2(config)# interface Serial0/1/0
R2(config-if)# ip nat outside
5.2.2.3. Dynamische NAT analyseren
Met de vorige configuratie illustreren de afbeeldingen het dynamische NAT-vertaalproces tussen twee clients en de webserver:
Inside Global Address | Inside Local Address Pool |
---|---|
209.165.200.226 | 192.168.10.10 |
209.165.200.227 | 192.168.11.10 |
In de bovenstaadne afbeelding is de verkeersstroom van binnen naar buiten weergegeven:
- De hosts met de bron-IPv4-adressen (192.168.10.10 (PC1) en 192.168.11.10 (PC2)) verzenden pakketten met het verzoek om verbinding te maken met de server op het openbare IPv4-adres (209.165.200.254).
- R2 ontvangt het eerste pakket van host 192.168.10.10. Omdat dit pakket is ontvangen op een interface die is geconfigureerd als een interne NAT-interface, controleert R2 de NAT-configuratie om te bepalen of dit pakket moet worden vertaald. De ACL staat dit pakket toe, dus R2 zal het pakket vertalen. R2 controleert zijn NAT-tabel. Omdat er geen vertaalinvoer is voor dit IP-adres, bepaalt R2 dat het bronadres 192.168.10.10 dynamisch moet worden vertaald. R2 selecteert een beschikbaar globaal adres uit de dynamische adrespool en maakt een vertaalinvoer, 209.165.200.226. Het oorspronkelijke IPv4-bronadres (192.168.10.10) is het interne lokale adres en het vertaalde adres is het interne globale adres (209.165.200.226) in de NAT-tabel.
Voor de tweede host, 192.168.11.10, herhaalt R2 de procedure, selecteert het volgende beschikbare globale adres uit de dynamische adrespool en maakt een tweede vertaalitem, 209.165.200.227.
- R2 vervangt het interne lokale bronadres van PC1, 192.168.10.10, door het vertaalde interne globale adres van 209.165.200.226 en stuurt het pakket door. Hetzelfde proces vindt plaats voor het pakket van PC2 met gebruik van het vertaalde adres voor PC2 (209.165.200.227).
Inside Global Address | Inside Local Address Pool |
---|---|
209.165.200.226 | 192.168.10.10 |
209.165.200.227 | 192.168.11.10 |
In de bovenstaande afbeelding is de verkeersstroom van buiten naar binnen weergegeven:
- De server ontvangt het pakket van PC1 en reageert met het IPv4-bestemmingsadres 209.165.200.226. Wanneer de server het tweede pakket ontvangt, reageert deze op PC2 met het IPv4-bestemmingsadres 209.165.200.227.
5a. Wanneer R2 het pakket ontvangt met het IPv4-bestemmingsadres van 209.165.200.226; het voert een NAT-tabelopzoeking uit. Met behulp van de afbeelding uit de tabel vertaalt R2 het adres terug naar het interne lokale adres (192.168.10.10) en stuurt het pakket door naar PC1.
5b. Wanneer R2 het pakket ontvangt met het IPv4-bestemmingsadres van 209.165.200.227; het voert een NAT-tabelopzoeking uit. Met behulp van de afbeelding uit de tabel vertaalt R2 het adres terug naar het interne lokale adres (192.168.11.10) en stuurt het pakket door naar PC2.
- PC1 op 192.168.10.10 en PC2 op 192.168.11.10 ontvangt de pakketten en zet het gesprek voort. De router voert stap 2 tot 5 uit voor elk pakket. (Stap 6 wordt niet getoond in de figuren.)
5.2.2.4. Dynamische NAT verifiëren
De uitvoer van de opdracht show ip nat translations in het volgend voorbeeld toont de details van de twee voorgaande NAT-toewijzingen. De opdracht geeft alle statische vertalingen weer die zijn geconfigureerd en alle dynamische vertalingen die door verkeer zijn gemaakt.
R2# show ip nat translations
Pro
Inside global
Inside local
Outside local
Outside global
--- 209.165.200.226
192.168.10.10
---
---
---
209.165.200.227
192.168.11.10
---
---
R2# show ip nat translations verbose
Pro Inside global
Inside local
Outside local
Outside global
---
209.165.200.226
192.168.10.10
---
---
create 00:17:25,
use 00:01:54 timeout:86400000, left
23:58:05, Map-Id(In): 1,
flags:
none, use_count: 0, entry-id: 32, lc_entries: 0
---
209.165.200.227
192.168.11.10
---
---
create 00:17:22,
use 00:01:51 timeout:86400000, left
23:58:08, Map-Id(In): 1,
flags:
none, use_count: 0, entry-id: 34, lc_entries: 0
R2#
Door het verbose trefwoord toe te voegen, wordt aanvullende informatie over elke vertaling weergegeven, inclusief hoe lang geleden het item is gemaakt en gebruikt.
Standaard verlopen vertalingen na 24 uur, tenzij de timers opnieuw zijn geconfigureerd met de opdracht ip nat translation timeout timeout-seconds in de algemene configuratiemodus.
Als u dynamische vermeldingen wilt wissen voordat de time-out is verstreken, gebruikt u de clear ip nat translation globale configurationmodus opdracht, zoals weergegeven in het volgend voorbeeld. Het is handig om de dynamische invoer te wissen bij het testen van de NAT-configuratie. Zoals in de tabel wordt getoond, kan deze opdracht worden gebruikt met trefwoorden en variabelen om te bepalen welke items worden gewist. Specifieke vermeldingen kunnen worden gewist om te voorkomen dat actieve sessies worden onderbroken. Gebruik de opdracht clear ip nat translation * global configuration om alle vertalingen uit de tabel te wissen.
Opdracht | Beschrijving |
---|---|
clear ip nat translation * | Wist alle dynamische adresvertalingsitems uit de NAT-vertaaltabel. |
clear ip nat translation inside global-ip local-ip [outside local-ip global-ip] | Wis een eenvoudige dynamische vertaling met een interne vertaling of zowel een interne als externe vertaling. |
clear ip nat translation protocol inside global-ip global-port local-ip local-port [outside local-ip local port global-ip global-port] | Wist een uitgebreide dynamische vertalingsinvoer. |
Opmerking: Alleen de dynamische vertalingen worden uit de tabel gewist. Statische vertalingen kunnen niet uit de vertaaltabel worden gewist.
In het volgend voorbeeld geeft de opdracht show ip nat statistics informatie weer over het totale aantal actieve vertalingen, NAT-configuratieparameters, het aantal adressen in de pool en hoeveel van de adressen zijn toegewezen.
R2# clear ip nat statistics
R2# show ip nat statistics
Total active translations: 2 (0 static, 2 dynamic; 0 extended)
Peak translations: 6, occurred 00:27:07 ago
Outside interfaces:
Serial0/0/1
Inside interfaces:
Serial0/1/0
Hits: 24 Misses: 0
CEF Translated packets: 24, CEF Punted packets: 0
Expired translations: 4
Dynamic mappings:
-- Inside Source
[Id: 1] access-list 1 pool NAT-POOL1 refcount 2
pool NAT-POOL1: netmask 255.255.255.224
start 209.165.200.226 end 209.165.200.240
type generic, total addresses 15, allocated 2 (13%), misses 0
Total doors: 0
Appl doors: 0
Normal doors: 0
Queued Packets: 0
R2#
U kunt ook de opdracht show running-config gebruiken en zoeken naar NAT-, ACL-, interface- of poolopdrachten met de vereiste waarden. Bekijk deze zorgvuldig en corrigeer eventueel ontdekte fouten.
5.2.3. Port Adress Translation (PAT) configureren
5.2.3.1. PAT configureren: Adresgroep
PAT (ook wel NAT-overbelasting genoemd) bewaart adressen in de interne globale adrespool door de router één intern globaal adres te laten gebruiken voor veel interne lokale adressen. Met andere woorden, een enkel openbaar IPv4-adres kan worden gebruikt voor honderden, zelfs duizenden interne privé IPv4-adressen. Wanneer dit type vertaling is geconfigureerd, houdt de router voldoende informatie bij van protocollen op een hoger niveau, bijvoorbeeld TCP- of UDP-poortnummers, om het interne globale adres terug te vertalen naar het juiste interne lokale adres. Wanneer meerdere interne lokale adressen worden toegewezen aan één intern algemeen adres, maken de TCP- of UDP-poortnummers van elke interne host onderscheid tussen de lokale adressen.
Opmerking: het totale aantal interne adressen dat naar één extern adres kan worden vertaald, kan in theorie oplopen tot 65.536 per IP-adres. Het aantal interne adressen dat aan een enkel IP-adres kan worden toegewezen, ligt echter rond de 4.000.
Er zijn twee manieren om PAT te configureren, afhankelijk van hoe de ISP openbare IPv4-adressen toewijst. In het eerste geval wijst de ISP meer dan één openbaar IPv4-adres toe aan de organisatie, en in het andere geval wijst het een enkel openbaar IPv4-adres toe dat de organisatie nodig heeft om verbinding te maken met de ISP.
PAT configureren voor een pool van openbare IP-adressen
Als een site meer dan één openbaar IPv4-adres heeft gekregen, kunnen deze adressen deel uitmaken van een pool die door PAT wordt gebruikt. Dit is vergelijkbaar met dynamische NAT, behalve dat er niet genoeg openbare adressen zijn voor een één-op-één toewijzing van binnen- naar buitenadressen. De kleine pool van adressen wordt gedeeld door een groter aantal apparaten.
Er zijn vijf stappen bij het configureren van dynamische PAT-vertalingen. De vijf stappen zijn identiek aan het configureren van dynamische NAT, behalve stap 3.
Stap 1. Definieer de pool van adressen die zal worden gebruikt voor vertaling met behulp van de opdracht ip nat pool pool-name start-ip end-ip {netmask netmask | prefix-length prefix-length}.
Stap 2. Configureer een standaard ACL met behulp van de opdracht access-list access-list-number permit source [source-wildcard] om (vergunnings)adressen te identificeren die kunnen worden vertaald.
Stap 3. Bind de ACL aan de pool. Gebruik de ip nat inside source list access-list-number pool pool-name overload global configuration command om de ACL aan de pool te binden. Dit belangrijkste verschil tussen PAT en NAT is dat het overload-sleutelwoord bij deze opdracht wordt gebruikt.
Stap 4. Identificeer welke interfaces zich binnenin bevinden met behulp van de opdracht interface type number ip nat inside.
Stap 5. Bepaal welke interfaces zich buiten bevinden met behulp van de opdracht interface type number ip nat outside.
De voorbeeldconfiguratie in de volgende afbeelding zorgt voor overbelastingsvertaling voor de NAT-pool met de naam NAT-POOL2. NAT-POOL2 bevat de adressen 209.165.200.226 tot 209.165.200.240. Hosts in het 192.168.0.0/16-netwerk zijn onderhevig aan vertaling. De S0/0/0-interface wordt geïdentificeerd als een interne interface en de S0/1/0-interface wordt geïdentificeerd als een externe interface.
R2(config)# ip nat pool NAT-POOL2 209.165.200.226 209.165.200.240 netmask 255.255.255.224
R2(config)# access-list 1 permit 192.168.0.0 0.0.255.255
R2(config)# ip nat inside source list 1 pool NAT-POOL2 overload
R2(config)# interface Serial0/0/0
R2(config-if)# ip nat inside
R2(config-if)# exit
R2(config)# interface Serial0/1/0
R2(config-if)# ip nat outside
R2(config-if)#
5.2.3.2. PAT Configureren: Enkel adres
De volgende afbeelding toont de topologie van een PAT-implementatie voor een enkele openbare IPv4-adresvertaling. In het voorbeeld worden alle hosts van netwerk 192.168.0.0/16 (overeenkomstig ACL 1) die verkeer via router R2 naar internet sturen, vertaald naar IPv4-adres 209.165.200.225 (IPv4-adres van interface S0/1/0). De verkeersstromen worden geïdentificeerd door poortnummers in de NAT-tabel omdat het trefwoord overload is gebruikt.
Inside Global Address | Inside Local Address | Outside Local Address | Outside Global Address |
---|---|---|---|
209.165.200.225:1444 | 192.168.10.10:1444 | 209.165.201.1:80 | 209.165.201.1:80 |
209.165.200.225:1445 | 192.168.10.11:1444 | 209.165.202.129:80 | 209.165.202.129:80 |
Er zijn vier stappen bij het configureren van PAT met een enkel IPv4-adres. De configuratie is vergelijkbaar met dynamische PAT, behalve dat het niet nodig is om een pool te maken omdat er maar één IP-adres wordt gebruikt. Alle interne adressen worden vertaald naar het enkele IPv4-adres bij het verlaten van de externe interface.
Stap 1. Definieer een ACL om toe te staan dat het verkeer wordt vertaald met behulp van volgende opdracht access-list access-list-number permit source [source-wildcard].
Stap 2. Configureer met behulp van volgende opdracht ip nat inside source list access-list-number interface type number overload de bronvertaling met behulp van de interface en overload trefwoorden. Het interface-sleutelwoord identificeert welk IP-adres van de interface moet worden gebruikt bij het vertalen van binnenadressen. Het overload-sleutelwoord zorgt ervoor dat de router poortnummers volgt bij elke NAT-invoer.
Stap 3. Identificeer welke interfaces zich binnenin bevinden met behulp van de opdracht interface type number ip nat inside.
Stap 4. Identificeer welke interfaces zich buiten bevinden met behulp van de opdracht interface type number ip nat outside.
De configuratie is vergelijkbaar met dynamische NAT, behalve dat in plaats van een pool van adressen, het interface-sleutelwoord wordt gebruikt om het externe IPv4-adres te identificeren. Daarom is er geen NAT-pool gedefinieerd.
5.2.3.3. PAT analyseren
Het proces van NAT-overbelasting is hetzelfde, of er nu een pool van adressen wordt gebruikt of een enkel adres. Verdergaand met het vorige PAT-voorbeeld, waarbij een enkel openbaar IPv4-adres wordt gebruikt, wil PC1 communiceren met de webserver, Svr1. Tegelijkertijd wil een andere client, PC2, een soortgelijke sessie opzetten met de webserver Svr2. Zowel PC1 als PC2 zijn geconfigureerd met privé IPv4-adressen, waarbij R2 is ingeschakeld voor PAT.
Het proces van pc naar server wordt weergegeven in volgende afbeelding.
- Zowel PC1 als PC2 sturen pakketten naar respectievelijk Svr1 en Svr2. PC1 heeft het bron-IPv4-adres 192.168.10.10 en gebruikt TCP-bronpoort 1444. PC2 heeft het bron-IPv4-adres 192.168.10.11 en krijgt toevallig dezelfde bronpoort 1444 toegewezen.
- Het pakket van PC1 bereikt als eerste R2. Met behulp van PAT wijzigt R2 het bron-IPv4-adres in 209.165.200.225 (binnen het globale adres). Er zijn geen andere apparaten in de NAT-tabel die poort 1444 gebruiken, dus PAT behoudt hetzelfde poortnummer. Het pakket wordt vervolgens doorgestuurd naar Svr1 op 209.165.201.1.
- Het pakket van PC2 arriveert bij R2. PAT is geconfigureerd om een enkel intern IPv4-adres te gebruiken voor alle vertalingen, 209.165.200.225. Net als bij het vertaalproces voor PC1 verandert PAT het IPv4-bronadres van PC2 in het interne globale adres 209.165.200.225. PC2 heeft echter hetzelfde bronpoortnummer als een huidige PAT-invoer, de vertaling voor PC1. PAT verhoogt het bronpoortnummer totdat het een unieke waarde in de tabel is. In dit geval ontvangt de invoer van de bronpoort in de NAT-tabel en het pakket voor PC2 1445.
Inside Local Address | Inside Global Address | Outside Global Address | Outside Local Address |
---|---|---|---|
192.168.10.10:1444 | 209.165.200.225:1444 | 209.165.201.1:80 | 209.165.201.1:80 |
192.168.10.11:1444 | 209.165.200.225:1445 | 209.165.202.129:80 | 209.165.202.129:80 |
Hoewel PC1 en PC2 hetzelfde vertaalde adres gebruiken, het interne globale adres 209.165.200.225 en hetzelfde bronpoortnummer 1444, maakt het gewijzigde poortnummer voor PC2 (1445) elk item in de NAT-tabel uniek. Dit zal duidelijk worden met de pakketten die van de servers naar de clients worden verzonden.
Het server-naar-pc-proces wordt weergegeven in de volgende afbeelding.
- In een typische client-server-uitwisseling reageren Svr1 en Svr2 op de verzoeken die respectievelijk van PC1 en PC2 worden ontvangen. De servers gebruiken de bronpoort van het ontvangen pakket als de bestemmingspoort en het bronadres als het bestemmingsadres voor het retourverkeer. De servers lijken te communiceren met dezelfde host op 209.165.200.225; dit is echter niet het geval.
- Terwijl de pakketten aankomen, lokaliseert R2 de unieke invoer in zijn NAT-tabel met behulp van het bestemmingsadres en de bestemmingspoort van elk pakket. In het geval van het pakket van Svr1 heeft het bestemmings-IPv4-adres van 209.165.200.225 meerdere vermeldingen, maar slechts één met de bestemmingspoort 1444. Met behulp van de vermelding in de tabel verandert R2 de bestemmings-IPv4 adres van het pakket naar 192.168.10.10, zonder wijziging van de bestemmingspoort. Het pakket wordt vervolgens doorgestuurd naar PC1.
- Wanneer het pakket van Svr2 arriveert, voert R2 een vergelijkbare vertaling uit. Het bestemmings-IPv4-adres van 209.165.200.225 bevindt zich, opnieuw met meerdere vermeldingen. Met behulp van de bestemmingspoort van 1445 kan R2 echter de vertaalinvoer op unieke wijze identificeren. Het bestemmings-IPv4-adres is gewijzigd in 192.168.10.11. In dit geval moet de bestemmingspoort ook worden gewijzigd naar de oorspronkelijke waarde van 1444, die is opgeslagen in de NAT-tabel. Het pakket wordt vervolgens doorgestuurd naar PC2.
Inside Local Address | Inside Global Address | Outside Global Address | Outside Local Address |
---|---|---|---|
192.168.10.10:1444 | 209.165.200.225:1444 | 209.165.201.1:80 | 209.165.201.1:80 |
192.168.10.11:1444 | 209.165.200.225:1445 | 209.165.202.129:80 | 209.165.202.129:80 |
5.2.3.4. PAT verifiëren
Router R2 is geconfigureerd om PAT te leveren aan de 192.168.0.0/16-clients. Wanneer de interne hosts router R2 verlaten naar internet, worden ze vertaald naar een IPv4-adres uit de PAT-pool met een uniek bronpoortnummer.
Dezelfde opdrachten die worden gebruikt om statische en dynamische NAT te verifiëren, worden gebruikt om PAT te verifiëren, zoals weergegeven in het volgend voorbeeld. De opdracht show ip nat translations toont de vertalingen van twee verschillende hosts naar verschillende webservers. Merk op dat aan twee verschillende interne hosts hetzelfde IPv4-adres van 209.165.200.226 (binnen het globale adres) is toegewezen. De bronpoortnummers in de NAT-tabel onderscheiden de twee transacties.
R2# show ip nat translations
Pro Inside global Inside local Outside local Outside global
tcp 209.165.200.226:51839 192.168.10.10:51839 209.165.201.1:80 209.165.201.1:80
tcp 209.165.200.226:42558 192.168.11.10:42558 209.165.202.129:80 209.165.202.129:80
R2#
Zoals getoond in het volgend voorbeeld, verifieert de opdracht show ip nat statistics dat NAT-POOL2 een enkel adres heeft toegewezen voor beide vertalingen. De output bevat informatie over het aantal en type actieve vertalingen, NAT-configuratieparameters, het aantal adressen in de pool en hoeveel er zijn toegewezen.
R2# clear ip nat statistics
R2# show ip nat statistics
Total active translations: 2 (0 static, 2 dynamic; 2 extended)
Peak translations: 2, occurred 00:00:05 ago
Outside interfaces:
Serial0/0/1
Inside interfaces:
Serial0/1/0
Hits: 4 Misses: 0
CEF Translated packets: 4, CEF Punted packets: 0
Expired translations: 0
Dynamic mappings:
-- Inside Source
[Id: 3] access-list 1 pool NAT-POOL2 refcount 2
pool NAT-POOL2: netmask 255.255.255.224
start 209.165.200.226 end 209.165.200.240
type generic, total addresses 15, allocated 1 (6%), misses 0
Total doors: 0
Appl doors: 0
Normal doors: 0
Queued Packets: 0
R2#
5.2.4. Port Forwarding
5.2.4.1. Port Forwarding
Port forwarding (ook wel tunneling genoemd) is het doorsturen van verkeer dat is geadresseerd aan een specifieke netwerkpoort van het ene netwerkknooppunt naar het andere. Met deze techniek kan een externe gebruiker een poort op een privé IPv4-adres (binnen een LAN) van buitenaf bereiken via een NAT-router.
Doorgaans vereisen peer-to-peer programma’s en bewerkingen voor het delen van bestanden, zoals webserving en uitgaande FTP, dat routerpoorten worden doorgestuurd of geopend om deze applicaties te laten werken, zoals weergegeven in de volgende afbeelding. Omdat NAT interne adressen verbergt, -to-peer werkt alleen van binnenuit waar NAT uitgaande verzoeken kan koppelen aan inkomende antwoorden.
Het probleem is dat NAT verzoeken van buitenaf niet toestaat. Deze situatie kan worden opgelost met handmatige tussenkomst. Port forwarding kan worden geconfigureerd om specifieke poorten te identificeren die kunnen worden doorgestuurd naar interne hosts.
Bedenk dat internetsoftwaretoepassingen communiceren met gebruikerspoorten die voor die toepassingen open of beschikbaar moeten zijn. Verschillende applicaties gebruiken verschillende poorten. Dit maakt het voorspelbaar voor applicaties en routers om netwerkdiensten te identificeren. HTTP werkt bijvoorbeeld via de bekende poort 80. Wanneer iemand het http://cisco.com-adres invoert, geeft de browser de website van Cisco Systems, Inc. weer. Merk op dat ze het HTTP-poortnummer voor het paginaverzoek niet hoeven op te geven, omdat de toepassing poort 80 aanneemt.
Als een ander poortnummer vereist is, kan dit worden toegevoegd aan de URL, gescheiden door een dubbele punt (:). Als de webserver bijvoorbeeld luistert op poort 8080, typt de gebruiker http://www.example.com:8080.
Port forwarding stelt gebruikers op internet in staat om toegang te krijgen tot interne servers door gebruik te maken van het WAN-poortadres van de router en het overeenkomende externe poortnummer. De interne servers zijn doorgaans geconfigureerd met RFC 1918 privé IPv4-adressen. Wanneer een verzoek via internet naar het IPv4-adres van de WAN-poort wordt verzonden, stuurt de router het verzoek door naar de juiste server op het LAN. Om veiligheidsredenen staan breedbandrouters standaard niet toe dat externe netwerkverzoeken worden doorgestuurd naar een interne host.
de onderstaande afbeelding toont een eigenaar van een klein bedrijf die een verkooppuntserver (PoS) gebruikt om de verkoop en voorraden in de winkel bij te houden. De server is toegankelijk binnen de winkel, maar omdat deze een privé IPv4-adres heeft, is deze niet openbaar toegankelijk vanaf internet. Door de lokale router in te schakelen voor port forwarding, heeft de eigenaar overal op internet toegang tot de point-of-sale-server. Port forwarding op de router wordt geconfigureerd met behulp van het bestemmingspoortnummer en het privé IPv4-adres van de point-of-sale-server. Om toegang te krijgen tot de server, zou de clientsoftware het openbare IPv4-adres van de router en de bestemmingspoort van de server gebruiken.
5.2.4.2. SOHO voorbeeld
De afbeelding toont het configuratievenster Single Port Forwarding van een Linksys EA6500 SOHO-router. Port forwarding is standaard niet ingeschakeld op de router.
Port forwarding kan voor toepassingen worden ingeschakeld door het interne lokale adres op te geven waarnaar verzoeken moeten worden doorgestuurd. In de afbeelding worden HTTP-serviceverzoeken die in deze Linksys-router komen, doorgestuurd naar de webserver met het interne lokale adres 192.168.1.254. Als het externe WAN IPv4-adres van de SOHO-router 209.165.200.225 is, kan de externe gebruiker http://www.example.com invoeren en de Linksys-router stuurt het HTTP-verzoek om naar de interne webserver op IPv4-adres 192.168.1.254, met behulp van het standaard poortnummer 80.
Er kan een andere poort dan de standaardpoort 80 worden opgegeven. De externe gebruiker moet echter het specifieke poortnummer weten dat hij moet gebruiken. Om een andere poort op te geven, zou de waarde van de externe poort in het venster Single Port Forwarding worden gewijzigd.
De benadering die wordt gevolgd om port forwarding te configureren, is afhankelijk van het merk en model van de breedbandrouter in het netwerk. Er zijn echter enkele algemene stappen die u moet volgen. Als de instructies van de ISP, of de instructies die bij de router zijn geleverd, geen adequate begeleiding bieden, biedt de website http://www.portforward.com handleidingen voor verschillende breedbandrouters. U kunt de instructies volgen om poorten toe te voegen of te verwijderen zoals vereist om te voldoen aan de behoeften van alle toepassingen die u wilt toestaan of weigeren.
5.2.4.3. Port Forwarding configureren met IOS
Het implementeren van port forwarding met IOS-opdrachten is vergelijkbaar met de opdrachten die worden gebruikt om statische NAT te configureren. Port forwarding is in wezen een statische NAT-vertaling met een gespecificeerd TCP- of UDP-poortnummer.
Om port forwarding te configureren, gebruikt u het ip nat inside source {static {tcp | udp local-ip local-port global-ip global-port} [extendable] globale configuratieopdracht.
De volgende tabel beschrijft de opdrachtsyntaxis die wordt gebruikt voor het configureren van port forwarding.
Parameter | Beschrijving |
---|---|
tcp of udp | Dit geeft aan of dit een tcp- of een udp-poortnummer is. |
local-ip | Dit is het IPv4-adres dat is toegewezen aan de host op het interne netwerk, meestal uit de privéadresruimte van RFC 1918. |
local-port | Dit stelt de lokale TCP/UDP-poort in binnen een bereik van 1 tot 65535. Dit is het poortnummer waarop de server luistert. |
global-ip | Dit is het wereldwijd unieke IPv4-IP-adres van een interne host. Dit is het IP-adres dat externe clients zullen gebruiken om de interne host te bereiken. |
global-port | Dit stelt de globale TCP/UDP-poort in op een bereik van 1 tot 65535. Dit is het poortnummer dat de externe client zal gebruiken om de interne server te bereiken. |
extendable | Standaard wordt de extendable optie automatisch toegepast. Het stelt de gebruiker in staat om verschillende ambigue statische vertalingen te configureren, waar ambigu |
Het volgend voorbeeld demonstreert het configureren van port forwarding met behulp van IOS-opdrachten op router R2.
R2(config)# ip nat inside source static tcp 192.168.10.254 80 209.165.200.225 8080
R2(config)# interface Serial0/0/0
R2(config-if)# ip nat inside
R2(config-if)# exit
R2(config)# interface Serial0/1/0
R2(config-if)# ip nat outside
R2(config-if)#
In het voorbeeld is 192.168.10.254 het interne lokale IPv4-adres van de webserver die luistert op poort 80. Gebruikers hebben toegang tot deze interne webserver via het globale IPv4-adres 209.165.200.225, een wereldwijd uniek openbaar IPv4-adres. In dit geval is dit het adres van de seriële 0/1/0-interface van R2. De globale poort is geconfigureerd als 8080. Dit zal de bestemmingspoort zijn die wordt gebruikt, samen met het globale IPv4-adres van 209.165.200.225 om toegang te krijgen tot de interne webserver.
Let in de NAT-configuratie op de volgende opdrachtparameters:
- local-ip = 192.168.10.254
- local-port = 80
- global-ip = 209.165.200.225
- global-port = 8080
Wanneer een bekend poortnummer niet wordt gebruikt, moet de klant het poortnummer opgeven in de applicatie.
Net als andere typen NAT vereist port forwarding de configuratie van zowel de binnen- als de buiten NAT-interfaces.
Net als bij statische NAT, kan de opdracht show ip nat translations worden gebruikt om de port forwarding te verifiëren, zoals weergegeven in het volgend voorbeeld.
R2# show ip nat translations
Pro Inside global Inside local Outside local Outside global
tcp 209.165.200.225:8080 192.168.10.254:80 209.165.200.254:460 209.165.200.254:46088
tcp 209.165.200.225:8080 192.168.10.254:80 --- ---
R2#
In de voorgaande uitvoer ontving R2 een pakket met de bestemming van het interne globale IPv4-adres van 209.165.200.225 en een TCP-bestemming van poort 8080. R2 voert een NAT-tabelzoekopdracht uit die overeenkomt met dat IP- en poortnummer. Wanneer het de invoer vindt, verandert het het pakket in bestemmings-IP 192.168.10.254 en bestemmingspoort 80. R2 stuurt het pakket vervolgens door naar de webserver. Voor retourpakketten van de webserver naar de client wordt dit proces omgekeerd.
5.2.5. NAT en IPv6 configureren
5.2.5.1. NAT voor IPv6?
Sinds het begin van de jaren negentig is de bezorgdheid over de uitputting van de IPv4-adresruimte een prioriteit van de IETF. De combinatie van RFC 1918 privé IPv4-adressen en NAT heeft een belangrijke rol gespeeld bij het vertragen van deze uitputting. NAT heeft aanzienlijke nadelen en in januari 2011 heeft IANA de laatste van zijn IPv4-adressen toegewezen aan RIR’s.
Een van de onbedoelde voordelen van NAT voor IPv4 is dat het het privénetwerk verbergt voor het openbare internet, zoals weergegeven in de afbeelding. NAT heeft het voordeel dat het een waargenomen beveiligingsniveau biedt door computers op het openbare internet de toegang tot interne hosts te ontzeggen. Het mag echter niet worden beschouwd als een vervanging voor een goede netwerkbeveiliging, zoals die wordt geboden door een firewall.
In RFC 5902 nam de Internet Architecture Board (IAB) het volgende citaat op met betrekking tot IPv6-netwerkadresvertaling:
“Het wordt algemeen aangenomen dat een NAT-box één niveau van bescherming biedt, omdat externe hosts niet direct communicatie kunnen starten met hosts achter een NAT. Men moet NAT-boxen echter niet verwarren met firewalls. Zoals besproken in paragraaf 2.2 in RFC4864, biedt de vertaalhandeling op zich geen veiligheid. De stateful filterfunctie kan hetzelfde niveau van bescherming bieden zonder dat een vertaalfunctie nodig is.”
IPv6, met een 128-bits adres, biedt 340 undecillion-adressen. Adresruimte is dus geen probleem. IPv6 is ontwikkeld met de bedoeling NAT voor IPv4 met de vertaling tussen publieke en private IPv4-adressen overbodig te maken. IPv6 implementeert echter wel een vorm van NAT. IPv6 omvat zowel zijn eigen IPv6-privéadresruimte als NAT, die anders worden geïmplementeerd dan voor IPv4.
5.2.5.2. IPv6 unieke lokale adressen
Unieke lokale IPv6-adressen (ULA) lijken op RFC 1918-privéadressen in IPv4, maar er zijn ook aanzienlijke verschillen. De bedoeling van ULA is om IPv6-adresruimte te bieden voor communicatie binnen een lokale site; het is niet bedoeld om extra IPv6-adresruimte te bieden en het is ook niet bedoeld om een beveiligingsniveau te bieden.
Zoals in de afbeelding te zien is, heeft ULA het voorvoegsel FC00::/7, wat resulteert in een eerste hextetbereik van FC00 tot FDFF. De volgende 1 bit wordt ingesteld op 1 als het voorvoegsel lokaal is toegewezen. Ingesteld op 0 kan in de toekomst worden gedefinieerd. De volgende 40 bits is een globale ID gevolgd door een 16-bits subnet-ID. Deze eerste 64 bits vormen samen het ULA-voorvoegsel. Dit laat de resterende 64 bits over voor de interface-ID, of in IPv4-termen, het hostgedeelte van het adres.
Unieke lokale adressen zijn gedefinieerd in RFC 4193. ULA’s zijn ook bekend als lokale IPv6-adressen (niet te verwarren met IPv6 link-local-adressen) en hebben verschillende kenmerken, waaronder:
Hiermee kunnen sites worden gecombineerd of privé met elkaar worden verbonden, zonder adresconflicten te veroorzaken of interfaces die deze voorvoegsels gebruiken opnieuw te nummeren.
Onafhankelijk van een ISP en kan worden gebruikt voor communicatie binnen een site zonder internetverbinding.
Niet routeerbaar via internet, maar als het per ongeluk wordt gelekt door routering of DNS, is er geen conflict met andere adressen.
ULA is niet zo eenvoudig als RFC 1918-adressen. In tegenstelling tot privé IPv4-adressen, is het niet de bedoeling van de IETF geweest om een vorm van NAT te gebruiken om te vertalen tussen unieke lokale adressen en IPv6 globale unicast-adressen.
De implementatie en het mogelijke gebruik van unieke lokale IPv6-adressen worden nog onderzocht door de internetgemeenschap. De IETF overweegt bijvoorbeeld de optie toe te staan om het ULA-voorvoegsel lokaal te laten maken met FC00::/8, of om het automatisch te laten toewijzen door een derde partij die begint met FD00::/8.
Opmerking: de oorspronkelijke IPv6-specificatie wees adresruimte toe aan site-local-adressen, gedefinieerd in RFC 3513. Site-local-adressen zijn door de IETF in RFC 3879 afgeschaft omdat de term “site” enigszins dubbelzinnig was. Site-lokale adressen hadden het prefixbereik van FEC0::/10 en zijn mogelijk nog te vinden in sommige oudere IPv6-documentatie.
5.2.5.3. NAT voor IPv6
NAT voor IPv6 wordt in een heel andere context gebruikt dan NAT voor IPv4, zoals weergegeven in de afbeelding. De varianten van NAT voor IPv6 worden gebruikt om op transparante wijze toegang te bieden tussen IPv6-only en IPv4-only netwerken. Het wordt niet gebruikt als een vorm van privé-IPv6 naar wereldwijde IPv6-vertaling.
Idealiter zou IPv6 zoveel mogelijk native moeten worden uitgevoerd. Dit betekent dat IPv6-apparaten met elkaar communiceren via IPv6-netwerken. Om de overstap van IPv4 naar IPv6 te vergemakkelijken, heeft de IETF echter verschillende overgangstechnieken ontwikkeld voor een verscheidenheid aan IPv4-naar-IPv6-scenario’s, waaronder dual-stack, tunneling en vertaling.
Dual-stack is wanneer de apparaten protocollen uitvoeren die zijn gekoppeld aan zowel IPv4 als IPv6. Tunneling voor IPV6 is het proces van het inkapselen van een IPv6-pakket in een IPv4-pakket. Hierdoor kan het IPv6-pakket worden verzonden via een IPv4-only netwerk.
NAT voor IPv6 moet niet worden gebruikt als een langetermijnstrategie, maar als een tijdelijk mechanisme om te helpen bij de migratie van IPv4 naar IPv6. In de loop der jaren zijn er verschillende soorten NAT voor IPv6 geweest, waaronder Network Address Translation-Protocol Translation (NAT-PT). NAT-PT is door IETF afgekeurd ten gunste van zijn vervanging, NAT64. NAT64 valt buiten het bestek van dit curriculum.
5.3. NAT problemen oplossen
5.3.1. NAT problemen oplossen
5.3.1.1. De show ip nat opdrachten
Als er IPv4-verbindingsproblemen zijn in een NAT-omgeving, kan het moeilijk zijn om de oorzaak van het probleem te achterhalen.
Bekijk de topologie in de volgende afbeelding. In dit voorbeeld, in dit voorbeeld, is R2 ingeschakeld voor dynamische PAT met behulp van de pool van adressen van het bereik 209.165.200.226 tot 209.165.200.240.
Wanneer er IPv4-connectiviteitsproblemen zijn in een NAT-omgeving, is het vaak moeilijk om de oorzaak van het probleem te achterhalen. De eerste stap bij het oplossen van het probleem is om NAT als oorzaak uit te sluiten. Volg deze stappen om te controleren of NAT werkt zoals verwacht:
Stap 1. Definieer op basis van de configuratie duidelijk wat NAT moet bereiken. Dit kan een probleem met de configuratie aan het licht brengen.
Stap 2. Controleer met de opdracht show ip nat translations of de juiste vertalingen in de vertaaltabel staan.
Stap 3. Gebruik de opdrachten clear en debug om te controleren of NAT werkt zoals verwacht. Controleer of dynamische vermeldingen opnieuw worden gemaakt nadat ze zijn gewist.
Stap 4. Bekijk in detail wat er met het pakket gebeurt en controleer of routers de juiste routeringsinformatie hebben om het pakket te verplaatsen.
Het volgend voorbeeld wist de NAT-statistieken en vertalingen op de NAT-router, R2.
R2# clear ip nat statistics
R2# clear ip nat translation *
R2#
Vervolgens wordt NAT geverifieerd en telnetten de interne host (192.168.10.10) naar de externe server (209.165.201.1) om een NAT-item te genereren. Het volgend voorbeeld controleert de NAT-statistieken en de NAT-vertaaltabel om te zien of de host een NAT-vermelding heeft gegenereerd.
R2# show ip nat statistics
Total active translations: 1 (0 static, 1 dynamic; 1 extended)
Peak translations: 1, occurred 00:00:09 ago
Outside interfaces:
Serial0/0/1
Inside interfaces:
Serial0/0/0
Hits: 31 Misses: 0
CEF Translated packets: 31, CEF Punted packets: 0 Expired translations: 0
Dynamic mappings:
-- Inside Source
[Id: 5] access-list 1 pool NAT-POOL2 refcount 1 pool NAT-POOL2: netmask 255.255.255.224
start 209.165.200.226 end 209.165.200.240
type generic, total addresses 15, allocated 1 (6%), misses 0
<output omitted>
R2# show ip nat translations
Pro Inside global Inside local Outside local Outside global
tcp 209.165.200.226:19005 192.168.10.10:19005 209.165.201.1:23 209.165.201.1:23
R2#
De voorgaande uitvoer verifieert dat NAT operationeel is. Als de uitvoer onverwachte resultaten gaf, controleer dan de NAT-configuratie met behulp van de opdracht show running-config | include nat. Als de NAT-pool-, bindings- en interface-opdrachten er nauwkeurig uitzien, controleert u of de ACL waarnaar in de NAT-opdracht wordt verwezen, alle benodigde netwerken toestaat. Het volgend voorbeeld verifieert de momenteel geconfigureerde ACL’s op R2.
R2# show access-lists
Standard IP access list 1
10 permit 192.168.0.0, wildcard bits 0.0.255.255 (29 matches)
R2#
Merk op dat in dit voorbeeld alleen 192.168.0.0/16 adressen in aanmerking komen om te worden vertaald. R2 vertaalt geen pakketten van het interne netwerk die bestemd zijn voor internet met bronadressen die niet expliciet zijn toegestaan door ACL 1.
5.3.1.2. De debug ip nat-opdracht
In een eenvoudige netwerkomgeving is het handig om NAT-statistieken te bewaken met de opdracht show ip nat statistics. De opdracht show ip nat statistics geeft informatie weer over het totale aantal actieve vertalingen, de NAT-configuratieparameters, het aantal adressen in de pool en het aantal dat is toegewezen.
Echter, in een complexere NAT-omgeving, met meerdere vertalingen plaatsvindt, is het mogelijk dat deze opdracht het probleem niet duidelijk identificeert. Het kan nodig zijn om debug-opdrachten op de router uit te voeren.
Gebruik de opdracht debug ip nat om de werking van de NAT-functie te verifiëren door informatie weer te geven over elk pakket dat de router vertaalt.
De opdracht debug ip nat detailed genereert een beschrijving van elk pakket dat in aanmerking komt voor vertaling. Deze opdracht geeft ook informatie over bepaalde fouten of uitzonderingscondities, zoals het niet toewijzen van een globaal adres. Merk op dat de debug ip nat gedetailleerde opdracht meer overhead genereert dan de debug ip nat opdracht. Het kan echter de details bieden die nodig kunnen zijn om het NAT-probleem op te lossen.
Opmerking: Ongeacht welk debug-commando wordt gebruikt, schakel debugging altijd uit als u klaar bent.
Het volgende voorbeeld toont de uitvoer van de opdracht debug ip nat.
R2# debug ip nat
IP NAT debugging is on
R2#
*Feb 15 20:01:311.670: NAT*: s=192.168.10.10->209.165.200.226, d=209.165.201.1 [2817]
*Feb 15 20:01:311.682: NAT*: s=209.165.201.1, d=209.165.200.226- >192.168.10.10 [4180]
*Feb 15 20:01:311.698: NAT*: s=192.168.10.10->209.165.200.226, d=209.165.201.1 [2818]
*Feb 15 20:01:311.702: NAT*: s=192.168.10.10->209.165.200.226, d=209.165.201.1 [2819]
*Feb 15 20:01:311.710: NAT*: s=192.168.10.10->209.165.200.226, d=209.165.201.1 [2820]
*Feb 15 20:01:311.710: NAT*: s=209.165.201.1, d=209.165.200.226->192.168.10.10 [4181]
*Feb 15 20:01:311.722: NAT*: s=209.165.201.1, d=209.165.200.226- >192.168.10.10 [4182]
*Feb 15 20:01:311.726: NAT*: s=192.168.10.10->209.165.200.226, d=209.165.201.1 [2821]
*Feb 15 20:01:311.730: NAT*: s=209.165.201.1, d=209.165.200.226->192.168.10.10 [4183]
*Feb 15 20:01:311.734: NAT*: s=192.168.10.10->209.165.200.226, d=209.165.201.1 [2822]
*Feb 15 20:01:311.734: NAT*: s=209.165.201.1, d=209.165.200.226->192.168.10.10 [4184]
<Output omitted>
De uitvoer laat zien dat de interne host (192.168.10.10) verkeer naar de externe host (209.165.201.1) heeft geïnitieerd en dat het bronadres is vertaald naar adres 209.165.200.226.
Let bij het decoderen van de debug-uitvoer op wat de volgende symbolen en waarden aangeven:
- * – De asterisk () naast NAT geeft aan dat de vertaling plaatsvindt in het snel omgeschakelde pad. Het eerste pakket in een gesprek is altijd procesgeschakeld, wat langzamer is. De overige pakketten gaan via het snel omgeschakelde pad als er een cache-item bestaat.
- s= – Het s=-symbool verwijst naar het bron-IPv4-adres.
- a.b.c.d—>w.x.y.z – Deze waarde geeft aan dat het bronadres a.b.c.d wordt vertaald (->) naar w.x.y.z.
- d= – Het d=-symbool verwijst naar het IPv4-adres van de bestemming.
- [xxxx] – De waarde tussen haakjes is het IPv4-identificatienummer. Deze informatie kan nuttig zijn voor het opsporen van fouten omdat het correlatie mogelijk maakt met andere pakketsporen van protocolanalysatoren.
R2# show access-lists
Standard IP access list 1
10 permit 192.168.0.0, wildcard bits 0.0.255.255 (29 matches)
R2#
Opmerking: Controleer of de ACL waarnaar wordt verwezen in de verwijzing naar de NAT-opdracht alle benodigde netwerken toestaat. In bovenstaande voorbeeld komen alleen 192.168.0.0/16 adressen in aanmerking voor vertaling. Pakketten van het interne netwerk bestemd voor internet met bronadressen die niet expliciet zijn toegestaan door ACL 1 worden niet vertaald door R2.
5.3.1.3. Scenario voor NAT-probleemoplossing
In de volgende afbeelding kunnen hosts van de 192.168.0.0/16 LAN’s (PC1 en PC2) geen servers (Svr1 en Svr2) op het externe netwerk pingen.
Om te beginnen met het oplossen van het probleem, gebruikt u de show ip nat translations om te zien of er momenteel vertalingen in de NAT-tabel staan. Het volgende voorbeeld verifieert de NAT-vertalingen
R2# show ip nat translations
R2#
Uit de uitvoer blijkt dat er geen vertalingen in de tabel staan. De opdracht show ip nat statistics wordt gebruikt om te bepalen of eventuele vertalingen hebben plaatsgevonden. Het identificeert ook de interfaces waartussen de vertaling zou moeten plaatsvinden. In het volgend staan de NAT-tellers op 0, waarmee wordt geverifieerd dat er geen translatie heeft plaatsgevonden.
R2# show ip nat statistics
Total active translations: 0 (0 static, 0 dynamic; 0 extended)
Peak translations: 0
Outside interfaces:
Serial0/0/0
Inside interfaces:
Serial0/1/0
Hits: 0 Misses: 0
<Output omitted>
R2(config)#
Als u de uitvoer vergelijkt met de topologie die wordt getoond in de vorige afbeelding, ziet u dat de routerinterfaces onjuist zijn gedefinieerd als NAT binnen of NAT buiten. De onjuiste configuratie kan ook worden geverifieerd met de opdracht show running-config.
De huidige NAT-interfaceconfiguratie moet uit de interfaces worden verwijderd voordat de juiste configuratie wordt toegepast. In het volgende voorbeeld worden de NAT-interfaceconfiguraties verwijderd en de juiste configuratie toegepast.
R2(config)# interface serial 0/0/0
R2(config-if)# no ip nat outside
R2(config-if)# ip nat inside
R2(config-if)# exit
R2(config)# interface serial 0/0/1
R2(config-if)# no ip nat inside
R2(config-if)# ip nat outside
R2(config-if)#
Neem aan dat een testping van PC1 naar Svr1 nog steeds mislukt. Ook geeft de opdracht show ip nat translations geen vertalingen weer, en de opdracht show ip nat statistics geeft geen wijzigingen weer. Bepaal of de ACL waarnaar de NAT-opdracht verwijst, alle benodigde netwerken toestaat. Het volgend voorbeeld verifieert de NAT ACL.
R2# show access-lists
Standard IP access list 1
10 permit 192.168.0.0, wildcard bits 0.0.0.255
R2#
Het onderzoeken van de uitvoer geeft aan dat een onjuiste wildcard mask gebruikt is in de ACL die de adressen definieert die moeten worden vertaald. De wildcard mask (0.0.0.255) staat alleen het 192.168.0.0/24-subnet toe. Om het subnet 192.168.0.0/16 toe te staan, moet de wildcard maks 0.0.255.255 zijn. Het volgende voorbeeldverwijdert de ACL en configureert deze vervolgens opnieuw met de juiste wilcard mask.
R2(config)# no access-list 1
R2(config)# access-list 1 permit 192.168.0.0 0.0.255.255
R2(config)#
Nadat de configuraties zijn gecorrigeerd, wordt een nieuwe ping gegenereerd van PC1 naar Svr1, en deze keer slaagt de ping. Controleer vervolgens of de NAT-vertaling plaatsvindt. Het volgende voorbeeld geeft de uitvoer weer van de show ip nat-statistics en show ip nat translations opdrachten.
R2# show ip nat statistics
Total active translations: 1 (0 static, 1 dynamic; 1 extended)
Peak translations: 1, occurred 00:37:58 ago
Outside interfaces:
Serial0/0/1
Inside interfaces:
Serial0/1/0
Hits: 20 Misses: 0
CEF Translated packets: 20, CEF Punted packets: 0 Expired translations: 1
Dynamic mappings:
-- Inside Source
[Id: 5] access-list 1 pool NAT-POOL2 refcount 1 pool NAT-POOL2: netmask 255.255.255.224
start 209.165.200.226 end 209.165.200.240
type generic, total addresses 15, allocated 1 (6%), misses 0
<Output omitted>
R2# show ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 209.165.200.226:38 192.168.10.10:38 209.165.201.1:38 209.165.201.1:38
R2#
De uitvoer bevestigt dat NAT nu operationeel is en dat externe connectiviteit tot stand is gebracht.
5.4. Samenvatting
In dit hoofdstuk is beschreven hoe NAT wordt gebruikt om de uitputting van IPv4-adresruimte te helpen verminderen. NAT voor IPv4 stelt netwerkbeheerders in staat om privé-adresruimte van RFC 1918 te gebruiken en tegelijkertijd connectiviteit met internet te bieden, met behulp van een enkel of beperkt aantal openbare adressen.
NAT bespaart openbare adresruimte en bespaart aanzienlijke administratieve overhead bij het beheren van toevoegingen, verplaatsingen en wijzigingen. NAT en PAT kunnen worden geïmplementeerd om openbare adresruimte te besparen zonder de ISP-verbinding te beïnvloeden. NAT heeft echter nadelen in termen van negatieve effecten op apparaatprestaties, mobiliteit en end-to-end-connectiviteit en moet worden beschouwd als een implementatie op korte termijn voor adresuitputting, waarbij de langetermijnoplossing IPv6 is.
In dit hoofdstuk wordt NAT voor IPv4 besproken, inclusief de volgende onderwerpen:
- NAT-kenmerken, terminologie en algemene bewerkingen
- De verschillende soorten NAT, waaronder statische NAT, dynamische NAT en PAT
- De voor- en nadelen van NAT
- De configuratie, verificatie en analyse van statische NAT, dynamische NAT en PAT
- Hoe port forwarding kan worden gebruikt om vanaf internet toegang te krijgen tot een intern apparaat
- Waarom NAT beschikbaar is, maar niet geïntegreerd in IPv6-netwerken
- Problemen met NAT oplossen met behulp van show– en debug-opdrachten