Bài viết chuyên đề

Giải pháp NAT64/DNS64 (Chuyên Đề IPv6)

20/03/2019 10:33:42

Giải pháp NAT64/DNS64 (Chuyên Đề IPv6)

 

Ngày nay, với sự phát triển như vũ bão của công nghệ thông tin và Internet, số lượng thiết bị được kết nối Internet ngày càng tăng lên, không chỉ là các loại máy tính để bàn, máy chủ, mà còn là các thiết bị di động, laptop, máy tính bảng …và nhiều dạng thiết bị khác nhau. Tất nhiên, sự phát triển này đòi hỏi phải có số lượng về địa chỉ IP tương ứng.

Đầu năm 2011, Tổ chức quản lý địa chỉ Internet toàn cầu (IANA) đã công bố sự cạn kiệt của địa chỉ IPv4 trên thế giới, điều này dẫn đến sự quan tâm ngày càng lớn của cộng đồng Internet đến sự phát triển và khả năng áp dụng của địa chỉ IPv6.

Thiết kế của mạng IPv4 và IPv6 là "incompatible" (không tương thích với nhau). Theo các khuyến nghị từ IETF (Internet Engineering Task Force – cơ quan có chức năng nghiên cứu, phát triển và quyết định các chuẩn dùng trong Internet), việc triển khai IPv4 & IPv6 thông thường dựa trên dual-stack: tức là chúng ta sẽ có cả hai mạng cùng tồn tại song song cho đến khi IPv6 có thể thay thế (tiếp nhận) được  IPv4.

Tuy nhiên,  sự tăng trưởng của IPv6 đã chậm hơn nhiều so với dự đoán. Do đó việc triển khai một mạng thuần IPv6 (chỉ sử dụng IPv6) phải đối mặt với một thách thức là làm sao có thể giao tiếp được với các mạng IPv4 đang được sử dụng chủ yếu trên thế giới. Một vấn đề tương tự gặp phải, đó là các thiết bị chỉ sử dụng được trên mạng IPv4 cũng cần được kế thừa trên mạng internet IPv6. Rất nhiều phương pháp để kết nối và chuyển đổi (migration) IPv4-IPv6 đã được đề xuất, một trong những phương pháp tiếp cận được áp dụng là giải pháp NAT64/DNS64.

NAT64/DNS64 sử dụng phương pháp biên dịch địa chỉ để kết nối người sử dụng IPv6 với các dịch vụ IPv4 (một phương pháp khác là sử dụng cách thức đóng gói gói tin IPv6-IPv4). Điều này cho phép các dữ liệu chỉ truyền trên mạng IPv4 có thể được sử dụng bởi người dùng IPv6. NAT64 và DNS64 là các cơ chế riêng biệt và có thể triển khai bằng cách sử dụng các thiết bị khác nhau.

1. Tổng quan về giao thức NAT64 và DNS64.

1.1. NAT64

NAT64 là một cơ chế biên dịch địa chỉ tại Layer 3, cho phép các host IPv6 có thể giao tiếp được với các máy chủ IPv4.

DNS64 thực hiện nhúng một địa chỉ IPv4 vào 32 bit cuối cùng của bản ghi AAAA đã được tổng hợp, tạo ra một địa chỉ IPv6 chuẩn với 128 bit, và gửi lại cho IPv6 Client. IPv6 Client sẽ gửi gói tin có chứa thông tin này đến thiết bị NAT64, trên thiết bị này sẽ tạo ra một ánh xạ NAT giữa địa chỉ IPv6 và IPv4, cho phép các host IPv6 có thể liên lạc được với các nguồn tài nguyên IPv4.

Thiết lập đơn giản cho NAT64 là sử dụng như một thiết bị mạng (router) với ít nhất hai interface. Một interface dùng để kết nối đến mạng IPv4, và một interface dùng để kết nối đến mạng IPv6. Chúng ta sẽ cấu hình để các gói tin từ mạng IPv6 đi đến mạng IPv4 sẽ được định tuyến thông qua router này. Trên router sẽ thực hiện tất cả các phương pháp biên dịch địa chỉ cần thiết để chuyển gói tin từ mạng IPv6 vào mạng IPv4 và ngược lại.

NAT64 bao gồm:

  • Stateless Translation: phương pháp ánh xạ địa chỉ được cấu hình bởi người quản trị hệ thống. tateless Translation thích hợp khi bộ biên dịch NAT64 được sử dụng phía trước máy chủ IPv4 để cho phép nó có thể giao tiếp được với các IPv6 Client ở xa.
  • Stateful Translation (thường được sử dụng): phương pháp ánh xạ địa chỉ một cách tự động khi các gói tin đầu tiên từ mạng IPv6 đi đến mạng IPv4. Stateful Translation phù hợp cho việc triển khai tại phía Client (Client-side), hoặc tại các nhà cung cấp dịch vụ, cho phép các máy trạm IPv6 Client có thể giao tiếp với các node IPv4 ở xa.

Thông thường, NAT64 được thiết kế sử dụng khi các giao tiếp có hướng từ các host IPv6. Một số cơ chế khác (bao gồm ánh xạ địa chỉ tĩnh) thường tồn tại trong giao tiếp ngược. Sau khi tạo ra các ràng buộc về địa chỉ, các gói tin có thể được truyền theo cả hai hướng.

1.2. DNS64

DNS64 là một thành phần của phương pháp chuyển đổi IPv6-IPv4. DNS64 sẽ được sử dụng cùng với một cơ chế biên dịch (NAT64) để cho phép người dùng IPv6 có thể giao tiếp bằng tên miền với các máy chủ IPv4, bằng cách tạo ra bản ghi AAAA tổng hợp từ bản ghi A có sẵn.

Tương tự như bản ghi A, bản ghi AAAA cũng cung cấp phân giải tên miền thành địa chỉ IP. Tuy nhiên, bản ghi A chỉ sử dụng được trong mạng IPv4 và bản ghi AAAA cũng chỉ sử dụng được với mạng IPv6.

DNS64 cho phép phân giải địa chỉ từ vùng mạng IPv4 bằng cách tạo ra bản ghi AAAA tổng hợp cho các host, khi các host này không có bản ghi AAAA. Điều này được thực hiện bằng phương pháp cấu hình địa chỉ IPv6 prefix với địa chỉ IPv4 được cung cấp bằng cách lookup bản ghi A.  Địa chỉ IPv4 sẽ được nhúng vào 32 bit cuối cùng của địa chỉ IPv6, tạo thành một địa chỉ IPv6 tổng hợp.

Các gói tin gửi đến địa chỉ trong IPv6 prefix sẽ được định tuyến đến thiết bị NAT64, thiết bị này sẽ thay thế cho các IPv6 Client để kết nối đến địa chỉ đích IPv4 và thực hiện chuyển tiếp dữ liệu giữa kết nối IPv4 và IPv6.

2. Mô hình sử dụng NAT64/DNS64

 

Hình 1. Mô hình sử dụng NAT64/DNS64

Chức năng:

  • DNS64 chuyển đổi bản ghi A vào trong bản ghi AAAA, sử dụng prefix của NAT64, sau đó cung cấp các bản ghi A và AAAA cho Client.
  • NAT64 quảng bá NAT64 prefix vào trong vùng mạng IPv6 để định tuyến cho các gói tin đi đến các máy chủ IPv4.

NAT64 prefix:

  • Có thể là bất kỳ prefix: /32, /40, /48, /56, /64 và /96.
  • WKP (Well-Known Prefix): 64:FF9B::/96.

Nguyên lý hoạt động:

Các gói tin địa chỉ nguồn thuộc mạng 64:ff9b::/96 (NAT64 prefix) sẽ được chuyển đến thiết bị NAT64. Tất cả các lưu lượng IPv6 khác được định tuyến mặc định qua IPv6 Gateway. Các Client được quyền sử dụng DNS64 như một DNS Resolver mặc định, được cung cấp cả kết nối IPv4 và IPv6. Những kết nối này sẽ được DNS64 sử dụng để kết nối tới các máy chủ DNS Authoritative.

Lưu ý: Router IPv6, DNS64 và NAT64 chỉ là các chức năng mang tính logic, chúng hoàn toàn có thể được nằm trên cùng một thiết bị vật lý.

3. Phân tích nguyên tắc hoạt động của NAT64/DNS64:

 

Hình 2. Minh họa kết nối mạng IPv6-IPv4

3.1. Hoạt động của DNS64 trong kết nối IPv6-IPv4:

 

Hình 3. Hoạt động của DNS64 trong kết nối IPv6-IPv4

Các Client thuộc mạng IPv6 sẽ kết nối TCP đến example.com trên port 80.

Bước 1:

IPv6 Client sẽ thực hiện gửi truy vấn bản ghi AAAA tên miền example.com đến thành phần DNS64.

DNS64 sẽ thực hiện tìm kiếm câu trả lời bằng cách gửi truy vấn đến các DNS Authoritative, nếu có thông tin bản ghi AAAA của tên miền example.com (DNS Authoritative có hỗ trợ IPv6), DNS64 sẽ thực hiện trả lời thông tin cho IPv6 Client. Nếu không có thông tin, chúng sẽ nhận được câu trả lời trống (empty answer).

Bước 2:

DNS64 sẽ gửi truy vấn bản ghi A của tên miền example.com đến DNS Authoritative, và sẽ nhận được câu trả lời là tên miền example.com có IP là 192.0.43.10.

example.com (A) = 192.0.43.10

DNS64 sẽ thực hiện tổng hợp bản ghi AAAA từ thông tin bản ghi A nói trên, bằng cách sử dụng phương pháp biên dịch với NAT64 prefix (ở đây sử dụng WKP: 64: ff9b ::/ 96). Sau khi tổng hợp chúng ta sẽ có thông tin IPv6 của example.com:

example.com (AAAA) = 64:FF9B::192.0.43.10

Thông tin này sẽ được DNS64 gửi lại cho IPv6 Client.

3.2. Hoạt động của NAT64 trong kết nối IPv6-IPv4:

 

Hình 4. Hoạt động của NAT64 trong kết nối IPv6-IPv4

Sau khi nhận được thông tin bản ghi tổng hợp IPv6 từ phía DNS64, IPv6 Client sẽ thực hiện gửi một kết nối TCP SYN đến 64:FF9B:: 192.0.43.10, trên cổng 80.

Gói tin được định tuyến đến thiết bị NAT64 để tạo ra một phiên mới và gán một liên kết ràng buộc. Chúng sẽ thay đổi địa chỉ nguồn của những liên kết ràng buộc được tạo ra, và chuyển đổi địa chỉ đích IPv6 thành địa chỉ IPv4 bằng cách loại bỏ đi prefix.  Khi nhận được trả lời SYN / ACK, NAT64 sẽ thực hiện hoạt động ở chế độ ngược (reverse) và chuyển tiếp các gói tin IPv6 cho Client.

3.3. Hoạt động của NAT64/DNS64:

 

Hình 5. Cơ chế hoạt động của NAT64/DNS64

  1. IPv6 Client gửi yêu cầu tìm kiếm thông tin tên miền example.com (khai báo trỏ tới máy chủ IPv4 server).

  2. DNS64 thực hiện tìm kiếm bản thông tin bản ghi AAAA cho địa chỉ IPv6 của máy chủ.

  3. DNS Server trả lời bằng 1 thông báo lỗi (hoặc câu trả lời trống, không có thông tin).

  4. DNS64 thực hiện tìm kiếm thông tin bản ghi A cho địa chỉ IPv4.

  5. DNS Server trả lời địa chỉ IPv4 của tên miền example.com.

  6. DNS64 trả về thông tin bản ghi AAAA từ việc tổ hợp địa chỉ IPv4 với 96 bit của IPv6 prefix đã cấu hình trước đó.

  7. IPv6 Client thiết lập kết nối tới địa chỉ IPv6 tương thích ở trên.

  8. NAT64 nhận dạng prefix và thực hiện biên dịch thành địa chỉ IPv4 trước khi gửi tới IPv4 Server

  9. IPv4 Server gửi thông tin trả lời theo quá trình tương tác IPv4 thông thường

  10. NAT64 thực hiện biên dịch ngược và gửi gói tin phản hồi về Client.

3. Kết luận

Hiện nay, cộng đồng sử dụng Internet đang phải đối mặt với sự cạn kiệt của nguồn tài nguyên địa chỉ IPv4, việc triển khai thế hệ địa chỉ mới IPv6 là một yêu cầu tất yếu. Cùng với đó là thách thức làm thế nào để quá trình chuyển sang IPv6 diễn ra ổn định, thuận lợi  mà vẫn đảm bảo người sử dụng Internet gần như không nhận thấy sự thay đổi nào.

Với giải pháp NAT64/DNS64, chúng ta hoàn toàn có thể xây dựng được hệ thống mạng mới IPv6 mà vẫn đảm bảo giao tiếp với hệ thống mạng IPv4 hiện tại một cách thuận tiện. Các nhà cung cấp dịch vụ có thể chạy máy chủ của họ trên IPv4 và NAT64/DNS64 sẽ giúp kết nối các máy chủ này với người dùng sử dụng IPv6.

Nguồn: VNNIC