NAT en PAT: een complete uitleg

Network address translation (NAT) is het proces van het wijzigen van IP-adresinformatie in IP-pakketheaders tijdens de doorvoer over een verkeersrouteringsapparaat.

Er zijn twee verschillende typen NAT:

  • NAT
    • Static NAT: Het eenvoudigste type NAT zorgt voor een één-op-één-vertaling van IP-adressen. Het wordt vaak ook één-op-één NAT genoemd. Bij dit type NAT moeten alleen de IP adressen, de IP header checksum en alle higher level checksums die het IP adres bevatten veranderd worden. De rest van het pakket kan onaangeroerd blijven (tenminste voor basis TCP/UDP functionaliteit, sommige protocols op hoger niveau kunnen verdere vertaling nodig hebben). Basic NATs kunnen gebruikt worden wanneer er een vereiste is om twee IP-netwerken met incompatibele adressering met elkaar te verbinden. Met static NAT bestaan vertalingen in de NAT vertaaltabel zodra u static NAT commando(‘s) configureert, en ze blijven in de vertaaltabel totdat u de static NAT commando(‘s) verwijdert.
    • Dynamic NAT: Dynamic NAT heeft enkele overeenkomsten en verschillen vergeleken met static NAT. Net als static NAT creëert de NAT-router een één-op-één toewijzing tussen een inside local en inside global adres en wijzigt de IP-adressen in pakketten wanneer ze het inside netwerk verlaten en binnenkomen. Het in kaart brengen van een inwendig lokaal adres naar een inwendig globaal adres gebeurt echter dynamisch. Dynamic NAT zet een pool op van mogelijke inside globale adressen en definieert overeenstemmende criteria om te bepalen welke inside lokale IP adressen vertaald moeten worden met NAT. De dynamische entry blijft in de tabel zolang het verkeer af en toe stroomt. Met dynamische NAT bestaan vertalingen niet in de NAT tabel totdat de router verkeer ontvangt dat vertaling vereist. Dynamische vertalingen hebben een time-outperiode waarna ze uit de vertaaltabel worden gewist.
  • PAT
    • Static PAT: Statische PAT-vertalingen staan toe dat een specifieke UDP- of TCP-poort op een globaal adres wordt vertaald naar een specifieke poort op een lokaal adres. Static PAT is hetzelfde als static NAT, behalve dat u het protocol (TCP of UDP) en de poort voor de echte en de gemapte adressen kunt opgeven. Static PAT stelt u in staat om hetzelfde gemapte adres te identificeren over veel verschillende statische verklaringen, op voorwaarde dat de poort verschillend is voor elke verklaring. U kunt niet hetzelfde gemapte adres gebruiken voor meerdere statische NAT verklaringen. Met statische PAT bestaan vertalingen in de NAT-vertaaltabel zodra u statische PAT-opdracht(en) configureert, en ze blijven in de vertaaltabel totdat u de statische PAT-opdracht(en) verwijdert.
    • NAT Overload of PAT: Het is gebruikelijk om een volledige IP-adresruimte, meestal bestaande uit privé-IP-adressen, te verbergen achter een enkel IP-adres (of in sommige gevallen een kleine groep IP-adressen) in een andere (meestal openbare) adresruimte. Dit type NAT wordt PAT in overload genoemd. De dynamische entry blijft in de tabel zolang het verkeer af en toe stroomt. Met PAT in overload bestaan vertalingen niet in de NAT tabel totdat de router verkeer ontvangt dat vertaling vereist. Vertalingen hebben een time-out periode waarna ze uit de vertalingstabel worden gewist.

Example #1: Static Source NAT

Hoe vertaal je het 172.16.0.5 IP adres naar het 10.16.0.5 ip adres.

Bepaal de ip nat inside:

Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside

Bepaal de ip nat outside:

Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside

Bepaal de static NAT entry:

ip nat inside source static 172.16.0.5 10.16.0.5

Met static NAT bestaat de vertaling in de NAT vertalingstabel zodra u de static NAT opdracht configureert, en het blijft in de vertalingstabel totdat u de static NAT opdracht verwijdert:

Ciscozine#sh ip nat translationsPro Inside global Inside local Outside local Outside global--- 10.16.0.5 172.16.0.5 --- ---Ciscozine#

Als de client een ICMP-pakket of een HTTP-verzoek naar de webserver stuurt, zal de nat-tabel zijn:

Ciscozine#sh ip nat translationsPro Inside global Inside local Outside local Outside globalicmp 10.16.0.5:1 172.16.0.5:1 10.0.0.100:1 10.0.0.100:1tcp 10.16.0.5:56080 172.16.0.5:56080 10.0.0.100:80 10.0.0.100:80--- 10.16.0.5 172.16.0.5 --- ---Ciscozine#

Omdat het gemapte adres hetzelfde is voor elke opeenvolgende verbinding met static NAT, en een persistente vertaalregel bestaat, staat static NAT hosts op het bestemmingsnetwerk toe om verkeer te initiëren naar een vertaalde host (als er een toegangslijst bestaat die dit toelaat).

Voorbeeld #2: Dynamic Source NAT

Hoe vertaal je het 172.16.0.0/28 netwerk in het 10.16.0.0/29 netwerk.

Definieer de ip nat inside:

Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside

Definieer de ip nat outside:

Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside

Definieer de nat pool die gebruikt wordt in de NAT vertaling:

Ciscozine(config)#ip nat pool dynamic-ip 10.0.16.1 10.0.16.6 prefix-length 29

Definieer welk netwerk vertaald zal worden:

Ciscozine(config)#ip access-list standard client-listCiscozine(config-std-nacl)#permit 172.16.0.0 0.0.0.15

Definieer de dynamische bron NAT:

Ciscozine(config)#ip nat inside source list client-list pool dynamic-ip

Met dynamische NAT, vertalingen bestaan niet in de NAT tabel totdat de router verkeer ontvangt dat vertaling vereist.

Ciscozine#sh ip nat translationsCiscozine#

maar wanneer sommige pakketten overeenkomen met de ACL..

Ciscozine#sh ip nat translations Pro Inside global Inside local Outside local Outside globalicmp 10.0.16.1:2 172.16.0.1:2 10.0.0.100:2 10.0.0.100:2tcp 10.0.16.2:35694 172.16.0.2:35694 10.0.0.100:80 10.0.0.100:80tcp 10.0.16.1:56185 172.16.0.1:56185 10.0.0.100:80 10.0.0.100:80--- 10.0.16.1 172.16.0.1 --- ------ 10.0.16.2 172.16.0.2 --- ---Ciscozine#

Note: Als een nieuw pakket arriveert van weer een andere host binnen, en het heeft een NAT entry nodig, maar alle gepoolde IP-adressen zijn in gebruik, dan gooit de router het pakket gewoon weg.

Dit kan worden gecontroleerd door “debug ip nat” in te schakelen.

Feb 12 19:26:09.895: NAT: translation failed (E), dropping packet s=172.16.0.5 d=10.0.0.100

De gebruiker moet het opnieuw proberen totdat een NAT entry time out gaat, op welk punt de NAT functie werkt voor de volgende host die een pakket verstuurt. In wezen moet de binnenste globale pool van adressen even groot zijn als het maximum aantal gelijktijdige hosts die het Internet op hetzelfde ogenblik moeten gebruiken – tenzij we PAT gebruiken.

Houd in gedachten: Het belangrijkste verschil tussen dynamische NAT en een reeks adressen voor statische NAT is dat statische NAT een host op afstand toestaat om een verbinding te initiëren met een vertaalde host (als er een toegangslijst bestaat die dat toestaat), terwijl dynamische NAT dat niet doet. U hebt ook een gelijk aantal gemapte adressen nodig als echte adressen met statische NAT.

Voorbeeld #3: Statische PAT

Hoe stel ik twee verschillende diensten bloot op Internet:

  1. De webserver (172.16.0.5) luistert op tcp poort 80; deze server antwoordt op het publieke adres 88.88.88:80 vanaf het Internet (buiten).
  2. De SSH server (172.16.0.6) luistert op tcp poort 22; deze server antwoordt op het publieke adres 88.88.88.88:666 vanaf het Internet (buiten) .

Definieer de ip nat inside:

Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside

Definieer de ip nat outside:

Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside

Definieer de static PAT:

De webserver antwoordt op tcp poort 80 op de ‘outside’ interface.

ip nat inside source static tcp 172.17.0.5 80 88.88.88.88 80

De SSH server antwoordt op tcp poort 666 op de ‘outside’ interface ; in dit geval, wordt de echte poort (22 tcp) vertaald naar de 666 tcp poort wanneer een verzoek van Internet komt.

ip nat inside source static tcp 172.17.0.6 22 88.88.88.88 666

Zoals static NAT, bestaat static PAT vertaling in de NAT vertalingstabel zodra u de static PAT opdracht configureert, en het blijft in de vertalingstabel totdat u de static PAT opdracht verwijdert.

Ciscozine#sh ip nat translations Pro Inside global Inside local Outside local Outside globaltcp 88.88.88.88:80 172.16.0.5:80 --- ---tcp 88.88.88.88:666 172.16.0.6:22 --- ---Ciscozine#

Als een Internet client een HTTP verzoek of een SSH verbinding (op tcp poort 666) stuurt, zal de nat tabel:

Ciscozine#sh ip nat translations Pro Inside global Inside local Outside local Outside globaltcp 88.88.88.88:80 172.16.0.5:80 56.56.56.56:54686 56.56.56.56:54686tcp 88.88.88.88:80 172.16.0.5:80 --- ---tcp 88.88.88.88:666 172.16.0.6:22 56.56.56.56:33704 56.56.56.56:33704tcp 88.88.88.88:666 172.16.0.6:22 --- ---Ciscozine#

Voorbeeld #4: PAT – NAT Overload

Hoe een Internet verbinding te delen.

Definieer de ip nat inside:

Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside

Definieer de ip nat outside:

Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside

Definieer welk netwerk zal worden vertaald:

Ciscozine(config)#ip access-list standard client-listCiscozine(config-std-nacl)#permit 172.16.0.0 0.0.0.255

Definieer de NAT Overload:

Ciscozine(config)#ip nat inside source list client-list interface fastethernet0/1 overload

Zoals dynamische NAT, bestaan vertalingen niet in de NAT tabel totdat de router verkeer ontvangt dat vertaling vereist:

Ciscozine#sh ip nat translationsCiscozine#

maar wanneer sommige pakketten overeenkomen met de ACL.

Ciscozine#show ip nat translationsPro Inside global Inside local Outside local Outside globaltcp 88.88.88.88:7921 172.16.0.2:7921 95.100.96.233:443 95.100.96.233:443tcp 88.88.88.88:8651 172.16.0.5:8651 173.194.44.18:80 173.194.44.18:80tcp 88.88.88.88:8652 172.16.0.111:8652 173.194.44.18:443 173.194.44.18:443tcp 88.88.88.88:8653 172.16.0.223:8653 173.194.70.84:443 173.194.70.84:443udp 88.88.88.88:64116 172.16.0.222:64116 8.8.8.8:53 8.8.8.8:53udp 88.88.88.88:64756 172.16.0.223:64756 8.8.4.4:53 8.8.4.4:53Ciscozine#

Zijn er nog andere soorten NAT/PAT?

Het antwoord is JA! Een type NAT/PAT dat veel wordt gebruikt is ip nat outside source; met dit commando kan het bronadres van een pakket dat de ‘outside’ interface binnenkomt en de ‘inside’ interface verlaat, worden vertaald.

In eenvoudige bewoordingen, als u het eerste voorbeeld #1 ziet

Het commando:

ip nat outside source static 10.0.0.100 192.168.0.100

vertaalt het 10.0.0.100 naar het 192.168.0.100 , zodat de client het 192.168.0.100 ip-adres te contacteren de server web en niet de 10.0.0.100.

Een ander particolar type van nat is de ip nat inside bestemming gebruikt wanneer meerdere binnen apparaten zijn identieke servers met gespiegelde inhoud, die van buitenaf lijken op een enkele server load balancing.

U definieert een pool van adressen die de echte hosts ‘adressen eindigend met “type rotary” waardoor de servers beschikbaar in round-robin mode. De toegangslijst staat nu het IP adres van de virtuele host toe, d.w.z. wat de buitenwereld denkt dat het host adres is. Dus de virtuele host is 123.123.123.132, met de echte hosts 172.16.0.2 tot en met 10.

Partiële configuratie

interface FastEthernet0/0ip address 172.16.0.0 255.255.255.0ip nat inside!interface FastEthernet0/1ip address 88.88.88.88 255.255.255.252ip nat outside!ip nat pool real-ip-server 172.16.0.2 172.16.0.10 prefix-length 24 type rotaryip nat inside destination list 1 pool real-ip-server!ip route 0.0.0.0 0.0.0.0 FastEthernet0/1!access-list 1 permit 123.123.123.123

Deze vertaling is niet tweerichtings in de natuur. U zult een één op één statische NAT moeten gebruiken om dit te bereiken. Een “ip nat inside source static” soort functionaliteit kan worden bereikt met de bovenstaande configuratie door gebruik te maken van een enkel adres in de NAT pool, maar dat zou alleen werken voor verkeer van buiten naar binnen.

Waar nat inside/outside toepassen?

Typisch “ip nat inside” wordt geconfigureerd op de interfaces in uw lokale omgeving die niet kunnen worden gerouteerd naar het internet (meestal prive-bereik van IP-adressen) en “ip nat outside” op de interface die is aangesloten op het internet.

Wanneer voert de router NAT?

Binnen naar Buiten:

  1. Indien IPSec dan controleer ingangstoegangslijst
  2. decodering – voor CET (Cisco Encryption Technology) of IPSec
  3. controleer ingangstoegangslijst
  4. controleer ingangssnelheidslimieten
  5. invoer accounting
  6. redirect naar web cache
  7. policy routing
  8. routing
  9. NAT inside to outside (lokale naar globale vertaling)
  10. crypto (controleer map en markeer voor encryptie)
  11. controleer output access list
  12. inspect (Context-based Access Control (CBAC))
  13. TCP intercept
  14. encryptie
  15. Queueing

Outside to Inside:

  1. Indien IPSec dan ingangstoegangslijst controleren
  2. decodering – voor CET of IPSec
  3. controle ingangstoegangslijst
  4. controle ingangssnelheidslimieten
  5. input accounting
  6. doorverwijzen naar web cache
  7. NAT van buiten naar binnen (globale naar lokale vertaling)
  8. policy routing
  9. routing
  10. crypto (check map en markeer voor encryptie)
  11. check output access list
  12. inspect CBAC
  13. TCP intercept
  14. encryptie
  15. Queueing

Enkele nuttige comands:

  • Om enkele statistieken over NAT te zien: show ip nat statistics
  • Om een volledige lijst van de statische/dynamische NAT/PAT entries te zien: show ip nat translations
  • Om dynamische nat entry te wissen: clear ip na translation *
  • Om NAT te debuggen: debug ip nat

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.