NAT i PAT: pełne wyjaśnienie

Tłumaczenie adresów sieciowych (NAT) to proces modyfikowania informacji o adresie IP w nagłówkach pakietów IP podczas ich przesyłania przez urządzenie trasujące.

Istnieją dwa różne typy NAT:

  • NAT
    • Statyczny NAT: Najprostszy typ NAT zapewnia tłumaczenie adresów IP jeden do jednego. Często jest on również określany jako NAT jeden do jednego. W tym typie NATu tylko adresy IP, suma kontrolna nagłówka IP oraz wszelkie sumy kontrolne wyższego poziomu, które zawierają adres IP muszą zostać zmienione. Pozostała część pakietu może pozostać nietknięta (przynajmniej w przypadku podstawowej funkcjonalności TCP/UDP, niektóre protokoły wyższego poziomu mogą wymagać dalszego tłumaczenia). Podstawowe NATy mogą być używane, gdy istnieje wymóg połączenia dwóch sieci IP z niekompatybilnym adresowaniem. W przypadku statycznego NAT tłumaczenia istnieją w tablicy translacji NAT od razu po skonfigurowaniu statycznego polecenia (poleceń) NAT i pozostają w tablicy translacji do momentu usunięcia statycznego polecenia (poleceń) NAT.
    • Dynamiczny NAT: Dynamiczny NAT ma pewne podobieństwa i różnice w porównaniu ze statycznym NAT. Podobnie jak statyczny NAT, router NAT tworzy mapowanie jeden do jednego między wewnętrznym adresem lokalnym a wewnętrznym adresem globalnym i zmienia adresy IP w pakietach, gdy wychodzą one i wchodzą do sieci wewnętrznej. Jednak mapowanie wewnętrznego adresu lokalnego na wewnętrzny adres globalny odbywa się dynamicznie. Dynamiczny NAT tworzy pulę możliwych wewnętrznych adresów globalnych i definiuje kryteria dopasowania w celu określenia, które wewnętrzne lokalne adresy IP powinny zostać przetłumaczone za pomocą NAT. Dynamiczny wpis pozostaje w tabeli tak długo, jak długo odbywa się sporadyczny przepływ ruchu. W przypadku dynamicznej translacji NAT, translacje nie istnieją w tabeli NAT dopóki router nie otrzyma ruchu wymagającego translacji. Tłumaczenia dynamiczne mają limit czasu, po którym są usuwane z tabeli tłumaczeń.
  • PAT
    • Static PAT: Statyczne tłumaczenia PAT umożliwiają przetłumaczenie określonego portu UDP lub TCP w adresie globalnym na określony port w adresie lokalnym. Statyczna translacja PAT jest taka sama jak statyczna translacja NAT, z tą różnicą, że umożliwia określenie protokołu (TCP lub UDP) i portu dla adresu rzeczywistego i mapowanego. Static PAT umożliwia identyfikację tego samego zmapowanego adresu w wielu różnych zestawieniach statycznych, pod warunkiem, że port jest inny dla każdego zestawienia. Nie można używać tego samego odwzorowanego adresu dla wielu statycznych zestawień NAT. W przypadku statycznego PAT translacje istnieją w tabeli translacji NAT od razu po skonfigurowaniu polecenia (poleceń) statycznego PAT i pozostają w tabeli translacji do momentu usunięcia polecenia (poleceń) statycznego PAT.
    • Przeciążenie NAT lub PAT: Powszechne jest ukrywanie całej przestrzeni adresowej IP, zwykle składającej się z prywatnych adresów IP, za pojedynczym adresem IP (lub w niektórych przypadkach za małą grupą adresów IP) w innej (zwykle publicznej) przestrzeni adresowej. Ten typ NAT nazywany jest PAT w przeciążeniu. Dynamiczny wpis pozostaje w tablicy tak długo, jak długo trwa sporadyczny przepływ ruchu. W przypadku PAT in overload, translacje nie istnieją w tablicy NAT dopóki router nie otrzyma ruchu wymagającego translacji. Translacje mają okres timeout, po którym są usuwane z tablicy translacji.

Przykład #1: Static Source NAT

Jak przetłumaczyć adres IP 172.16.0.5 na adres IP 10.16.0.5.

Zdefiniuj ip nat inside:

Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside

Zdefiniuj ip nat outside:

Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside

Zdefiniuj statyczny wpis NAT:

ip nat inside source static 172.16.0.5 10.16.0.5

W przypadku statycznego NAT, tłumaczenie istnieje w tabeli translacji NAT od razu po skonfigurowaniu polecenia statycznego NAT i pozostaje w tabeli translacji do momentu usunięcia polecenia statycznego NAT:

Ciscozine#sh ip nat translationsPro Inside global Inside local Outside local Outside global--- 10.16.0.5 172.16.0.5 --- ---Ciscozine#

Jeśli klient wyśle pakiet ICMP lub żądanie HTTP do serwera WWW, w tabeli nat będzie:

Ciscozine#sh ip nat translationsPro Inside global Inside local Outside local Outside globalicmp 10.16.0.5:1 172.16.0.5:1 10.0.0.100:1 10.0.0.100:1tcp 10.16.0.5:56080 172.16.0.5:56080 10.0.0.100:80 10.0.0.100:80--- 10.16.0.5 172.16.0.5 --- ---Ciscozine#

Pamiętaj: Ponieważ odwzorowany adres jest taki sam dla każdego kolejnego połączenia ze statycznym NAT i istnieje trwała reguła translacji, statyczny NAT pozwala hostom w sieci docelowej inicjować ruch do przetłumaczonego hosta (jeśli istnieje lista dostępu, która na to pozwala).

Przykład #2: Dynamiczny NAT źródłowy

Jak przetłumaczyć sieć 172.16.0.0/28 na sieć 10.16.0.0/29.

Zdefiniuj ip nat inside:

Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside

Zdefiniuj ip nat outside:

Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside

Zdefiniuj pulę nat używaną w translacji NAT:

Ciscozine(config)#ip nat pool dynamic-ip 10.0.16.1 10.0.16.6 prefix-length 29

Zdefiniuj, która sieć będzie tłumaczona:

Ciscozine(config)#ip access-list standard client-listCiscozine(config-std-nacl)#permit 172.16.0.0 0.0.0.15

Zdefiniuj dynamiczny źródłowy NAT:

Ciscozine(config)#ip nat inside source list client-list pool dynamic-ip

Przy dynamicznym NAT, translacje nie istnieją w tablicy NAT dopóki router nie otrzyma ruchu wymagającego tłumaczenia.

Ciscozine#sh ip nat translationsCiscozine#

ale kiedy niektóre pakiety pasują do ACL…

Ciscozine#sh ip nat translations Pro Inside global Inside local Outside local Outside globalicmp 10.0.16.1:2 172.16.0.1:2 10.0.0.100:2 10.0.0.100:2tcp 10.0.16.2:35694 172.16.0.2:35694 10.0.0.100:80 10.0.0.100:80tcp 10.0.16.1:56185 172.16.0.1:56185 10.0.0.100:80 10.0.0.100:80--- 10.0.16.1 172.16.0.1 --- ------ 10.0.16.2 172.16.0.2 --- ---Ciscozine#

Uwaga: Jeśli nowy pakiet nadchodzi z jeszcze innego hosta wewnętrznego i wymaga wpisu NAT, ale wszystkie zgromadzone adresy IP są w użyciu, router po prostu odrzuca pakiet.

Można to sprawdzić za pomocą polecenia „debug ip nat”.

Feb 12 19:26:09.895: NAT: translation failed (E), dropping packet s=172.16.0.5 d=10.0.0.100

Użytkownik musi próbować ponownie, aż do momentu, gdy wpis NAT się skończy, w którym to momencie funkcja NAT działa dla następnego hosta, który wysyła pakiet. Zasadniczo, wewnętrzna globalna pula adresów musi być tak duża, jak maksymalna liczba hostów, które muszą korzystać z Internetu w tym samym czasie – chyba że używamy PAT.

Pamiętaj: Główna różnica między dynamicznym NAT a zakresem adresów dla statycznego NAT polega na tym, że statyczny NAT pozwala zdalnemu hostowi zainicjować połączenie z tłumaczonym hostem (jeśli istnieje lista dostępu, która na to pozwala), podczas gdy dynamiczny NAT nie. Potrzebna jest również taka sama liczba adresów mapowanych jak adresów rzeczywistych w przypadku statycznego NAT.

Przykład #3: Static PAT

Jak wyeksponować dwie różne usługi w Internecie:

  1. Serwer WWW (172.16.0.5) nasłuchuje na porcie tcp 80; serwer ten odpowiada na adres publiczny 88.88.88.88:80 z Internetu (na zewnątrz).
  2. Serwer SSH (172.16.0.6) nasłuchuje na porcie tcp 22; serwer ten odpowiada na adres publiczny 88.88.88.88.88:666 z Internetu (na zewnątrz) .

Zdefiniuj ip nat inside:

Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside

Zdefiniuj ip nat outside:

Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside

Zdefiniuj static PAT:

Serwer WWW odpowiada na porcie tcp 80 na interfejsie „zewnętrznym”.

ip nat inside source static tcp 172.17.0.5 80 88.88.88.88 80

Serwer SSH odpowiada na porcie tcp 666 na „zewnętrznym” interfejsie; w tym przypadku prawdziwy port (22 tcp) jest tłumaczony na port tcp 666, gdy żądanie pochodzi z Internetu.

ip nat inside source static tcp 172.17.0.6 22 88.88.88.88 666

Jak statyczny NAT, statyczna translacja PAT istnieje w tabeli translacji NAT od razu po skonfigurowaniu polecenia statycznego PAT, i pozostaje w tabeli translacji aż do usunięcia polecenia statycznego PAT.

Ciscozine#sh ip nat translations Pro Inside global Inside local Outside local Outside globaltcp 88.88.88.88:80 172.16.0.5:80 --- ---tcp 88.88.88.88:666 172.16.0.6:22 --- ---Ciscozine#

Jeśli klient internetowy wysyła żądanie HTTP lub połączenie SSH (na porcie tcp 666), w tabeli nat będzie:

Ciscozine#sh ip nat translations Pro Inside global Inside local Outside local Outside globaltcp 88.88.88.88:80 172.16.0.5:80 56.56.56.56:54686 56.56.56.56:54686tcp 88.88.88.88:80 172.16.0.5:80 --- ---tcp 88.88.88.88:666 172.16.0.6:22 56.56.56.56:33704 56.56.56.56:33704tcp 88.88.88.88:666 172.16.0.6:22 --- ---Ciscozine#

Przykład #4: PAT – NAT Overload

Jak współdzielić połączenie internetowe.

Zdefiniuj ip nat inside:

Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside

Zdefiniuj ip nat outside:

Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside

Zdefiniuj, która sieć będzie tłumaczona:

Ciscozine(config)#ip access-list standard client-listCiscozine(config-std-nacl)#permit 172.16.0.0 0.0.0.255

Zdefiniuj NAT Overload:

Ciscozine(config)#ip nat inside source list client-list interface fastethernet0/1 overload

Podobnie jak dynamiczny NAT, translacje nie istnieją w tablicy NAT dopóki router nie otrzyma ruchu wymagającego translacji:

Ciscozine#sh ip nat translationsCiscozine#

ale gdy niektóre pakiety pasują do ACL..

Ciscozine#show ip nat translationsPro Inside global Inside local Outside local Outside globaltcp 88.88.88.88:7921 172.16.0.2:7921 95.100.96.233:443 95.100.96.233:443tcp 88.88.88.88:8651 172.16.0.5:8651 173.194.44.18:80 173.194.44.18:80tcp 88.88.88.88:8652 172.16.0.111:8652 173.194.44.18:443 173.194.44.18:443tcp 88.88.88.88:8653 172.16.0.223:8653 173.194.70.84:443 173.194.70.84:443udp 88.88.88.88:64116 172.16.0.222:64116 8.8.8.8:53 8.8.8.8:53udp 88.88.88.88:64756 172.16.0.223:64756 8.8.4.4:53 8.8.4.4:53Ciscozine#

Czy istnieją inne typy NAT/PAT?

Odpowiedź brzmi TAK! Jednym z powszechnie stosowanych typów NAT/PAT jest ip nat outside source; polecenie to pozwala na translację adresu źródłowego pakietu, który wchodzi do interfejsu 'zewnętrznego’ i wychodzi z interfejsu 'wewnętrznego’.

W uproszczeniu, jeśli widzisz pierwszy przykład #1

Komenda:

ip nat outside source static 10.0.0.100 192.168.0.100

tłumaczy adres 10.0.0.100 na 192.168.0.100 , więc klient musi wywołać adres 192.168.0.100, aby skontaktować się z serwerem, a nie z adresem 10.0.0.100.

Innym szczególnym typem nat jest ip nat inside destination używany, gdy wiele urządzeń wewnętrznych jest identycznymi serwerami z lustrzaną zawartością, które z zewnątrz wydają się być pojedynczym serwerem równoważącym obciążenie.

Zdefiniujesz pulę adresów zawierającą adresy prawdziwych hostów zakończoną „type rotary”, dzięki czemu serwery będą dostępne w trybie round-robin. Lista dostępu zezwala teraz na adres IP wirtualnego hosta, tj. to, co świat zewnętrzny uważa za adres hosta. Tak więc wirtualny host to 123.123.123.132, a prawdziwe hosty to 172.16.0.2 do 10.

Konfiguracja częściowa

interface FastEthernet0/0ip address 172.16.0.0 255.255.255.0ip nat inside!interface FastEthernet0/1ip address 88.88.88.88 255.255.255.252ip nat outside!ip nat pool real-ip-server 172.16.0.2 172.16.0.10 prefix-length 24 type rotaryip nat inside destination list 1 pool real-ip-server!ip route 0.0.0.0 0.0.0.0 FastEthernet0/1!access-list 1 permit 123.123.123.123

Ta translacja nie jest dwukierunkowa. Będziesz musiał użyć statycznego NAT jeden do jednego, aby to osiągnąć. Funkcjonalność typu „ip nat inside source static” może być osiągnięta w powyższej konfiguracji przy użyciu pojedynczego adresu w puli NAT, ale to będzie działać tylko dla ruchu od zewnątrz do wewnątrz.

Gdzie zastosować nat inside/outside?

Typowo „ip nat inside” jest skonfigurowane na interfejsach w twoim lokalnym środowisku, które nie mogą być kierowane do Internetu (zazwyczaj prywatny zakres adresów IP) i „ip nat outside” na interfejsie, który jest podłączony do Internetu.

Kiedy router wykonuje NAT?

Inside to Outside:

  1. Jeśli IPSec to sprawdź listę dostępu wejściowego
  2. decryption – dla CET (Cisco Encryption Technology) lub IPSec
  3. check input access list
  4. check input rate limits
  5. input accounting
  6. redirect to web cache
  7. policy routing
  8. routing
  9. NAT inside to outside (local to global translation)
  10. crypto (check map and mark for encryption)
  11. check output access list
  12. inspect (Context-based Access Control (CBAC))
  13. TCP intercept
  14. encryption
  15. Queueing

Outside to Inside:

  1. If IPSec then check input access list
  2. decryption – for CET or IPSec
  3. check input access list
  4. check input rate limits
  5. input accounting
  6. redirect to web cache
  7. NAT outside to inside (global to local translation)
  8. policy routing
  9. routing
  10. crypto (check map and mark for encryption)
  11. check output access list
  12. inspect CBAC
  13. TCP intercept
  14. encryption
  15. Queueing

Kilka przydatnych komend:

  • Aby zobaczyć statystyki dotyczące NAT: show ip nat statistics
  • Aby zobaczyć pełną listę statycznych/dynamicznych wpisów NAT/PAT: show ip nat translations
  • Aby wyczyścić dynamiczny wpis NAT: clear ip na translation *
  • Aby debugować NAT: debug ip nat

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.