NAT(Network Address Translation) – Umożliwia statyczną bądź dynamiczną translację prywatnych adresów IPv4 na adresy publiczne. W przypadku protokołu IPv6, translacja adresów nie jest powszechnie stosowana.
Statyczna translacja NAT – Umożliwia zamianę jednego adresu IP na inny, statycznie określony adres IP.
Dynamiczna translacja NAT – Umożliwia zamianę puli adresów IP, na inną pulę w proporcji jeden do jednego.
Network Address Translation
PAT(Port Address Translation) – Umożliwia translację wielu adresów IP na jeden adres statyczny, bądź wiele adresów IP z możliwością przepełnienia.
Zarówno w przypadku translacji NAT jak i PAT rutery Cisco wyróżniają cztery rodzaje adresów, z których każdy uczestniczy w procesie translacji:
Wewnętrzny Lokalny (Inside Local) – Adres urządzenia inicjującego ruch sieciowy.
Publiczne adresy IP w przeciwieństwie do adresów prywatnych, są routowalne w Internecie, a tym samym pakiety na nie kierowane są globalnie dostępne. Aby hosty adresowane z prywatnej puli adresów IP, mogły uczestniczyć w globalnym ruchu sieciowym, muszą posiadać adres publiczny bądź skorzystać z translacji NAT czy PAT.
Istnieją dwie wersje protokołu NAT: Dynamiczna „Dynamic NAT” (DNAT) oraz statyczna „Static NAT” (SNAT).
SNAT– Wprowadza statyczne przypisywanie jednego adresu prywatnego do jednego adresu publicznego.
Protokół PAT zwany również przeciążonym NAT-em (Overload NAT), umożliwia przypisanie wielu adresów prywatnych do jednego adresu publicznego. Dzięki czemu wszystkie komputery z sieci lokalnej mogą współdzielić jeden adres publiczny, pozostawiając resztę wolnych adresów publicznych dla serwerów czy innych usług zewnętrznych.
Zalety protokołu NAT, PAT
Zwiększa bezpieczeństwo sieci, ukrywając topologię sieci lokalnej LAN.
Umożliwia stworzenie nadmiarowych połączeń, w komunikacji z siecią Internet.
Zmniejsza zapotrzebowanie na publiczne adresy IP.
Umożliwia zmianę adresacji publicznej, bez wpływu na adresację wewnętrzną (Np. zmiana ISP).
Wady protokołu NAT, PAT
Performance is degraded – Zmniejsza wydajność przetwarzania nachodzących pakietów.
End-to-end functionality is degraded– Niektóre aplikacje związane np. z głosem (VoIP), umieszczają w swoich pakietach informacje o adresie nadawcy. Przy próbie odesłania takiej wiadomości odbiorca może kierować swoją odpowiedź na docelowy adres IP przed translacją NAT zapisany przez nadawcę w pakiecie, zamiast właściwego adresu IP wynikającego z translacji NAT. Dodatkowy problem może stanowić również port źródłowy, zamieniony przez translację PAT na inny losowo wygenerowany.
End-to-end IP tracebility is lost – Wielokrotna zmiana adresu IP utrudnia proces troubleshooting-u sieci.
Tunneling is more complicated– NAT utrudnia proces tunelowania ruchu sieciowego, poprzez wprowadzanie zmian w zawartość nagłówka pakietu. Co wpływa na sumę kontrolną wykorzystywaną przez np. protokół IPsec-a.
Service can be disrupted– Praca serwisów wymagających wstępnej inicjacji, może być zakłócona.
Nazewnictwo związane z protokołem NAT, PAT
NVI(NAT Virtual Interface) – Określa interfejs stworzony przez instancję protokołu NAT.
AdresInsideLocal(10.1.1.1) – Określa prywatny adres IP znajdujący się wewnątrz sieci lokalnej LAN (Adres IP hosta).
AdresInsideGlobal (198.51.100.1) – Określa publiczny adres IP znajdujący się na brzegu sieci lokalnej (Jest to adres IP jakim posługuje się urządzenia w sieci zewnętrznej (Adres ten widziany jest przez inne urządzenia znajdujące się w sieci globalnej, jako adres źródłowy nadającego hosta)).
AdresOutsideGlobal (203.0.113.2) – Określa publiczny adres IP urządzenia będącego drugą stroną komunikacji, z punktu widzenia sieci globalnej.
AdresOutsideLocal(203.0.113.2) – Określa publiczny adres IP urządzenia będącego drugą stroną komunikacji, z punktu widzenia sieci lokalnej.
Błędy popełniane podczas konfiguracji protokołu NAT
Zła konfiguracja interfejsów – W przypadku pomylenia roli jaką pełnią interfejsy sieciowe (Zewnętrze bądź wewnętrzne), translacja NAT nie będzie działać prawidłowo [show ip nat statistics].
Błędna konfiguracja puli adresów – Pula adresów może zawierać błędne adresy IP [show ip nat statistics].
Adres publiczny jest nie osiągalny poprzez Internet – Pakiety odesłane przez drugą stronę komunikacji (Serwer) muszą dotrzeć do adresu publicznego firmy, jeśli nie jest on osiągalny komunikacja nie będzie możliwa.
Problem z błędną konfiguracją list ACL – Lista ACL określa jakie adresy wewnętrzne, będą tłumaczone na adresy zewnętrzne, w procesie translacji protokołu NAT. Jeśli zostaną one źle określone, translacja NAT może nie dojść do skutku, bądź też dotyczyć będzie niewłaściwych adresów IP.
Złe mapowanie list ACL oraz puli adresów – Do translacji NAT może zostać przypisana niewłaściwa lista ACL.
Brak komendy przeładowującej – W przypadku konfiguracji protokołu PAT, należy użyć pod-komendy [overload] na końcu komendy [ip nat inside source…].
Coś nie działa,
Co sprawdzić !
Jeżeli proces translacji protokołu NAT czy PAT nie działa prawidłowo, należy sprawdzić konfigurację:
Interfejsów zewnętrznych oraz wewnętrznych pod kontem ustawień [ip nat inside] oraz [ip nat outside].
Konfiguracją list ACL oraz ich przypisanie do translacji NAT bądź PAT.
Komedę przeładowującą [overload] w przypadku translacji PAT.
Inne listy ACL uniemożliwiające przepływ ruchu sieciowego.
Przechodzi do poziomu konfiguracji interfejsu znajdującego się wewnątrz sieci LAN.
(config-if)# ip nat inside
Określa role konfigurowanego interfejs sieciowego, jako interfejsu wewnętrznego względem statycznej translacji NAT.
(config-if)# interface interfejs
Przechodzi do poziomu konfiguracji interfejsu znajdującego się na zewnątrz sieci LAN.
(config-if)# ip nat outside
Określa role konfigurowanego interfejs sieciowego, jako interfejsu zewnętrznego względem statycznej translacji NAT.
Mapowanie prywatnego adresu IP na adres publiczny
(config)# ip nat inside source staticwewnętrzny-adres-IP(Inside local)zewnętrzny-adres-IP(Inside global)
Przypisuje wewnętrzny adres IP (Inside local IP address) do adresu zewnętrznego (Inside global IP address), tworząc statyczną translację NAT.
(config)# ip nat inside source static{tcp/udp}wewnętrzny-adres-IP(Inside local)port-lokalny zewnętrzny-adres-IP(Inside global) port-zewnętrzny
Przypisuje wewnętrzny adres IP (Inside local IP address) do adresu zewnętrznego (Inside global IP address), tworząc statyczną translację NAT. Pod-komendy TCP / UDP umożliwiają określenie źródłowego oraz docelowego portu warstwy czwartej modelu OSI.
# show running-config | section nat inside
Wyświetla konfigurację protokołu NAT.
Komendy Show, Clear oraz Debug
Komendy Show
# show ip nat translations
Wyświetla listę przeprowadzonych translacji NAT oraz PAT.
# show ip nat statistics
Wyświetla statystyki protokołu NAT oraz PAT.
Komendy Clear
# clear ip nat statistics
Czyści wszystkie zapisane statystyki protokołu NAT oraz PAT.
# clear ip nat translations*
Czyści wszystkie zapisane statystyki translacji protokołu NAT oraz PAT.
Przypadku usuwania konfiguracji protokołu PAT, wpierw należy użyć komendę [clear ip nat translations *].
Komendy Debug
# debug ip nat
Rozpoczyna debugowanie zdarzeń protokołu NAT oraz PAT.
# debug ip icmp
Rozpoczyna debugowanie zdarzeń protokołu ICMP, dzięki czemu możemy zobaczyć z jakiego adresu IP nadchodzą wysyłane wiadomości ICMP, a tym samym potwierdzić czy translacja NAT doszła do skutku.
Przypisuje wewnętrzny adres IP (Inside local IP address) do adresu zewnętrznego (Inside global IP address), tworząc statyczną translację NAT. *tcp / udp– Umożliwia określenie źródłowego oraz docelowego portu warstwy czwartej modelu OSI. * router-map – Tworzy wpis względem pierwszego interfejsu sieciowego WAN.
Przypisuje wewnętrzny adres IP (Inside local IP address) do adresu zewnętrznego (Inside global IP address), tworząc statyczną translację NAT. *tcp / udp – Umożliwia określenie źródłowego oraz docelowego portu warstwy czwartej modelu OSI. * router-map – Tworzy wpis względem drugiego interfejsu sieciowego WAN.
(config)# ip nat inside source staticwewnętrzny-adres-IP(Inside local)zewnętrzny-adres-IP(Inside global)route-map nazwa-1
Przypisuje wewnętrzny adres IP (Inside local IP address) do adresu zewnętrznego (Inside global IP address), tworząc statyczną translację NAT. * router-map – Tworzy wpis względem pierwszego interfejsu sieciowego WAN.
(config)# ip nat inside source staticwewnętrzny-adres-IP(Inside local)zewnętrzny-adres-IP(Inside global)route-map nazwa-2
Przypisuje wewnętrzny adres IP (Inside local IP address) do adresu zewnętrznego (Inside global IP address), tworząc statyczną translację NAT. * router-map – Tworzy wpis względem drugiego interfejsu sieciowego WAN.
# show running-config | section nat inside
Wyświetla konfigurację protokołu NAT.
Komendy Show, Clear oraz Debug
Komendy Show
# show ip nat translations
Wyświetla listę przeprowadzonych translacji NAT oraz PAT.
# show ip nat statistics
Wyświetla statystyki protokołu NAT oraz PAT.
Komendy Clear
# clear ip nat statistics
Czyści wszystkie zapisane statystyki protokołu NAT oraz PAT.
# clear ip nat translations*
Czyści wszystkie zapisane statystyki translacji protokołu NAT oraz PAT.
Przypadku usuwania konfiguracji protokołu PAT, wpierw należy użyć komendę [clear ip nat translations *].
Komendy Debug
# debug ip nat
Rozpoczyna debugowanie zdarzeń protokołu NAT oraz PAT.
# debug ip icmp
Rozpoczyna debugowanie zdarzeń protokołu ICMP, dzięki czemu możemy zobaczyć z jakiego adresu IP nadchodzą wysyłane wiadomości ICMP, a tym samym potwierdzić czy translacja NAT doszła do skutku.
Tworzy nową listę extended ACL. Poniższe wartości odnoszą się do zakresu portów protokołu UDP bądź TCP. * eq– „=” równy. * ne– „≠” nie równy. *it– „<” mniejszy od. * gt– „>” większy od. * range– „range:x to y” zakres od x do y.
(config)# interface interfejs
Przechodzi do poziomu konfiguracji określonego interfejsu sieciowego.
(config-if)# ip access-group ID {in / out}
Przypisuje listę extended ACL do konfigurowanego interfejsu sieciowego.
# show ip access-list [ACL]
Wyświetla konfigurację wskazanej listy / wszystkich skonfigurowanych list ACL.
Dodaje nowy wpis do konfigurowanej listy named ACL, z numerem sekwencyjnym większym o 10. Poniższe wartości odnoszą się do zakresu portów protokołu UDP bądź TCP: * eq– „=” równy. * ne– „≠” nie równy. *it– „<” mniejszy od. * gt– „>” większy od. * range– „range:x to y” zakres od x do y.
(config-ext-nacl)# interface interfejs
Przechodzi do poziomu konfiguracji określonego interfejsu sieciowego.
(config-if)# ip access-groupnazwa-ACL{in / out}
Przypisuje listę extended ACL do konfigurowanego interfejsu sieciowego.
# show ip access-list [ACL]
Wyświetla konfigurację wskazanej listy / wszystkich skonfigurowanych list ACL.
W systemie Cisco IOS dostępne są następujące rodzaje list ACL:
Standard ACL– Definiowana numerami od 1 do 99oraz od 1300do 1999, stanowi podstawową wersję listy ACL, wykorzystywaną w systemie Cisco IOS. W swojej strukturze wykorzystuje jedynie źródłowy adres IP, przez co powinna być stosowana blisko puli adresów docelowych. Lista ta może być wykorzystana do sprecyzowania adresów korzystających z translacji NAT, PAT czy dostępu do zdalnej konfiguracji urządzenia np. za pomocą protokołu SSH.
Extended ACL– Definiowana numerami od 100do 199oraz od 2000do 2699, stanowi rozszerzoną wersję listy ACL, wykorzystywaną w systemie Cisco IOS. W swojej strukturze wykorzystuje zarówno źródłowy jak i docelowy adres IP oraz źródłowy jak i docelowy port, bądź też zakres wielu portów warstwy czwartej. Lista ta powinna być wykorzystana bliskoźródłowej puli adresówIP, dzięki czemu nadaje się do szczegółowej kontroli nad przesyłanym ruchem sieciowym czy do określania jaki ruch sieciowy powinien być zabezpieczony połączeniem IPSec.
Established ACL– Wykorzystuje proces ustanawiania sesji TCP, pomiędzy urządzeniami sieciowymi, badając gdzie znajduje się inicjator komunikacji. Tym samym sesja nawiązana przez urządzenie ze strefy wewnętrznej (LAN) zostanie przepuszczana, natomiast komunikacja zainicjowana ze strefy zewnętrznej (WAN) zostanie zablokowana.
Reflexive ACL – Umożliwia filtrowanie pakietów IP w oparciu o informacje zawarte w pamięci sesji, warstwy czwartej. Listy refleksyjne mogą być stosowane w celu przepuszczania bądź blokowania nadchodzącego ruch sieciowego, istniejącej sesji TCP bądź UDP, zgodnie ze strefą z której pochodzi dana sesja. W przypadku sesji zainicjowanej z sieci wewnętrznej (LAN) ruch zostanie przepuszczony, natomiast sesja zainicjowana z sieci zewnętrznej (WAN) zostanie porzucona.
Time-based ACL– Zawiera wpisy filtrujące ruchu sieciowy w określonym przedziale czasu.
Infrastructure ACL– Znajduje zastosowanie na ruterze brzegowym gdzie filtruje zbędny ruch sieciowy zezwalając na wymianę np. tras routingu pomiędzy ruterem a dostawcą ISP czy zdalnym zarządzaniem a blokując podejrzany ruch sieciowy, często wykorzystywany w atakach na sieci firmowe.
Dynamic ACL:
Lock-and-Key ACL– Rodzaj dynamicznej listy dostępu, wymagającej przeprowadzenia procesu uwierzytelniania użytkownika końcowego. Po odebraniu pierwszych danych nadchodzących z nowego adresu IP, lista Lock-and-Key ACL spróbuje uwierzytelnić użytkownika końcowego wysyłającego wskazany ruch sieciowy, za pomocą połączenia Telnet bądź SSH. Po przyznaniu dostępu, źródłowy adres IP nadchodzącej transmisji zostaje dopisany do listy ACL, a nadchodzący ruch sieciowy zostaje przepuszczony.
Podstawowe listy ACL (Standard)
Rodzaje list Standard ACL:
Numeryczne – Od 1 do 99 oraz od 1300 do 1999.
Nazwane – Wykorzystują ciąg znaków (Nazwy).
Filtracja ruchu na podstawie:
Źródłowegoadresu IP.
Rozszerzone listy ACL (Extended)
Rodzaje list Extended ACL:
Numeryczne – Od 100 do 199 oraz od 2000 do 2699.
Nazwane – Wykorzystują ciąg znaków (Nazwy).
Filtracja ruchu na podstawie:
Źródłowegooraz docelowegoadresu IP.
Źródłowegooraz docelowego numeru portu.
Rodzajuruchu np. IP, UDP, TCP.
Oraz innych.
Wspólne właściwości list ACL
Domyślnie każda lista ACL jest zakończona niewidoczną komendą blokującą cały ruch sieciowy [access-list 1 deny any] (Implicit deny). Jej przeciwieństwo stanowi komenda przepuszczająca cały ruch sieciowy [access-list 1 permit any].
Proces przeszukiwania listy ACL zaczyna się od góry i następuje do momentu znalezienia pierwszego pasującego wpisu. Dlatego zaleca się wstawianie bardziej szczegółowych wpisów nad wpisami mniej szczegółowymi. Np. adres 192.168.50.1/32 powinien znaleźć się nad wpisem 192.168.50.0/24.
Dobre praktyki w tworzeniu list ACL
Lista ACL posiada licznik, wskazujący ile z przesłanych przez urządzenie pakietów, zostało dopasowanych do pojedynczego wpisu listy. Zasada ta nie dotyczy ostatniego domyślnego wpisu (Implicit deny), który domyślnie nie posada licznika, aby to zmienić należy ręcznie dopisać ostatnią komendę blokującą pozostały ruch sieciowy wraz z pod-komendą odblokowującą licznik [access-list 1 deny any log].
W przypadku usunięcia listy ACL z poziomu globalnej konfiguracji, bez jednoczesnego ucięcia wpisu ACL z poziomu interfejsu sieciowego. Nadchodzący bądź wychodzący ruch sieciowy nie bezie filtrowany.
W przypadku wprowadzania zmian w konfiguracji listy ACL, zaleca się jej tymczasowe odpięcie od interfejs sieciowego na czas przeprowadzanych zmian, w celu uniknięcia pomyłek mogących zablokować część bądź cały ruch sieciowy.
Różnice pomiędzy listami ACL
Podstawowe listy ACLmogą zawierać pojedynczy źródłowy adres IP bez maski czy komendy „host” [access-list 1 deny 192.168.1.1].
Rozszerzone listy ACL nie mogą zawierać pojedynczego adres IP bez maski czy komendy „host” [access-list 101 deny ip host 192.168.1.1 any].
Podstawowe listy ACLpowinny znajdować się jak najbliżej celu pakietu, dzięki czemu ryzyko przypadkowego zablokowania pożądanego ruchu sieciowego zostanie zmniejszone.
Rozszerzone listy ACLpowinny znajdować się jak najbliżej źródła, aby uniknąć rozprzestrzeniania nadmiarowego ruchu sieciowego który i tak zostanie odrzucony.
Protokół NPTv6 umożliwia statyczną translacją prefix-ów IPv6 na inne prefix-y IPv6, zgodnie z zasadą jeden do jednego (1:1) (Statelessaddress translation), nie umożliwiając przy tym translacji Stateful.
Protokół NPTv6 jest wykorzystywany w sieci, ponieważ:
Uniezależnia wewnętrzną adresację sieci od dostawcy ISP, tym samym zmiana globalnego prefix-u nie wymaga zmiany wewnętrznej adresacji IPv6.
Umożliwia translację adresów ULA (Unique Local Address) na GUA (Global Unicast Address).
Protokół NPTv6:
Nie wymaga mapowania przy translacji prefix-ów IPv6.
Nie umożliwia translacji adresów IPv6, a jedynie translację prefix-ów IPv6.
Generuje tą samą wartość sumy kontrolnej jaką generuje algorytm (Internet Checksum Algorithm).
Protokół NPTv6 nieumożliwia translacji adresu GUA, na inne adresy GUA.
Konfiguracja protokołu NPTv6
Konfiguracja NPTv6 względem interfejsu LAN
(config)#ipv6 unicast-routing
Aktywuje funkcję routingu dla protokołu IPv6.
(config)# interface interfejs
Przechodzi do poziomu konfiguracji określonego interfejsu sieciowego (LAN).
(config-if)# ipv6 addressprefix/prefix-length
Przypisuje adres IPv6, do konfigurowanego interfejsu sieciowego.
(config-if)# nat66 inside
Określa konfigurowany interfejs jako interfejs wewnętrzny w procesie translacji NPTv6.
Konfiguracja NPTv6 względem interfejsu WAN
(config-if)# interface interfejs
Przechodzi do poziomu konfiguracji określonego interfejsu sieciowego (WAN).
(config-if)# ipv6 addressprefix/prefix-length
Przypisuje adres IPv6, do konfigurowanego interfejsu sieciowego.
(config-if)# nat66 outside
Określa konfigurowany interfejs jako interfejs zewnętrzny w procesie translacji NPTv6.
Protokół NAT-PT umożliwia statyczną (Static), dynamiczną (Dynamic) bądź przepełnioną (Overload) translacją adresów IPv6 na adresy IPv4 jak i odwrót. Na podstawie portów warstwy czwartej.
Translacja statyczna (Static):
Umożliwia mapowanie pojedynczego adresu IPv6 do jednego adresu IPv4 jak i na odwrót.
Translacja dynamiczna(Dynamic):
Umożliwia mapowanie wielu adresów IPv6 na wiele adresów IPv4 należących do skonfigurowanej przez administratora puli adresów.
Translacjaprzepełniona(Overload):
Umożliwia mapowanie wielu adresów IPv6 na jeden adres IPv4 z przepełnieniem.
Ograniczenia protokołu NAT-PT
Nie wspiera funkcji Cisco Express Forwarding.
Wspiera jedynie protokół: DNS, FTP, ICMP oraz
ALGs.
Nie zapewnia bezpieczeństwa (end-to-end security).
Protokół NAT64 umożliwia translację adresów IPv4 na adresy IPv6, jak i na odwrót.
Protokół NAT64 stanowi ulepszoną wersję protokołu NAT-PT.
Komponenty protokołu NAT64
NAT64 prefix– Prefix-y IPv6 wykorzystywane w protokole NAT64: /32, /40, /48, /56, /64, /96.
DNS64 server– Serwer DNS odwzorowujący nazwy domenowe AAAA na adresy IPv6. Oprócz rekordów AAAA serwery DNS64 obsługują również rekordy A, dzięki czemu mogą również odwzorować adresy IPv4.
NAT64 router – Ruter na którym zachodzi proces translacji adresów IPv6 na adresy IPv4, jak i na odwrót.
DNS (Domain Name System)
A Record – Odwzorowuje nazwę domenową na adres IPv4.
AAAA Record – Odwzorowuje nazwę domenową na adres IPv6.
Adres serwera DNS względem protokołu IPv6 można skonfigurować za pomocą komendy [ip name-server adresy-IPv6].
Statyczne odwzorowanie adresów IPv6 na nazwę domenową w systemie Cisco IOS, można skonfigurować za pomocą komendy [ipv6 host nazwa-domeny[port]adresy-IPv6].
Proces działania protokołu NAT64 (IPv6 host to IPv4 server)
Skrócony proces protokołu NAT64
Proces translacji IPv6 -> IPv4:
Nadchodzący pakiet IPv6 zostaje przekierowany do wirtualnego interfejsu NVI (NAT Vitrual Interface).
Protokół NAT64 przeprowadza translację docelowego adresu IPv6, wydobywając z niego docelowy adres IPv4.
Protokół NAT64 dodaje do tablicy (Bind Databese) wpis o przeprowadzonej translacji.
Proces translacji IPv4 -> IPv6:
Nadchodzący pakiet IPv4 zostaje przekierowany do wirtualnego interfejsu NVI (NAT Vitrual Interface).
Docelowy adres IPv4 zostaje statycznie bądź dynamicznie mapowany na adres IPv6.
Protokół NAT64 dodaje do tablicy (Bind Databese) wpis o przeprowadzonej translacji.
Pełny proces protokołu NAT64
Szczegółowy proces działania protokołu NAT64 (IPv6 host to IPv4 server)
Hostwysyła zapytanie Query(AAAA www.cisco.com) do serweraDNS64.
Serwer DNS64 otrzymuje zapytanie Queryod hosta. Jako że nie zna odwzorowania podanej nazwy domenowej na adres IPv6, wysyła zapytanie Querydo zaufanego serweraDNS AAAA.
SerwerDNS AAAA otrzymuje zapytanie Queryod Serwer DNS64. Jako że nie zna odwzorowania podanej nazwy domenowej na adres IPv6, wysyła odpowiedźResponse (Name Error: www.cisco.com), do serweraDNS64.
Serwer DNS64otrzymuje odpowiedźResponseod serweraDNS AAAA. Następnie wysyła zapytania Query(A www.cisco.com) do serweraDNS A.
SerwerDNS A otrzymuje zapytanie Queryod serwera DNS64. Jako że posiada odwzorowanie podanej nazwy domenowej na adres IPv4, wysyła odpowiedźResponse(www.cisco.com(A) = 10.10.10.10), do serweraDNS64.
Serwer DNS64otrzymuje odpowiedźResponseod serweraDNS A. Jako że podany adres IP nie jest adresem protokołu IPv6, serwer DNS64 przekształca otrzymany adres IPv4 w specjalny adres IPv6 wykorzystywany przez protokół NAT64. Adres ten składa się z przekształconego adresu IPv4 (10.10.10.10 -> 0A0A:0A0A) oraz adresu IPv6 (2001:DB8:CAFE:AAAA::/96) co razem daje nowy, docelowy adres IPv6 w następującej postaci (2001:DB8:CAFE:AAAA::0A0A:0A0A/96).
Hostwysyła pakiet na docelowy adres IPv6 przekazany w odpowiedzi Responseod serwera DNS64.
Ruter NAT64otrzymuje pakiet IPv6 od hosta, na interfejsie (NAT64 enable). Rozpoczynając tym samym proces Statefull NAT Translation (Prefix 2001:DB8:CAFE:AAAA::/96). Jako że pierwsze 96 bitów adresów IPv6 się nie zgadza, ruter NAT:
Przekształca nagłówek pakietu IPv6 na nagłówek IPv4.
Przekształca adres IPv6 na adres IPv4, usuwając z docelowego adresu IPv6 prefix 2001:DB8:CAFE:AAAA::/96) jak i zmieniając ostatnie bity adresu IPv6 z trybu szesnastkowego na dziesiętny (0A0A:0A0A -> 10.10.10.10).
W zależności od konfiguracji protokołu NAT64, ruter przekształca źródłowy adres IPv6 na adres IPv4. Na zasadzie jeden do jednego (1:1) bądź poprzez przepełnienie (Overloading). Metoda ta jest podobna do protokołu PAT.
Następnie następuje proces translacji adresów IP, a wyniki są zapisywane w tablicy NAT Translations.
Po translacji NAT64 pakiet kierowany jest na interfejs wyjściowy rutera NAT64.
Docelowy serwer IPv4 odpowiada na otrzymany pakiet IPv4.
Ruter NAT64otrzymuje pakiet IPv4 od serwera docelowego na interfejsie (NAT64 enable), sprawdzając czy w tablicy NAT Translations istnieje wpis odpowiadający informacją zawartym w otrzymanym pakiecie.
Jeżeli ruter NAT64 nie posiada pasującego wpisu w tablicy NAT Translations, pakiet zostaje porzucony.
Jeżeli ruter NAT64posiada pasujący wpis w tablicy NAT Translations, następuje translacja z adresu IPv4 na IPv6.
Po translacji NAT64 pakiet kierowany jest na interfejs wyjściowyrutera NAT64.
Proces działania protokołu NAT64 (IPv4 host to IPv6 server)
Szczegółowy proces działania protokołu NAT64 (IPv4 host to IPv6 server)
Na ruterze NAT64zostaje skonfigurowany protokół NAT64, ze statycznym mapowaniem adresu IPv6 na adres IPv4, za pomocą komendy [nat64 v6v4 static 2001:db8:feed:1::e 172.16.1.10], wydanej w trybie konfiguracji globalnej.
Serwer DNS otrzymuje zapytanie Queryod hosta. Jako że posiada odwzorowanie podanej nazwy domenowej na adres IPv4, wysyła odpowiedźResponse(www.cisco.com(A) = 172.16.1.10), do hosta.
Hostwysyła pakiet na docelowy adres IPv4 przekazany w odpowiedzi Responseod serwera DNS.
Ruter NAT64 otrzymuje pakiet IPv4 od hosta, na interfejsie (NAT64 enable). Rozpoczynając tym samym proces translacji:
Ruter NAT64 przekształca nagłówek pakietu IPv4 na nagłówek IPv6, zmieniając docelowy adres IPv4 na adres IPv6.
Ruter NAT64 przekształca źródłowy adres IPv4, na nowo stworzony adres IPv6 (192.0.2.10 -> C000:020A), co razem daje nowy docelowy adres IPv6, w następującej postaci (2001:DB8:CAFE:AAAA:: C000:020A).
Po translacji NAT64 pakiet kierowany jest na interfejs wyjściowy rutera NAT64.
Docelowy serwer IPv6 odpowiada na otrzymany pakiet IPv6.
Ruter NAT64otrzymuje pakiet IPv6 od serwera docelowegona interfejsie (NAT64 enable), rozpoczynając tym samym proces translacji NAT. Ruter NAT64:
Przekształca nagłówek pakietu IPv6 na nagłówek IPv4, zmieniając źródłowy adres IPv6 na adres IPv4.
Przekształca docelowy adres IPv6, na adres IPv4. Na podstawie oryginalnego docelowego adresu IPv6.
Po translacji NAT64 pakiet kierowany jest na interfejs wyjściowyrutera NAT64.
Porównanie Stateless NAT64 do Stateful NAT64
Stateless
NAT64
Stateful
NAT64
1:1
translation
1:N translation
No conservation of IPv4 address
Conserves IPv4 address
Assures end-to-end address transparency and scalability
Uses address Overloading,
hence lacks in end-to-end address transparency
No state or bindings created on the translations
State or bindings are
created every unique translation
Requires
IPv4-transable IPv6 addresses assignment
No requirement on the
nature of IPv6 address assignment
Requires
either manual or DHCPv6 based address assignment for IPv6 host
Free to Choose any mode of IPv6 address assignment (Manual, DHCPv6,
SLAAC).
Porównanie metody Stateless NAT64 do metody Stateful NAT64
Porównanie protokołów NAT
NAT64 vs NPTv6
NAT64 – Modyfikuje sesje podczas transmisji.
NAT64 – Wykorzystuje określony adres IPv6 (Network-specyfic Prefix).
NPTv6 – Mapuje jeden adres IPv6 do drugiego adresu IPv6.
NPTv6 – Modyfikuje nagłówek pakietu podczas transmisji.