NAT och PAT: en fullständig förklaring

Nätverksadressöversättning (NAT) är processen för att ändra IP-adressinformation i IP-pakethuvudet under transitering genom en trafikdirigeringsenhet.

Det finns två olika typer av NAT:

  • NAT
    • Statisk NAT: Den enklaste typen av NAT ger en en-till-en-översättning av IP-adresser. Den kallas ofta också för one-to-one NAT. I denna typ av NAT behöver endast IP-adresserna, kontrollsumman för IP-huvudet och alla kontrollsummor på högre nivå som innehåller IP-adressen ändras. Resten av paketet kan lämnas orört (åtminstone för grundläggande TCP/UDP-funktioner, vissa protokoll på högre nivå kan behöva ytterligare översättning). Grundläggande NAT kan användas när det finns ett krav på att sammankoppla två IP-nätverk med inkompatibel adressering. Med statisk NAT finns översättningar i NAT-översättningstabellen så snart du konfigurerar kommandot/kommandona för statisk NAT, och de förblir i översättningstabellen tills du tar bort kommandot/kommandona för statisk NAT.
    • Dynamisk NAT: Dynamisk NAT har vissa likheter och skillnader jämfört med statisk NAT. Liksom statisk NAT skapar NAT-routern en en-till-en-mappning mellan en lokal och global adress på insidan och ändrar IP-adresserna i paketen när de går ut ur och in i det inre nätverket. Mappningen av en lokal adress på insidan till en global adress på insidan sker dock dynamiskt. Dynamisk NAT skapar en pool av möjliga globala adresser på insidan och definierar matchningskriterier för att avgöra vilka lokala IP-adresser på insidan som ska översättas med NAT. Den dynamiska posten finns kvar i tabellen så länge som trafiken flyter ibland. Med dynamisk NAT finns översättningar inte i NAT-tabellen förrän routern tar emot trafik som kräver översättning. Dynamiska översättningar har en timeoutperiod efter vilken de rensas från översättningstabellen.
  • PAT
    • Statisk PAT: Statiska PAT-översättningar gör det möjligt att översätta en specifik UDP- eller TCP-port på en global adress till en specifik port på en lokal adress. Statisk PAT är samma sak som statisk NAT, förutom att du kan ange protokoll (TCP eller UDP) och port för de verkliga och mappade adresserna. Statisk PAT gör det möjligt att identifiera samma mappade adress i många olika statiska uttalanden, förutsatt att porten är olika för varje uttalande. Du kan inte använda samma mappade adress för flera statiska NAT-utlåtanden. Med statisk PAT finns översättningar i NAT-översättningstabellen så snart du konfigurerar statiska PAT-kommandon och de finns kvar i översättningstabellen tills du tar bort de statiska PAT-kommandona.
    • NAT-överbelastning eller PAT: Det är vanligt att dölja ett helt IP-adressutrymme, som vanligen består av privata IP-adresser, bakom en enskild IP-adress (eller i vissa fall en liten grupp av IP-adresser) i ett annat (vanligen offentligt) adressutrymme. Denna typ av NAT kallas PAT i överbelastning. Den dynamiska posten förblir i tabellen så länge som trafiken flödar emellanåt. Med PAT i överbelastning finns översättningar inte i NAT-tabellen förrän routern tar emot trafik som kräver översättning. Översättningar har en timeoutperiod efter vilken de rensas från översättningstabellen.

Exempel nr 1: Statisk käll-NAT

Hur översätter man IP-adressen 172.16.0.5 till IP-adressen 10.16.0.5.

Definiera ip nat inside:

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

Definiera ip nat outside:

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

Definiera den statiska NAT-posten:

ip nat inside source static 172.16.0.5 10.16.0.5

Med statisk NAT existerar översättningen i NAT-översättningstabellen så snart du konfigurerar kommandot för statisk NAT, och den förblir i översättningstabellen tills du tar bort kommandot för statisk NAT:

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

Om klienten skickar ett ICMP-paket eller en HTTP-begäran till webbservern kommer nat-tabellen att vara:

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#

Håll dig i minnet: Eftersom den mappade adressen är densamma för varje på varandra följande anslutning med statisk NAT och det finns en beständig översättningsregel, tillåter statisk NAT att värdar i destinationsnätverket initierar trafik till en översatt värddator (om det finns en åtkomstlista som tillåter det).

Exempel nr 2: Dynamisk käll-NAT

Hur man översätter nätverket 172.16.0.0.0/28 till nätverket 10.16.0.0.0/29.

Definiera ip nat inside:

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

Definiera ip nat outside:

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

Definiera den nat pool som används i NAT-översättningen:

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

Definiera vilket nätverk som ska översättas:

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

Definiera dynamisk käll-NAT:

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

Med dynamisk NAT existerar inte översättningar i NAT-tabellen förrän routern tar emot trafik som kräver översättning.

Ciscozine#sh ip nat translationsCiscozine#

men när vissa paket matchar ACL:n…

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#

Anmärkning: Om ett nytt paket anländer från ännu en intern värd och det behöver en NAT-post, men alla IP-adresser i poolen är i bruk, kastar routern helt enkelt paketet.

Detta kan kontrolleras genom att aktivera ”debug ip nat”.

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

Användaren måste försöka igen tills en NAT-post tar slut, då NAT-funktionen fungerar för nästa värd som skickar ett paket. I princip måste den inre globala poolen av adresser vara lika stor som det maximala antalet samtidiga värdar som behöver använda Internet samtidigt – såvida vi inte använder PAT.

Håll dig i minnet: Den viktigaste skillnaden mellan dynamisk NAT och ett adressintervall för statisk NAT är att statisk NAT tillåter en fjärrvärd att initiera en anslutning till en översatt värd (om det finns en åtkomstlista som tillåter det), medan dynamisk NAT inte gör det. Du behöver också lika många mappade adresser som riktiga adresser med statisk NAT.

Exempel 3: Statisk PAT

Hur man exponerar två olika tjänster på Internet:

  1. Vebbservern (172.16.0.5) lyssnar på tcp-port 80; denna server svarar på den offentliga adressen 88.88.88.88.88:80 från Internet (utanför).
  2. SSSH-servern (172.16.0.6) lyssnar på tcp-port 22; denna server svarar på den offentliga adressen 88.88.88.88.88:666 från Internet (utanför) .

Definiera ip nat inside:

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

Definiera ip nat outside:

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

Definiera static PAT:

Vebbservern svarar på tcp-port 80 på gränssnittet ”outside”.

ip nat inside source static tcp 172.17.0.5 80 88.88.88.88 80

SSH-servern svarar på tcp-port 666 på gränssnittet ”outside” ; i detta fall översätts den verkliga porten (22 tcp) till tcp-port 666 när en begäran kommer från Internet.

ip nat inside source static tcp 172.17.0.6 22 88.88.88.88 666

Likt statisk NAT finns statisk PAT-översättning i NAT-översättningstabellen så snart du konfigurerar kommandot statisk PAT, och den finns kvar i översättningstabellen tills du tar bort kommandot statisk PAT.

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#

Om en Internetklient skickar en HTTP-förfrågan eller en SSH-anslutning (på tcp-port 666) kommer nat-tabellen att vara:

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#

Exempel #4: PAT – NAT-överbelastning

Hur man delar en Internetanslutning.

Definiera ip nat inside:

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

Definiera ip nat outside:

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

Definiera vilket nätverk som ska översättas:

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

Definiera NAT Overload:

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

Likt dynamisk NAT finns inte översättningar i NAT-tabellen förrän routern tar emot trafik som kräver översättning:

Ciscozine#sh ip nat translationsCiscozine#

men när vissa paket matchar ACL:n..

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#

Finns det andra typer av NAT/PAT?

Svaret är JA! En typ av NAT/PAT som används ofta är ip nat outside source. Detta kommando gör det möjligt att översätta källadressen för ett paket som kommer in i det yttre gränssnittet och lämnar det inre gränssnittet.

Enklare uttryckt, om du ser det första exemplet #1

Kommandot:

ip nat outside source static 10.0.0.100 192.168.0.100

översätter 10.0.0.0.100 till 192.168.0.100 , så klienten måste ringa 192.168.0.100 ip-adressen för att kontakta serverwebben och inte 10.0.0.0.100.

En annan particolar typ av nat är ip nat inside destination som används när flera interna enheter är identiska servrar med speglat innehåll, som från utsidan ser ut att vara en enda server lastbalansering.

Du definierar en pool med adresser som innehåller de riktiga värddatorernas adresser som avslutas med ”type rotary” och som gör servrarna tillgängliga på ett round-robin sätt. Åtkomstlistan tillåter nu IP-adressen för den virtuella värden, dvs. det som omvärlden tror är värdadressen. Den virtuella värden är alltså 123.123.123.123.132 och de verkliga värdarna är 172.16.0.2 till 10.

Partiell konfiguration

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

Denna översättning är inte dubbelriktad till sin natur. Du måste använda en en till en statisk NAT för att åstadkomma den. En funktionalitet av typen ”ip nat inside source static” kan uppnås med ovanstående konfiguration genom att använda en enda adress i NAT-poolen, men det skulle bara fungera för trafik från utsidan till insidan.

Var tillämpas nat inside/outside?

Typiskt sett konfigureras ”ip nat inside” på de gränssnitt i din lokala miljö som inte kan dirigeras till Internet (vanligtvis ett privat intervall av IP-adresser) och ”ip nat outside” på det gränssnitt som är anslutet till Internet.

När utför routern NAT?

Inside till Outside:

  1. Om IPSec så kontrollera ingångstillgångslista
  2. dekryptering – för CET (Cisco Encryption Technology) eller IPSec
  3. kontrollera ingångstillgångslista
  4. kontrollera hastighetsgränser för ingångsflöde
  5. ingångsredovisning
  6. redirect till webbcache
  7. policy routing
  8. routing
  9. NAT inside to outside (lokal till global översättning)
  10. crypto (kontrollera karta och markera för kryptering)
  11. check output access list
  12. inspect (Context-based Access Control (CBAC))
  13. TCP intercept
  14. kryptering
  15. Queueing

Outside to Inside:

  1. Om IPSec så kontrollera ingångstillgångslista
  2. avkryptering – för CET eller IPSec
  3. kontrollera ingångstillgångslista
  4. kontrollera begränsningar av ingångshastighet
  5. ingångsredovisning
  6. omdirigering till webbcache
  7. NAT utanför till innanför (global till lokal) översättning)
  8. policy routing
  9. routing
  10. crypto (kontrollera karta och markera för kryptering)
  11. check output access list
  12. inspect CBAC
  13. TCP intercept
  14. encryption
  15. Queueing

Några användbara kommandon:

  • För att se viss statistik om NAT: show ip nat statistics
  • För att se en fullständig lista över statiska/dynamiska NAT/PAT-poster: show ip nat translations
  • För att rensa dynamiska nat-poster: clear ip na translation *
  • För att felsöka NAT: debug ip nat

Lämna ett svar

Din e-postadress kommer inte publiceras.