NAT:n ylikuormitus eli porttiosoitteiden kääntäminen (PAT) on dynaamisen NAT:n muunneltu muoto, jossa sisäisten paikallisten osoitteiden määrä on suurempi kuin sisäisten globaalien osoitteiden määrä. Useimmiten on vain yksi sisäinen globaali IP-osoite, joka tarjoaa Internet-yhteyden kaikille sisäisille isännille. NAT-ylikuormitus on ainoa NAT-muoto, joka todella säästää IP-osoitteita, ja se on myös suosituin NAT-muoto.
Kuva 10-4 Porttiosoitekäännös (PAT)
PAT sallii ylikuormituksen eli useamman kuin yhden sisäisen paikallisen osoitteen yhdistämisen samaan sisäiseen maailmanlaajuiseen osoitteeseen. Tämä tarkoittaa kuitenkin myös sitä, että paluupaketeilla olisi kaikilla sama kohdeosoite, kun ne saapuvat NAT-reitittimeen. Mistä reititin tietäisi, mihin sisäiseen paikalliseen osoitteeseen kukin paluupaketti kuuluu? Tämän skenaarion ratkaisemiseksi NAT-kirjaukset käännöstaulukossa ovat laajennettuja merkintöjä; merkinnät eivät seuraa ainoastaan asianomaisia IP-osoitteita, vaan myös protokollatyyppejä ja portteja. Kääntämällä sekä paketin IP-osoite että porttinumero voitaisiin teoriassa jopa 65535 sisäistä paikallista osoitetta yhdistää yhteen sisäiseen globaaliin osoitteeseen (16-bittisen porttinumeron perusteella).
Mutta pitää muistaa, että yksi NAT-merkintä käyttää noin 160 tavua reitittimen muistia, joten 65535 merkintää veisi yli 10 megatavua muistia ja myös suuria määriä suorittimen tehoa. Käytännön PAT-konfiguraatioissa ei kartoiteta läheskään tällaista määrää osoitteita, mutta se on ehdottomasti teoreettinen raja.
Tässä on esimerkkikonfiguraatio NAT-ylikuormitusta tai PAT:ia varten kuvan 10-4 mukaisesti.
R1>
R1>enable
R1#configure terminal
Syötetään konfiguraatiokomennot, yksi riviä kohti. Lopeta komento CNTL/Z:llä.
R1(config)#ip nat pool MyPool 67.210.97.1 67.210.97.1 ?
netmask Määritä verkon maski
prefix-length Määritä etuliitteen pituus
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.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#
R1#
Ylläoleva konfiguraatio saattaa vaikuttaa hyvin samankaltaiselta kuin dynaamisen NAT:n konfiguraatio, mutta siinä on kuitenkin tärkeitä eroja. Ensinnäkin IP-osoitepooli on supistettu yhteen IP-osoitteeseen, joka on määritetty reitittimen R1 ulkorajapinnalle.
Toiseksi, pääsylista 1 vastaa koko C-luokan verkkoa 192.168.1.0/24, mikä tarkoittaa, että kaikki sisäpuoliset paikalliset osoitteet tästä verkosta käännetään. Jos haluat, että jotakin tiettyä isäntää tästä verkosta ei käännetä, sinun on määritettävä se nimenomaisesti lisäämällä pääsylistaan deny-lauseke. Oletetaan, että haluamme kieltää käännöksen yhdeltä isännältä 192.168.1.2 ja sallia kaikki muut isännät:
R1(config)#access-list 1 permit 192.168.1.1.0 0.0.0.0.255
Käskyyn ip nat inside source list 1 pool MyPool lisätään myös overload-avainsana. ip nat inside source list 1 pool MyPool.
Aloitetaan tavanomainen tarkistuksemme komennolla show ip nat translations:
R1#show ip nat translations
R1#
Ei ole olemassa mitään staattisia kartoituksia ja siksi tyhjä ulostulo yllä. Tuotetaan hieman liikennettä sisäisiltä isänniltä palvelimelle ja annetaan komento show ip nat translations uudelleen:
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
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
Kuten yllä olevasta ulostulosta näkyy, kaikki sisäpuoliset paikalliset osoitteet käännetään samaksi sisäpuoliseksi globaaliksi osoitteeksi, mikä on NAT-ylitehostuksen eli PAT:n ydin. Olet ehkä huomannut, että reititin on säilyttänyt lähdeporttien numerot, kun sisäiset paikalliset osoitteet on käännetty sisäisiksi globaaleiksi osoitteiksi. Tämä on tavallista käyttäytymistä, mutta kun reititin luo uuden käännösmerkinnän siten, että lähdeporttinumero on jo käytössä, myös porttinumero käännetään eri numeroksi. Esiintyminen, jossa kaksi sisäpuolen isäntäkonetta valitsee saman lähdeporttinumeron, ei ole kovin yleistä, mutta sitä voi silti tapahtua varsinkin silloin, kun sisäpuolelta ulospäin suuntautuvien yhteyksien määrä on merkittävä.
Käytetään myös komentoa show ip nat statistics:
Aktiivisia käännöksiä yhteensä: 3 (0 staattista, 3 dynaamista; 3 laajennettua)
Outside-liitännät:
Serial1/0
Inside-liitännät:
FastEthernet0/0
Hits: 135 Misses: Käännetyt paketit: 15
CEF Käännetyt paketit: 15
CEF Käännetyt paketit: 1: 150, CEF Punted packets: 0
Käännöksiä, jotka ovat päättyneet: 12
Dynaamiset mappings:
– 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
Queueued Packets: 0
Tulee pitää mielessä kaksi asiaa. Ensinnäkin NAT-ylikuormitus on hyödyllinen kaikissa tilanteissa, joissa sisäisten isäntien määrä on suurempi kuin sinulla on julkisia osoitteita. Monissa tilanteissa sinulla on vain yksi julkinen IP-osoite, joka on määritetty Internetiin päin olevan reitittimesi ulkorajapintaan. Tällöin poolisi koostuisi yhdestä IP-osoitteesta, kuten yllä oleva kokoonpano osoittaa. Käytettävissäsi voi kuitenkin olla useampia julkisia IP-osoitteita, joista yksi voidaan määrittää reitittimesi Internet-liitännälle. Tällaisessa tapauksessa NAT-poolisi voi koostua useammasta kuin yhdestä IP-osoitteesta, mutta käytät silti NAT-ylikuormitusta, jotta useammat sisäiset isännät, jotka haluavat muodostaa yhteyden Internetiin, mahtuisivat siihen. Lyhyesti sanottuna sinulla voi olla yksi ylikuormitettu julkinen osoite tai sinulla voi olla useampia ylikuormitettuja julkisia osoitteita.
NAT-ylikuormitus tai PAT on yleisin NAT-konfiguraatio siitä ilmeisestä syystä, että se on se NAT-muoto, joka todella säilyttää globaalit IP-osoitteet, mikä on NAT:n käytön ensisijainen syy.