NAT - Network Address Translation - làm việc như thế nào

Internet ngày càng phát triển lớn hơn sự tưởng tượng của chúng ta .
Mặc dù không thống kê chính xác là bao nhiêu , nhưng hiện nay có hàng trăm triệu Host và có hàng tỉ người truy cập mạng Internet . Trên thực tế tỉ lệ này tăng gấp đôi theo mỗi năm .

Internet như thế nào mà phải có NAT . Mỗi máy tính truyền thông tin tới những máy tính khác và những Webserver trên Internet phải thông qua địa chỉ IP . Địa chỉ IP ( IP – Internet Protocol ) là một số duy nhất 32-bit để nhận biết vị trí máy tính của bạn trên Internet . Nó cũng tương tự như địa chỉ đường phố của bạn – đó là cách chính xác để tìm ra bạn ở đâu và gửi thông tin cho bạn .

Mọi người nghĩ rằng những địa chỉ IP luôn luôn đầy rẫy và dễ dàng có nó khi cần . Theo lí thuyết có 4.294.967.296 ( 232 ) địa chỉ khác nhau . Nhưng trên thực tế số sẵn có là nhỏ hơn ( khoảng giữa 3,2 tới 3,2 tỉ địa chỉ khác nhau ) bởi vì những địa chỉ phân chia với nhau theo những lớp và bởi vì vài địa chỉ riêng biệt được dùng với một số mục đích chung .

Cùng với bùng nổ Internet và tăng những mạng máy tính gia đình và những mạng máy tính doanh nghiệp mà số địa chỉ IP không đáp ứng đủ . Rõ ràng giải pháp thiết kế lại định dạng địa chỉ cho phép nhiều địa chỉ IP hơn nữa ( gọi là IPv6 ) , nhưng nó còn đang trong giai đoạn nghiên cứu và phát triển vì thế cũng cần tới nhiều năm để thực hiện bởi vì lúc đó phải thay thế lại toàn bộ cơ sở hạ tầng của Internet .

 

 

Hình 1 : NAT Router để điều phối sự qua lại đến và đi tới mạng các nhân

 

Ở đây NAT ( Network Address Translation ) là một giải pháp cứu nguy . NET cho phép thiết bị đơn lẻ , như Router , hành động như là một đại diện trên Internet và mạng Local . Điều đó có nghĩa là chỉ có duy nhất , địa chỉ IP duy nhất được yêu cầu là đại diện cho tất cả nhóm của những máy tính .

Nhưng sự thiếu hụt địa chỉ IP chỉ là một nguyên nhân để dùng NAT .

 

NAT làm gì ?

 

NAT như là nhân viên tiếp tân trong một văn phòng lớn . Bạn có những lệnh để lại chỗ tiếp tân không hướng bất kì cuộc gọi cho bạn trừ khi bạn yêu cầu . Thêm nữa , bạn gọi cho khách hàng tiềm năng và để lại tin nhắn cho khách hàng đó gọi cho bạn khi quay lại . Bạn nói với tiếp tân rằng bạn đang mong chờ khách hàng này và sắp xếp cho qua .

Người khách gọi tới số chính trong văn phòng của bạn , với số mà chỉ có người khách biết . Khi người khách gọi tới lễ tân và yêu cầu tìm bạn , tiếp tân kiểm tra trên bảng xem có khớp tên và số mở rộng của bạn . Tiếp tân biết rằng ban yêu cầu cuộc gọi này và vì thế sẽ chuyển tiếp người gọi tới số mở rộng của bạn .

Được Cisco phát triển , NAT được dùng trong thết bị ( Firewall , Router hoặc máy tính ) ở vị trí giữa mạng bên trong và phần còn lại của thế giới . NAT có nhiều dạng có có thể làm việc bằng vài cách :

 

  • NAT tĩnh : Sắp xếp địa chỉ IP không đăng kí thành địa chỉ IP đã đăng kí theo kiểu một-một . Cách này thông thường hay làm khi thiết bị cần truy cập ra bên ngoài mạng

 

 

Hình 2 : Trong NAT tĩnh , máy tính có địa chỉ IP là 192.168.32.10 sẽ được dịch thành 213.18.123.110 . Tương tự như vậy 192.168.32.12 thành 213.18.123.111

 

  • NAT động : Sắp xếp địa chỉ IP không đăng kí thành địa chỉ IP đã đăng kí từ một nhóm những địa chỉ IP đã đăng kí .

 

 

Hình 3 : Trong NAT động , máy tính với địa chỉ IP là 192.168.32.10 sẽ được chuyển thành một trong những địa chỉ trong dãy từ 213.18.123.100 tới 213.18.123.150

 

  • Quá tải – Overloading : Là một dạng của NAT động mà sắp xếp nhiều địa chỉ IP không đăng kí thành một địa chỉ IP đã đăng kí bằng cách dùng nhiều cổng ( Port ) khác nhau . Điều này được gọi là PAT ( Port Address Translation ) , một địa chỉ NAT hoặc NAT nhiều mức cổng .

 

 

Hình 4 : Trong Overloading , mỗi một máy tính trong một mạng cá nhân được chuyển thành cùng địa chỉ IP ( 213.18.123.100 ) nhưng được gán số cổng khác nhau .

 

  • Sự chồng – Overlapping : Khi địa chỉ IP dùng mạng bên trong của bạn là địa chỉ IP đăng kí được dùng trên một mạng khác , Router phải duy trì một bảng tìm kiếm những địa chỉ này do đó nó có thể chặn chúng và thay thế chúng bằng địa chỉ IP đã đăng kí . Nó là điều quan trọng cần lưu ý rằng Router NAT phải chuyển những địa chỉ “bên trong” thành những địa chỉ đã đăng kí duy nhất mà là duy nhất với cả mạng cá nhân . Điều này có thể làm ở NAT tĩnh hoặc dùng DNS ( Domain Name Server ) và NAT động thực hiện .

 

 

Hình 5 : Dãy IP bên trong ( 237.16.32.xx ) cũng là dãy đã đăng kí được dùng bởi một mạng khác . Vì thế Router chuyển những địa chỉ để tránh tranh chấp tiềm tàng xảy ra với một mạng khác . Nó cũng sẽ chuyển những địa chỉ IP toàn cầu trở lại thành những địa chỉ IP không đăng kí cục bộ khi thông tin được gửi tới mạng bên trong .

 

Mạng bên trong thông thường là LAN ( Local Area Network ) hay gọi nó là Stub Domain . Một Stub Domain là LAN mà dùng những địa chỉ IP bên trong . Hầu hết mọi giao dịch trong Stub Domain mang tinh chất cục bộ , do đó nó không có sự di chuyển ra bên ngoài của mạng bên trong . Stub Domain có thể bao gồm cả những địa chỉ không đăng kí và những địa chỉ đăng kí . Tất nhiên , mọi máy tính mà dùng những địa chỉ không đăng kí phải dùng NAT để trao đổi thông tin với phần còn lại của thế giới .

NAT có thể cấu hình theo nhiều cách khác nhau . Theo ví dụ bên dưới , Router NAT được cấu hình để chuyển những địa chỉ chưa đăng kí  , mà thuộc nhánh của mạng cá nhân bên trong , thành những địa chỉ đã dăng kí . Điều xảy ra như vậy bất kì khi nào thiết bị bên trong có địa chỉ không đăng kí càn trao đổi với mạng bên ngoài .

 

  • Nhà cung cấp dịch vụ Internet – ISP – gán dãy những địa chỉ IP cho công ty của bạn . Khối được gán là những địa chỉ IP đã được đăng kí , nó là những địa chỉ IP duy nhất và được gọi là Địa chỉ toàn cầu bên trong ( Inside Global Addresses ) . Những địa chỉ IP cá nhân , không đăng kí , được chia thành hai nhóm . Một là nhóm nhỏ ( những địa chỉ cục bộ bên ngoài ) mà sẽ được những NAT Router sử dụng . Một nhóm khác , lớn hơn , chúng là những địa chỉ cục bộ bên trong , sẽ được dùng trong Stub Domain . Những địa chỉ cục bộ bên ngoài được dùng để chuyển những địa chỉ IP đã đăng kí , là những Địa chỉ toàn cầu bên ngoài ( Outside Global Addresses ) , của những thiết bị trên mạng công cộng .

 

 

Hình 6 : Những địa chỉ IP có những nhiệm vụ khác nhau theo những chiều đi vào hoặc đi ra trong Stub Domain.

 

  • Hầu hết những máy tính trong Stub Domain trao đổi với nhau dùng những địa chỉ cục bộ bên trong .
  • Một vài máy tính trong Stub Domain trao đổi nhiều ra ngoài mạng . Những máy tính này có Địa chỉ toàn cầu bên trong , điều đó có nghĩa là chúng không yêu cầu thay đổi địa chỉ .
  • Khi máy tính trong Stub Domain có Địa chỉ cục bộ bên trong muốn trao đổi ra bên ngoài mạng thì gói dữ liệu cần qua những NAT Router .
  • Những NAT Router kiểm tra trên bảng lộ trình để xem lối đi những địa chỉ đích . NAT Router chuyển gói dữ liệu và tạo lỗi đi cho nó trong bảng chuyển địa chỉ . Nếu địa chỉ đích không có trong bảng lộ trình thì gói dữ liệu sẽ bị huỷ bỏ.
  • Dùng Địa chỉ toàn cầu bên trong , Router gửi gói dữ liệu tới đích của nó .
  • Máy tính trên mạng công cộng gửi gói dữ liệu tới mạng cá nhân . Địa chỉ nguồn trong gói là Địa chỉ toàn cầu bên ngoài . Địa chỉ đích là Địa chỉ toàn cầu bên trong.
  • Router NAT tìm kiếm bảng dịch địa chỉ và xác định xem Địa chỉ đích có trong đó , hướng tới những máy tính trong Stub Domain .
  • NAT Router dịch Địa chỉ toàn cầu bên trong của gói dữ liệu thành Địa chỉ cục bộ bên trong và gửi nó tới máy tính đích .

 

Dùng NAT Overloading với đặc điểm của cụm giao thức TCP/IP nhiều thành phần , mà cho phép một máy tính duy trì vài kết nối đồng thời bằng máy tính điều khiển từ xa ( hoặc những máy tính ) dùng những cổng TCP hoặc UPD khác nhau . Trong gói IP có Header chứa những thông tin bao gồm :

 

  • Địa chỉ nguồn : Địa chỉ IP của máy tính gốc như 201.3.83.132 .
  • Cổng nguồn : Số cổng TCP hoặc UPD được gán từ máy tính gốc cho gói đó , như Port 1080 .
  • Địa chỉ đích :  Địa chỉ IP của máy tính nhận , kiểu như 145.51.18.223
  • Cổng đích : Số cổng TCP hoặc UDP mà máy tính gốc yêu cầu máy tính nhận mở , như Port 3021 .

 

Những địa chỉ chỉ định rõ ở những máy tính mỗi đầu , trong khi những số cổng chắc chắn rằng sự kết nối giữa hai máy tính được nhận biết là duy nhất . Mỗi cổng dùng 16 bit , như vậy có tới 65.536 cổng ( 216 ) . Trên thực tế số cổng sẽ khác đi , và chỉ có thể dùng khoảng 4.000 cổng  .

 

NAT động và Overloading

 

Dưới đây cho biết NAT động làm việc như thế nào

 

  • Mạng bên trong ( Stub Domain ) được thiết lập bằng những địa chỉ IP , mà không phải do IANA (Internet Assigned Numbers Authority ) cung cấp . Những địa chỉ này không nằm trong danh mục và không phải là duy nhất .
  • Công ty thiết lập Router cho phép NAT . Router có một dãy địa chỉ IP duy nhất do IANA cấp .
  • Máy tính trong Stub Domain cố gắng kết nối tới máy tính bên ngoài mạng , như Web server .
  • Router nhận gói dữ liệu từ máy tính trong Stub Domain .
  • Router sẽ lưu địa chỉ IP của máy tính trong Stub Domain tới Bảng dịch địa chỉ . Router thay thế địa chỉ IP cũ của máy tính bằng địa chỉ IP có sẵn đầu tiên trong dãy địa IP của Router có sẵn và là duy nhất . Bảng dịch địa chỉ cho biết máy tính trong Stub Domain đang dùng địa chỉ IP nào để nối với bên ngoài .
  • Khi gói dữ liệu quay lại từ máy tính đích , Router kiểm tra địa chỉ đích trong gói dữ liệu . Nó tìm kiếm trong Bảng dịch địa chỉ để xem đích đó thuộc máy tính nào trong Stub Domain và gửi dữ liệu tới đó . Nếu không có trong Bảng dịch địa chỉ thì gói dữ liệu đó bị bỏ qua .
  • Máy tính nhận gói dữ liệu từ Router . Quá trình được lặp lại như là máy tính trao đổi với hệ thống bên ngoài .

 

 

Hình 7 :

 

NAT Overloading làm việc như thế nào

 

  • Mạng bên trong ( Stub Domain ) thiết lập dãy địa chỉ IP riêng không phải là những địa chỉ IP do IANA cung cấp .
  • Công ty dùng Router cho phép NAT . Router có địa IP do IANA cấp .
  • Máy tính trong Stub Domain cố gắng kết nối với máy tính bên ngoài mạng , như Web server .
  • Router nhận gói dữ liệu từ máy tính trong Stub Domain .
  • Router lưu địa chỉ IP và số cổng riêng trong Stub Domain của máy tính vào Bảng dịch địa chỉ  . Router thay thế những địa chỉ IP cũ bằng địa chỉ IP của Router . Router thay thế cổng của máy tính nguồn bằng cổng mà nó có . Router sẽ lưu những thông tin máy tính nguồn bên trong Bảng dịch địa chỉ .
  • Khi gói dữ liệu quay trở lại từ máy tính đích , Router kiểm tra cổng đích trong gói . Sau đó nó tìm kiếm trong Bảng dịch địa chỉ để xem máy nào trong Stub Domain nhận gói dữ liệu này . Nó thay đổi địa chỉ đích và cổng đích và lư nó vào trong Bảng dịch địa chỉ và gửi nó tới máy tính .
  • Khi Router NAT bây giờ có Địa chỉ nguồn của máy tính và cổng nguồn và lưu nó vào trong Bảng dịch địa chỉ , nó sẽ tiếp tục dùng cùng số cổng trong suốt quá trình kết nối . Có một thời gian nhất định để Reset lại Bảng dịch địa chỉ nếu như trong một khoảng thời gian đó không có sự truy cập tới địa chỉ đã lưu .

 

Bảng dưới đây cho thấy những máy tính bên trong Stub Domain có thể xuất hiện ra mạng bên ngoài theo những địa chỉ IP và cổng như thế nào

 

Máy tính trong

Stub Domain

Địa chỉ IP trong Stub Domain

Cổng

Địa chỉ IP của NAT Router

Cổng

A

192.168.32.10

400

215.37.32.203

1

B

192.168.32.13

50

215.37.32.203

2

C

192.168.32.15

3750

215.37.32.203

3

D

192.168.32.18

206

215.37.32.203

4

 

Số của những sự chuyển đổi đồng thời trong Router hỗ trợ được xác định bằng tổng số dung lượng của bộ nhớ DRAM . Mỗi một danh mục trong Bảng địa chỉ mất 160 byte , với dung lượng 4MB theo lí thuyết sẽ được 26.214 danh mục , quá nhiều cho các ứng dụng .