NAT Overloading of Port Address Translation (PAT) is een aangepaste vorm van dynamische NAT waarbij het aantal inside local adressen groter is dan het aantal inside global adressen. Meestal is er slechts één enkel globaal IP-adres dat internettoegang verschaft aan alle hosts binnenin. NAT Overloading is de enige vorm van NAT die werkelijk IP-adressen spaart en het is ook de meest populaire vorm van NAT.
Figuur 10-4 Port Address Translation (PAT)
PAT staat overloading of het in kaart brengen van meer dan één inside local adres naar hetzelfde inside global adres toe. Maar dit betekent ook dat retourpakketten allemaal hetzelfde bestemmingsadres zouden hebben wanneer ze de NAT router bereiken. Hoe zou de router weten tot welk inwendig lokaal adres elk terugkeerpakket behoort? Om met dit scenario om te gaan, zijn de NAT entries in de vertaaltabel uitgebreide entries; de entries houden niet alleen de relevante IP adressen bij, maar ook de protocoltypes en poorten. Door zowel het IP adres als het poortnummer van een pakket te vertalen, zouden theoretisch tot 65535 inside lokale adressen kunnen toegewezen worden aan één enkel inisde globaal adres (gebaseerd op het 16-bit poortnummer).
Maar hou in het achterhoofd dat één enkele NAT entry ongeveer 160 bytes routergeheugen gebruikt, dus 65535 entries zouden meer dan 10 MB geheugen innemen en ook grote hoeveelheden CPU kracht. In praktische PAT-configuraties wordt nergens in de buurt van dit aantal adressen gemapt, maar het is zeker een theoretische limiet.
Hier volgt een voorbeeldconfiguratie voor NAT overloading of PAT volgens Figuur 10-4.
R1>
R1>enable
R1#configure terminal
Voeg configuratiecommando’s in, één per regel. Eindig met CNTL/Z.
R1(config)#ip nat pool MyPool 67.210.97.1 67.210.97.1 ?
netmask Specificeer het netwerkmasker
prefix-length Specificeer de prefixlengte
R1(config)#ip nat pool MyPool 67.210.97.1 67.210.97.1 netmask 255.255.255.0
R1(config)#access-list 1 permit 192.168.1.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.0.0.0.0.255
R1(config-if)#ip address 192.210.97.0.1168.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.0
R1(config-if)#ip nat outside
R1(config-if)#end
R1#
De bovenstaande configuratie lijkt misschien erg op de configuratie voor dynamische NAT, maar er zijn belangrijke verschillen. Ten eerste is de pool van IP adressen ingekrompen tot een enkel IP adres dat is toegewezen aan de buiteninterface van router R1.
Tweede, toegangslijst 1 komt overeen met het gehele klasse C netwerk 192.168.1.0/24, wat betekent dat elk lokaal adres van dit netwerk binnen zal worden vertaald. Als je wil dat een specifieke host van dit netwerk niet vertaald wordt, moet je dit expliciet specificeren door een deny opdracht toe te voegen aan de toegangslijst. Laten we aannemen dat we vertaling willen weigeren aan één enkele host 192.168.1.2 terwijl we alle andere hosts toelaten:
R1(config)#access-list 1 permit 192.168.1.0 0.0.0.255
Ook is er een toevoeging van het sleutelwoord overload met het commando ip nat inside source list 1 pool MyPool.
Laten we beginnen met onze gebruikelijke controle door het commando show ip nat translations uit te voeren:
R1#show ip nat translations
R1#
Er zijn geen statische mappings en vandaar de lege uitvoer hierboven. Laten we wat verkeer genereren van binnen hosts naar de server en het commando show ip nat translations opnieuw uitvoeren:
Pro Binnen globaal Binnen lokaal Buiten globaal
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
Zoals u in de bovenstaande uitvoer kunt zien, worden alle inside lokale adressen vertaald naar hetzelfde inside globale adres, wat de essentie van NAT overload of PAT is. Het is u misschien opgevallen dat de router de bronpoortnummers behouden heeft terwijl inside local adressen vertaald werden naar inside global adressen. Dit is het gebruikelijke gedrag, maar wanneer de router een nieuwe vertalingsentry aanmaakt zodanig dat het bronpoortnummer reeds in gebruik is, wordt het poortnummer ook vertaald naar een ander nummer. Het komt niet vaak voor dat twee “inside” hosts hetzelfde bronpoortnummer kiezen, maar het kan toch gebeuren, vooral wanneer het aantal verbindingen van “inside” naar “outside” aanzienlijk is.
Laten we ook het commando show ip nat statistics uitvoeren:
Totaal actieve vertalingen: 3 (0 statisch, 3 dynamisch; 3 uitgebreid)
Outside interfaces:
Serial1/0
Inside interfaces:
FastEthernet0/0
Hits: 135 Misses: 15
CEF Vertaalde pakketten: 150, CEF Vertaalde pakketten: 0
Verlopen vertalingen: 12
Dynamische toewijzingen:
– Inside Source
access-list 1 pool MyPool refcount 3
pool MyPool: netmask 255.255.255.0
start 67.210.91.1 end 67.210.91.1
type generic, totaal adressen 1, toegewezen 1 (100%), misses 0
Queued Pakketten: 0
Je moet twee dingen in gedachten houden. Ten eerste is NAT overload nuttig in elke situatie waar het aantal inside hosts groter is dan het aantal public adressen dat je hebt. In vele situaties hebt u slechts één enkel publiek IP adres dat toegekend is aan de buiteninterface van uw Internet gerichte router. In dit geval zou je pool uit één enkel IP-adres bestaan zoals de configuratie hierboven laat zien. Het kan echter zijn dat u meer dan één publiek IP adres beschikbaar hebt, waarvan er één kan toegewezen zijn aan de Internet interface van uw router. In dat geval kan uw NAT pool uit meer dan één IP adres bestaan en toch NAT overload gebruiken om een groter aantal “inside hosts” die verbinding willen maken met het Internet tegemoet te komen. Kortom, u kunt een enkel overloaded publiek adres hebben of u kunt meer dan een overloaded publiek adres hebben.
NAT Overload of PAT is de meest voorkomende NAT-configuratie om de voor de hand liggende reden dat het de NAT-configuratie is die daadwerkelijk globale IP-adressen bewaart, de primaire reden voor NAT-gebruik.