NAT Overloading lub Port Address Translation (PAT) jest zmodyfikowaną formą dynamicznego NAT, gdzie liczba wewnętrznych adresów lokalnych jest większa niż liczba wewnętrznych adresów globalnych. W większości przypadków, istnieje tylko jeden wewnętrzny globalny adres IP zapewniający dostęp do Internetu wszystkim hostom wewnętrznym. Przeciążanie NAT jest jedyną formą NAT, która faktycznie zachowuje adresy IP i jest również najbardziej popularną formą NAT.
Rysunek 10-4 Port Address Translation (PAT)
PAT pozwala na przeciążanie lub mapowanie więcej niż jednego wewnętrznego adresu lokalnego na ten sam wewnętrzny adres globalny. Ale to również oznacza, że wszystkie pakiety zwrotne będą miały ten sam adres docelowy, gdy dotrą do routera NAT. Skąd router miałby wiedzieć, do którego wewnętrznego adresu lokalnego należy każdy pakiet zwrotny? Aby poradzić sobie z tym scenariuszem, wpisy NAT w tablicy translacji są wpisami rozszerzonymi; wpisy te śledzą nie tylko odpowiednie adresy IP, ale także typy protokołów i porty. Tłumacząc zarówno adres IP, jak i numer portu pakietu, można teoretycznie odwzorować do 65535 wewnętrznych adresów lokalnych na pojedynczy adres globalny inisde (na podstawie 16-bitowego numeru portu).
Należy jednak pamiętać, że pojedynczy wpis NAT wykorzystuje około 160 bajtów pamięci routera, więc 65535 wpisów zajęłoby ponad 10 MB pamięci, a także duże ilości mocy procesora. W praktycznych konfiguracjach PAT nigdzie nie jest mapowana taka liczba adresów, ale jest to zdecydowanie teoretyczny limit.
Tutaj znajduje się przykładowa konfiguracja przeciążania NAT lub PAT zgodnie z rysunkiem 10-4.
R1>
R1>enable
R1#configure terminal
Wprowadź polecenia konfiguracyjne, po jednym w wierszu. Zakończ znakiem CNTL/Z.
R1(config)#ip nat pool MyPool 67.210.97.1 67.210.97.1 ?
netmask Określ maskę sieci
prefix-length Określ długość prefiksu
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.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.0
R1(config-if)#ip nat outside
R1(config-if)#end
R1#
Powyższa konfiguracja może wydawać się bardzo podobna do konfiguracji dla dynamicznego NAT, jednak istnieją istotne różnice. Po pierwsze, pula adresów IP została zmniejszona do pojedynczego adresu IP przypisanego do zewnętrznego interfejsu routera R1.
Po drugie, lista dostępu 1 pasuje do całej sieci klasy C 192.168.1.0/24 co oznacza, że każdy wewnętrzny adres lokalny z tej sieci zostanie przetłumaczony. Jeśli chcemy, aby określony host z tej sieci nie był tłumaczony, musimy to wyraźnie określić poprzez dodanie instrukcji deny do listy dostępu. Załóżmy, że chcemy odmówić tłumaczenia pojedynczemu hostowi 192.168.1.2 i jednocześnie zezwolić na tłumaczenie wszystkim innym hostom:
R1(config)#access-list 1 permit 192.168.1.0 0.0.0.255
Jest też dodanie słowa kluczowego overload przy poleceniu ip nat inside source list 1 pool MyPool.
Zacznijmy naszą zwykłą weryfikację od wydania polecenia show ip nat translations:
R1#show ip nat translations
R1#
Nie ma żadnych statycznych mapowań i stąd puste wyjście powyżej. Wygenerujmy trochę ruchu z hostów wewnętrznych do serwera i ponownie wydajmy polecenie show ip nat translations:
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
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
Jak widać na powyższym wyjściu, wszystkie wewnętrzne adresy lokalne są tłumaczone na ten sam wewnętrzny adres globalny, co jest istotą przeciążenia NAT lub PAT. Być może zauważyłeś, że router zachował numery portów źródłowych, ponieważ wewnętrzne adresy lokalne zostały przetłumaczone na wewnętrzne adresy globalne. Jest to typowe zachowanie, ale gdy router tworzy nowy wpis translacji, w którym numer portu źródłowego jest już używany, numer portu również zostaje przetłumaczony na inny numer. Wystąpienie dwóch hostów wewnętrznych wybierających ten sam numer portu źródłowego nie jest zbyt częste, ale nadal może się zdarzyć, zwłaszcza gdy liczba połączeń z wewnątrz na zewnątrz jest znacząca.
Wydajmy również polecenie show ip nat statistics:
Total active translations: 3 (0 statycznych, 3 dynamiczne; 3 rozszerzone)
Interfejsy zewnętrzne:
Serial1/0
Interfejsy wewnętrzne:
FastEthernet0/0
Hits: 135 Misses: 15
CEF Translated packets: 150, CEF Punted packets: 0
Expired translations: 12
Dynamic mappings:
– 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, total addresses 1, allocated 1 (100%), misses 0
Queued Packets: 0
Powinieneś pamiętać o dwóch rzeczach. Po pierwsze, przeciążenie NAT jest przydatne w każdej sytuacji, gdy liczba hostów wewnętrznych jest większa niż liczba adresów publicznych, które posiadasz. W wielu sytuacjach masz tylko jeden publiczny adres IP, który jest przypisany do zewnętrznego interfejsu routera skierowanego do Internetu. W tym przypadku Twoja pula składałaby się z jednego adresu IP, jak pokazuje powyższa konfiguracja. Może się jednak zdarzyć, że dostępnych jest więcej niż jeden publiczny adres IP, z których jeden może być przypisany do interfejsu internetowego routera. W takim przypadku, pula NAT może składać się z więcej niż jednego adresu IP, nadal wykorzystując przeciążenie NAT, aby pomieścić większą liczbę hostów wewnętrznych chcących połączyć się z Internetem. W skrócie, możesz mieć pojedynczy przeciążony adres publiczny lub więcej niż jeden przeciążony adres publiczny.
NAT Overload lub PAT jest najbardziej rozpowszechnioną konfiguracją NAT z oczywistego powodu, ponieważ jest to odmiana NAT, która faktycznie zachowuje globalne adresy IP, co jest głównym powodem używania NAT.
.