(T) Teoria protokołu NAT64**

Konfiguracja protokołu NPTv6 została opisana w artykule: Konfiguracja translacji NAT względem protokołu IPv6.

NAT64 (IPv4 <-> IPv6)

Wprowadzenie do protokołu NAT64

  • NAT-PT opisuje referencja RFC 6144, 2766 oraz 4966.
  • NAT64 opisuje referencja RFC 6146, 6145 oraz 6052.
  • 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:
    1. Nadchodzący pakiet IPv6 zostaje przekierowany do wirtualnego interfejsu NVI (NAT Vitrual Interface).
    2. Protokół NAT64 przeprowadza translację docelowego adresu IPv6, wydobywając z niego docelowy adres IPv4.
    3. Protokół NAT64 dodaje do tablicy (Bind Databese) wpis o przeprowadzonej translacji.
  • Proces translacji IPv4 -> IPv6:
    1. Nadchodzący pakiet IPv4 zostaje przekierowany do wirtualnego interfejsu NVI (NAT Vitrual Interface).
    2. Docelowy adres IPv4 zostaje statycznie bądź dynamicznie mapowany na adres IPv6.
    3. 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)
  1. Host wysyła zapytanie Query (AAAA www.cisco.com) do serwera DNS64.
  2. Serwer DNS64 otrzymuje zapytanie Query od hosta. Jako że nie zna odwzorowania podanej nazwy domenowej na adres IPv6, wysyła zapytanie Query do zaufanego serwera DNS AAAA.
  3. Serwer DNS AAAA otrzymuje zapytanie Query od Serwer DNS64. Jako że nie zna odwzorowania podanej nazwy domenowej na adres IPv6, wysyła odpowiedź Response (Name Error: www.cisco.com), do serwera DNS64.
  4. Serwer DNS64 otrzymuje odpowiedź Response od serwera DNS AAAA. Następnie wysyła zapytania Query (A www.cisco.com) do serwera DNS A.
  5. Serwer DNS A otrzymuje zapytanie Query od 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 serwera DNS64.
  6. Serwer DNS64 otrzymuje odpowiedź Response od serwera DNS 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).
  7. Serwer DNS64 wysyła odpowiedź Response (www.cisco.com(AAAAA) = 2001:DB8:CAFE:AAAA::0A0A:0A0A) do hosta.
  8. Host wysyła pakiet na docelowy adres IPv6 przekazany w odpowiedzi Response od serwera DNS64.
  9. Ruter NAT64 otrzymuje 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:
    1. Przekształca nagłówek pakietu IPv6 na nagłówek IPv4.
    2. 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).
    3. 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.
    4. Następnie następuje proces translacji adresów IP, a wyniki są zapisywane w tablicy NAT Translations.
  10. Po translacji NAT64 pakiet kierowany jest na interfejs wyjściowy rutera NAT64.
  11. Docelowy serwer IPv4 odpowiada na otrzymany pakiet IPv4.
  12. Ruter NAT64 otrzymuje 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.
    1. Jeżeli ruter NAT64 nie posiada pasującego wpisu w tablicy NAT Translations, pakiet zostaje porzucony.
    2. Jeżeli ruter NAT64 posiada pasujący wpis w tablicy NAT Translations, następuje translacja z adresu IPv4 na IPv6.
  13. Po translacji NAT64 pakiet kierowany jest na interfejs wyjściowy rutera 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)
  1. Na ruterze NAT64 zostaje 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.
  2. Host wysyła zapytanie Query (A www.cisco.com) do serwera DNS.
  3. Serwer DNS otrzymuje zapytanie Query od 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.
  4. Host wysyła pakiet na docelowy adres IPv4 przekazany w odpowiedzi Response od serwera DNS.
  5. Ruter NAT64 otrzymuje pakiet IPv4 od hosta, na interfejsie (NAT64 enable). Rozpoczynając tym samym proces translacji:
    1. Ruter NAT64 przekształca nagłówek pakietu IPv4 na nagłówek IPv6, zmieniając docelowy adres IPv4 na adres IPv6.
    2. 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).
  6. Po translacji NAT64 pakiet kierowany jest na interfejs wyjściowy rutera NAT64.
  7. Docelowy serwer IPv6 odpowiada na otrzymany pakiet IPv6.
  8. Ruter NAT64 otrzymuje pakiet IPv6 od serwera docelowego na interfejsie (NAT64 enable), rozpoczynając tym samym proces translacji NAT. Ruter NAT64:
    1. Przekształca nagłówek pakietu IPv6 na nagłówek IPv4, zmieniając źródłowy adres IPv6 na adres IPv4.
    2. Przekształca docelowy adres IPv6, na adres IPv4. Na podstawie oryginalnego docelowego adresu IPv6.
  9. Po translacji NAT64 pakiet kierowany jest na interfejs wyjściowy rutera 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.

Pozostałe tematy związane z protokołem IPv6

Przydzielanie adresów IPv6

Protokół NAT względem protokołu IPv6

PDFPRINT

Robert T Kucharski

Cisco Network Engineer in GPW.

Dodaj komentarz