NAT Instance trong VPC

2020.09.05

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Trong mạng riêng VPC (virtual private cloud) trên AWS cloud, có 2 hình thức giúp Instance của chúng ta kết nối tới Internet, đó là NAT Gateway và NAT Instance. Trong bài viết hôm nay, chúng ta sẽ cùng tìm hiểu về NAT Instance và thử thiết lập một NAT Instance đơn giản.

1. NAT là gì?

NAT (Network Address Translation) hay trong tiếng việt là "Dịch địa chỉ mạng" là một quá trình thiết bị mạng cung cấp một địa chỉ cho thiết bị trong mạng local để nó thiết bị đó có thể kết nối với internet.

Chúng ta đều biết, để kết nối với internet, thiết bị cần có một Public IP, nhưng các thiết bị trong mạng Local thì không. Vì vậy NAT giúp chúng ta giải quyết vấn đề này bằng cách dịch địa chỉ mạng Private IP sang Public IP và vẫn đảm bảo tính bảo mật cho thiết bị mạng local. NAT thường được tiến hành bởi routers hoặc firewall.

NAT cung cấp 1 địa chỉ public IP duy nhất cho tất cả các thiết bị trong mạng local. Điều này vừa giúp dễ dàng quản lý vừa giúp tiết kiệm chi phí.

Bạn có thể hiểu rõ hơn qua hình dưới đây:

Các máy tính trong cùng mạng Local có các địa chỉ Private IP là 172,16.0.2, 172,16.0.3, 172,16.0.4, 172,16.0.5. Nhưng chúng đều kết nối tới Internet thông qua một địa chỉ Public IP duy nhất đó là 119.15.74.36.

2. NAT Instance là gì?

Đến đây, ta có thể hiểu đơn giản như sau:

Instance là một máy tính ảo được cung cấp bởi Amazon Web Services. Do vậy NAT Instance là những máy tính ảo đóng vai trò dịch địa chỉ mạng từ private IP sang Public IP, là trung gian giúp những máy tính ở mạng private kết nối được với internet.

Bạn có thể hiểu hơn thông qua hình vẽ dưới đây:

 

Có thể thấy, EC2 Instance của chúng ta nằm ở một Private subnet, không hề có kết nối tới Internet. Nó kết được kết nối tới một NAT Instance nằm ở một Public Subnet. Thông qua NAT Instance này, EC2 Instance có thể kết nối tới Internet một cách an toàn.

3. Thực hành

Tiếp theo, chúng ta sẽ cùng thử tạo một NAT Instance theo sơ đồ bên trên. Mục tiêu sẽ là giúp cho EC2 Instance nằm ở Private Subnet có thể kết nối tới Internet thông qua NAT Instance.

Để hộ trợ quá trình tạo VPC nhanh hơn, chúng ta sẽ sử dụng tính năng mới của VPC đó là VPC Wizard. Chúng ta có thể tạo một VPC với 1 Public Subnet, một Private Subnet như sau:

Tại VPC Dashboard, chọn Launch VPC Wizard

Tiếp theo chọn VPC with Public and Private Subnets

Chọn các thiết lập cho VPC. Chú ý cần chọn mục Use a NAT Instance

Sau khi tạo thành công, có thể thấy ngay 2 subnet vừa được tạo ở tab Subnets của VPC

Đồng thời, khi vào tab Instance của EC2, chúng ta cũng thấy một NAT Instance đã được tạo với Instance type là t2.nano như đã thiết lập ở VPC Wizard phía trên

Tiếp theo, chúng ta sẽ gán cho NAT Instance vừa được tạo một Security Group để có thể kết nối tới Internet

Bước tiếp theo, chúng ta sẽ tạo một Instance ở Private Subnet của VPC. Chú ý

  •  Ở mục Network chúng ta chọn đúng VPC vừa tạo ở trên
  • Ở mục Subnet chúng ta chọn Private Subnet vừa tạo ở trên
  • Disable mục Auto-assign Public IP vì đây là một Instance ở Private Subnet, sẽ không có kết nối tới Internet

Chúng ta có thể thử SSH tới Instance này thông qua 1 Bastion Host và kiểm tra kết nối tới internet bằng lệnh $curl www.google.com Rõ ràng không có kết nối tới internet từ Instance này (Security Group để default, nếu muốn SSH từ Bastion Host thì thiết lập như link bên dưới)

Tham khảo ở đây: https://dev.classmethod.jp/articles/bastion-host-trong-vpc/

Chúng ta sẽ giúp Instance kết nối được tới Internet bằng một Route Table (Là Router trong sơ đồ) như trong hình dưới đây:

Bản chất của việc chúng ta làm chính là cho Route table biết rằng, khi nào EC2 Instance ở Private Subnet kết nối tới các IP khác IP local của VPC thì chúng ta sẽ giao tiếp thông qua NAT Instance (NAT Instance đã kết nối tới Internet Gateway). Qua đó, EC2 Instance có thể kết nối tới Internet.

Có thể kiểm tra bằng cách chạy lại câu lệnh  $curl www.google.com

Như vậy chúng ta đã cùng nhau thiết lập một NAT Instance giúp EC2 Instance kết nối tới Internet. Hy vọng sẽ giúp ích cho quá trình học tập và tìm hiểu của các bạn

Xin cảm ơn và hẹn gặp lại!

Tham khảo

  • Icon: https://www.flaticon.com/free-icon/programming_867644?term=computer&page=1&position=4
  • Tài liệu AWS: https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html