NAT Overloading eller Port Address Translation (PAT) er en modificeret form af dynamisk NAT, hvor antallet af interne lokale adresser er større end antallet af interne globale adresser. For det meste er der kun en enkelt global IP-adresse, som giver internetadgang til alle interne værter. NAT-overbelastning er den eneste form for NAT, der rent faktisk bevarer IP-adresser, og det er også den mest populære form for NAT.
Figur 10-4 Portadresseoversættelse (PAT)
PAT tillader overbelastning eller tilknytning af mere end én intern lokal adresse til den samme interne globale adresse. Men det betyder også, at returpakker alle vil have den samme destinationsadresse, når de når NAT-routeren. Hvordan kan routeren vide, hvilken intern lokal adresse hver enkelt returpakke hører til? For at håndtere dette scenarie er NAT-posterne i oversættelsestabellen udvidede poster; posterne registrerer ikke kun de relevante IP-adresser, men også protokoltyper og porte. Ved at oversætte både IP-adressen og portnummeret for en pakke kan op til 65535 interne lokale adresser teoretisk set tilknyttes en enkelt inisde global adresse (baseret på 16-bit portnummeret).
Men husk på, at en enkelt NAT-post bruger ca. 160 bytes af routerens hukommelse, så 65535 poster ville tage mere end 10 MB hukommelse og også store mængder CPU-kraft. I praktiske PAT-konfigurationer er der ikke i nærheden af dette antal adresser, men det er bestemt en teoretisk grænse.
Her er en eksempelkonfiguration for NAT-overbelastning eller PAT i henhold til figur 10-4.
R1>
R1>enable
R1#configure terminal
Indtast konfigurationskommandoer, en pr. linje. Afslut med CNTL/Z.
R1(config)#ip nat pool MyPool 67.210.97.1 67.210.97.1 ?
netmask Angiv netværksmasken
prefix-længde Angiv præfikslængden
R1(config)#ip nat pool MyPool 67.210.97.1 67.210.97.1 67.210.97.1 netmaske 255.255.255.255.0
R1(config)#access-list 1 permit 192.168.1.0.0.0.0.255
R1(config)#ip nat inside source list 1 pool MyPool overload
R1(config)#interface FastEthernet0/0
R1(config-if)#ip address 192.168.1.1 255.255.255.0
R1(config-if)#ip nat inside
R1(config-if)#interface FastEthernet0/1
R1(config-if)#ip address 67.210.97.1 255.255.255.255.255.0
R1(config-if)#ip nat outside
R1(config-if)#end
R1#
Overstående konfiguration kan virke meget lig konfigurationen til dynamisk NAT, men der er dog vigtige forskelle. For det første er puljen af IP-adresser blevet skrumpet til en enkelt IP-adresse, der er tildelt den udvendige grænseflade på router R1.
For det andet matcher adgangsliste 1 hele klasse C-netværket 192.168.1.0/24, hvilket betyder, at enhver indvendig lokal adresse fra dette netværk vil blive oversat. Hvis du ønsker, at en bestemt vært fra dette netværk ikke skal oversættes, skal du udtrykkeligt angive det ved at tilføje en deny-anvisning til adgangslisten. Lad os antage, at vi ønsker at nægte oversættelse til en enkelt vært 192.168.1.2, mens vi tillader alle andre værter:
R1(config)#access-list 1 permit 192.168.1.1.0 0.0.0.0.255
Der er også en tilføjelse af nøgleordet overload med kommandoen ip nat inside source list 1 pool MyPool.
Lad os starte vores sædvanlige verifikation ved at udstede kommandoen show ip nat translations:
R1#show ip nat translations
R1#
Der er ingen statiske mappinger og derfor det tomme output ovenfor. Lad os generere noget trafik fra interne værter til serveren, og udfør kommandoen show ip nat translations igen:
Pro Inside global Inside local Outside local Outside global
icmp 67.210.91.1:18 192.168.1.2:18 173.194.67.102:18 173.194.67.102:18 173.194.67.102:18
icmp 67.210.91.1:19 192.168.1.3:19 173.194.67.102:19 173.194.67.102:19
icmp 67.210.91.1:20 192.168.1.4:20 173.194.67.102:20 173.194.67.102:20
Som du kan se i outputtet ovenfor, oversættes alle lokale indeadresser til den samme globale indeadresse, hvilket er essensen af NAT-overload eller PAT. Du har måske bemærket, at routeren har bevaret kildeportnumrene, da inside local-adresser blev oversat til inside global-adresser. Dette er den sædvanlige adfærd, men når routeren opretter en ny oversættelsespost, således at kildeportnummeret allerede er i brug, bliver portnummeret også oversat til et andet nummer. Det er ikke særlig almindeligt, at to inside-værter vælger det samme kildeportnummer, men det kan stadig ske, især når antallet af forbindelser fra inside til outside er betydeligt.
Lad os også afgive kommandoen show ip nat statistics:
Total aktive oversættelser: 3 (0 static, 3 dynamic; 3 extended)
Outside interfaces:
Serial1/0
Inside interfaces:
FastEthernet0/0
Hits: 135 Misses: 15
CEF-oversatte pakker: 150, CEF Punted packets: 150, CEF Punted packets: 0
Udgåede oversættelser: 12
Dynamiske mappinger:
– Inside Source
access-list 1 pool MyPool refcount 3
pool MyPool: netmask 255.255.255.255.0
start 67.210.91.1 slut 67.210.91.1
type generic, total addresses 1, allocated 1 (100%), misses 0
Queued Packets: 12
Dynamic mappings:
– Inside Source
– Inside Source
0
Du bør huske på to ting. For det første er NAT-overload nyttig i enhver situation, hvor antallet af interne værter er større end de offentlige adresser, du har. I mange situationer har du kun en enkelt offentlig IP-adresse, som er tildelt den udvendige grænseflade på din router, der vender mod internettet. I dette tilfælde vil din pool bestå af en enkelt IP-adresse, som konfigurationen ovenfor viser. Du kan dog have flere offentlige IP-adresser til rådighed, hvoraf den ene kan være tildelt den internetvendte grænseflade på din router. I så fald kan din NAT-pulje bestå af mere end én IP-adresse, der stadig bruger NAT-overload til at rumme et større antal interne værter, der ønsker at oprette forbindelse til internettet. Kort sagt kan du have en enkelt overbelastet offentlig adresse, eller du kan have flere overbelastede offentlige adresser.
NAT Overload eller PAT er den mest udbredte NAT-konfiguration af den indlysende grund, at det er den variant af NAT, der rent faktisk bevarer globale IP-adresser, som er den primære grund til NAT-brug.