A NAT Overloading vagy Port Address Translation (PAT) a dinamikus NAT egy módosított formája, ahol a belső helyi címek száma nagyobb, mint a belső globális címek száma. Többnyire csak egyetlen belső globális IP-cím van, amely az összes belső állomás számára internet-hozzáférést biztosít. A NAT túlterhelése a NAT egyetlen olyan változata, amely ténylegesen megőrzi az IP-címeket, és egyben a NAT legnépszerűbb formája is.
10-4. ábra Port Address Translation (PAT)
A NAT túlterhelése vagy egynél több belső helyi cím leképezése ugyanarra a belső globális címre lehetővé teszi. Ez azonban azt is jelenti, hogy a visszatérő csomagok mind ugyanazt a célcímet kapnák, amikor elérik a NAT-útválasztót. Honnan tudná az útválasztó, hogy az egyes visszatérő csomagok melyik belső helyi címhez tartoznak? Ennek a forgatókönyvnek a kezelésére a fordítási táblázat NAT-bejegyzései kiterjesztett bejegyzések; a bejegyzések nem csak a vonatkozó IP-címeket követik, hanem a protokolltípusokat és a portokat is. A csomag IP-címének és portszámának lefordításával elméletileg akár 65535 belső helyi cím is leképezhető egyetlen inisde globális címre (a 16 bites portszám alapján).
De ne feledjük, hogy egyetlen NAT-bejegyzés körülbelül 160 bájtot használ a router memóriájából, így 65535 bejegyzés több mint 10 MB memóriát és nagy mennyiségű CPU teljesítményt is igénybe venne. A gyakorlati PAT-konfigurációkban közel sem ennyi cím kerül leképezésre, de ez mindenképpen egy elméleti határérték.
Itt egy minta konfiguráció a NAT-túlterheléshez vagy PAT-hoz a 10-4. ábra szerint.
R1>
R1>enable
R1#configure terminal
Konfigurációs parancsok bevitele, soronként egy. A CNTL/Z-vel fejezze be.
R1(config)#ip nat pool MyPool 67.210.97.1 67.210.97.1 ?
netmask A hálózati maszk megadása
prefix-length A prefix hosszának megadása
R1(config)#ip nat pool MyPool 67.210.97.1 67.210.97.1 netmask 255.255.255.255.0
R1(config)#access-list 1 permit 192.168.1.0 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.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.0
R1(config-if)#ip nat outside
R1(config-if)#end
R1#
A fenti konfiguráció nagyon hasonlónak tűnhet a dinamikus NAT konfigurációjához, azonban vannak fontos különbségek. Először is, az IP-címek tárháza egyetlen IP-címre zsugorodott, amely az R1 útválasztó külső interfészéhez van rendelve.
Második, az 1-es hozzáférési lista a teljes C osztályú 192.168.1.0/24-es hálózatra illeszkedik, ami azt jelenti, hogy ebből a hálózatból minden belső helyi cím lefordításra kerül. Ha azt szeretnénk, hogy egy adott állomás ebből a hálózatból ne legyen lefordítva, akkor ezt kifejezetten meg kell adnunk egy deny utasítás hozzáadásával a hozzáférési listához. Tegyük fel, hogy meg akarjuk tagadni a fordítást egyetlen 192.168.1.2 állomás számára, miközben az összes többi állomás számára engedélyezzük:
R1(config)#access-list 1 permit 192.168.1.1.0 0.0.0.0.255
Az ip nat inside source list 1 pool MyPool paranccsal kiegészül a overload kulcsszó.
Elkezdjük a szokásos ellenőrzésünket a show ip nat translations parancs kiadásával:
R1#show ip nat translations
R1#
Nincsenek statikus leképezések, ezért a fenti üres kimenet. Generáljunk némi forgalmat a belső hosztokról a kiszolgáló felé, és adjuk ki újra a show ip nat translations parancsot:
Pro Inside global Inside local Outside 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
Amint a fenti kimenetből látható, minden belső helyi cím ugyanarra a belső globális címre van lefordítva, ami a NAT overload vagy PAT lényege. Észrevehette, hogy az útválasztó megőrizte a forrásportok számait, mivel a belső helyi címeket belső globális címekre fordította. Ez a szokásos viselkedés, de amikor az útválasztó új fordítási bejegyzést hoz létre úgy, hogy a forrásport száma már használatban van, a port száma is más számra kerül lefordításra. Az az eset, hogy két belső állomás ugyanazt a forrásport számot választja, nem túl gyakori, de mégis előfordulhat, különösen akkor, ha a belülről kifelé irányuló kapcsolatok száma jelentős.
Adjuk ki a show ip nat statistics parancsot is:
Total active translations: 3 (0 statikus, 3 dinamikus; 3 kiterjesztett)
Külső interfészek:
Serial1/0
Belső interfészek:
FastEthernet0/0
Hits: 135 Misses: Fordított csomagok: 15
CEF: 150, CEF Punted packets: 0
Lejárt fordítások: 12
Dinamikus leképezések:
– Inside Source
access-list 1 pool MyPool refcount 3
pool MyPool: netmask 255.255.255.255.0
start 67.210.91.1 end 67.210.91.1
type generic, total addresses 1, allocated 1 (100%), misses 0
Queued Packets: 0
Két dolgot kell szem előtt tartanod. Először is, a NAT-túlterhelés minden olyan helyzetben hasznos, amikor a belső hosztok száma nagyobb, mint a rendelkezésre álló nyilvános címek száma. Sok esetben csak egyetlen nyilvános IP-címe van, amely az internetre néző útválasztó külső interfészéhez van hozzárendelve. Ebben az esetben a pool egyetlen IP-címből állna, ahogy a fenti konfiguráció mutatja. Előfordulhat azonban, hogy egynél több nyilvános IP-cím áll rendelkezésére, amelyek közül az egyiket az útválasztó internetre néző interfészéhez rendelheti. Ebben az esetben a NAT-pool egynél több IP-címből állhat, még mindig a NAT-túlterhelést használva, hogy nagyobb számú, az internethez csatlakozni kívánó belső hosztot fogadjon. Röviden, lehet egyetlen túlterhelt nyilvános címe, vagy lehet több túlterhelt nyilvános címe.
A NAT túlterhelés vagy PAT a legelterjedtebb NAT-konfiguráció azon nyilvánvaló okból, hogy ez a NAT azon változata, amely ténylegesen megőrzi a globális IP-címeket, ami a NAT használatának elsődleges oka.