Tạo NAT Gateway

Tạo NAT Gateway

ℹ️ Tổng quan về NAT Gateway

NAT Gateway (Network Address Translation Gateway) là một dịch vụ được quản lý bởi AWS cho phép các instances trong private subnet có thể:

  • Kết nối ra internet để tải updates, packages
  • Truy cập các AWS services
  • Chặn các kết nối từ internet vào (inbound traffic)

🏗️ Kiến trúc NAT Gateway:

EC2 Private → Private Subnet → NAT Gateway → Internet Gateway → Internet
                                    ↓
                              (Elastic IP)

💰 Chi phí NAT Gateway:

  • Phí theo giờ: $0.045/giờ ($32/tháng)
  • Phí xử lý dữ liệu: ~$0.045/GB
  • Elastic IP: Miễn phí khi được sử dụng, $0.005/giờ khi không sử dụng

💡 Lưu ý cho Workshop:

  • Chúng ta sẽ tạo 1 NAT Gateway duy nhất (đơn giản, tiết kiệm chi phí)
  • Trong môi trường production, nên có NAT Gateway ở mỗi AZ để đảm bảo high availability

Tạo Elastic IP Address

  1. Truy cập EC2 Dashboard

    • Chọn Elastic IPs từ menu bên trái (trong phần Network & Security)
    • Click Allocate Elastic IP address

    💡 Elastic IP là gì?: Là địa chỉ IPv4 tĩnh được thiết kế cho cloud computing. NAT Gateway cần Elastic IP để có địa chỉ public cố định.

    Create VPC

  2. Cấu hình Elastic IP

    • Network Border Group: Giữ mặc định (us-west-1)
    • Public IPv4 address pool: Chọn Amazon’s pool of IPv4 addresses
    • Tags (optional): Có thể thêm tag Name = “NAT-Gateway-EIP”
    • Click Allocate

    Create VPC

  3. Xác nhận tạo thành công Elastic IP

    • Ghi nhận địa chỉ Allocated IPv4 address
    • Trạng thái hiện tại: Not associated (chưa gắn vào resource nào)

    ⚠️ Lưu ý: Elastic IP không được sử dụng sẽ bị tính phí $0.005/giờ. Chúng ta sẽ gắn nó vào NAT Gateway ngay sau đây.

    Create VPC

Triển khai NAT Gateway

  1. Truy cập VPC Dashboard

    • Chọn NAT Gateways từ menu bên trái
    • Click Create NAT gateway

    Create VPC

  2. Cấu hình NAT Gateway

    • Name: Nhập NAT gateway
    • Subnet: Chọn Public subnet 2 (hoặc bất kỳ public subnet nào)
    • Connectivity type: Chọn Public
    • Elastic IP allocation ID: Chọn Elastic IP vừa tạo ở bước trước

    💡 Tại sao đặt NAT Gateway trong Public Subnet?

    • NAT Gateway cần Internet Gateway để kết nối ra internet
    • Chỉ có public subnet mới có route đến Internet Gateway
    • NAT Gateway sẽ nhận Elastic IP làm địa chỉ public

    Create VPC

  3. Xem lại cấu hình và click Create NAT gateway

    Create VPC

  4. Xác nhận tạo thành công NAT Gateway

    • Trạng thái ban đầu: Pending
    • Sau 1-2 phút, trạng thái sẽ chuyển sang Available

    ⏱️ Thời gian chờ: NAT Gateway mất khoảng 1-2 phút để khởi tạo. Bạn có thể tiếp tục các bước tiếp theo trong khi chờ.

    Create VPC

Cấu hình Route Table cho Private Subnet

💡 Tại sao cần Route Table riêng?

  • Private subnet cần route khác với public subnet
  • Traffic từ private subnet phải đi qua NAT Gateway (không phải Internet Gateway)
  • Tách biệt routing giúp tăng tính bảo mật và dễ quản lý
  1. Trong VPC Dashboard

    • Chọn Route Tables từ menu bên trái
    • Click Create route table

    Create VPC

  2. Thiết lập Route Table

    • Name: Nhập Route table - Private
    • VPC: Chọn VPC ASG
    • Click Create route table

    Create VPC

  3. Xác nhận tạo thành công Route Table

    • Ghi nhận Route table ID
    • Trạng thái: Active

Liên kết Subnets với Route Table

  1. Trong Route Table vừa tạo

    • Chọn tab Subnet associations
    • Click Edit subnet associations

    💡 Subnet Associations: Xác định subnet nào sẽ sử dụng route table này để định tuyến traffic.

    Create VPC

  2. Liên kết Private Subnets

    • Chọn cả 2 private subnets:
      • Private subnet 1
      • Private subnet 2
    • Click Save associations

    ℹ️ Lưu ý: Chỉ chọn private subnets. Public subnets đã có route table riêng với route đến Internet Gateway.

    Create VPC

Thêm Route đến NAT Gateway

  1. Cấu hình Routes

    • Chọn tab Routes
    • Click Edit routes

    Create VPC

  2. Thêm Route cho Internet Access

    • Click Add route
    • Destination: Nhập 0.0.0.0/0 (tất cả traffic đến internet)
    • Target: Chọn NAT Gateway, sau đó chọn NAT Gateway vừa tạo
    • Click Save changes

    💡 Giải thích Route:

    • 0.0.0.0/0: Đại diện cho tất cả địa chỉ IP (internet)
    • Target = NAT Gateway: Mọi traffic ra internet sẽ đi qua NAT Gateway
    • NAT Gateway sẽ chuyển đổi private IP thành Elastic IP trước khi ra internet

    Create VPC

  3. Xác nhận cấu hình Routes

    • Kiểm tra route table có 2 routes:
      • Local route: Cho phép communication trong VPC
      • 0.0.0.0/0 → NAT Gateway: Cho phép internet access

    ✅ Route Table hoàn chỉnh:

    Destination       Target
    10.10.0.0/16     local          (VPC internal traffic)
    0.0.0.0/0        nat-xxxxx      (Internet traffic)
    

    Create VPC

Kiểm tra Kết nối Internet

  1. Quay lại SSH session đến EC2 Private

    • Nếu đã đóng session, SSH lại từ EC2 Public:
    ssh -i aws-keypair.pem ec2-user@<EC2-Private-IP>
    
  2. Thực hiện ping test từ EC2 Private Instance

    • Test kết nối đến Amazon:
    ping amazon.com -c5
    

    ✅ Kết quả mong đợi: Bạn sẽ nhận được 5 ping responses thành công, xác nhận EC2 Private đã có thể kết nối ra internet qua NAT Gateway.

    Create VPC

  3. Test thêm với các lệnh khác (optional):

    # Test DNS resolution
    nslookup google.com
    
    # Test HTTP connection
    curl -I https://aws.amazon.com
    
    # Update system packages (requires internet)
    sudo yum update -y
    

🏗️ Kiến trúc Hoàn chỉnh:

Internet
   ↕
Internet Gateway (IGW)
   ↕
Public Subnet 2
   ↕
NAT Gateway (with Elastic IP)
   ↕
Private Route Table (0.0.0.0/0 → NAT)
   ↕
Private Subnet 1 & 2
   ↕
EC2 Private Instance

🔒 Bảo mật đạt được:

  • ✅ EC2 Private có thể kết nối ra internet (outbound)
  • ✅ Internet KHÔNG thể kết nối vào EC2 Private (inbound blocked)
  • ✅ EC2 Private không có public IP (ẩn danh trên internet)
  • ✅ Tất cả outbound traffic đi qua NAT Gateway với Elastic IP

💰 Lưu ý về Chi phí:

  • NAT Gateway: $0.045/giờ ($32/tháng)
  • Data processing: ~$0.045/GB
  • Elastic IP: Miễn phí khi đang được NAT Gateway sử dụng
  • Tổng ước tính: ~$35-50/tháng tùy lượng data transfer

⚠️ Quan trọng: Nhớ xóa NAT Gateway khi không sử dụng để tránh phí không cần thiết. Chúng ta sẽ thực hiện cleanup ở phần cuối workshop.

💡 Best Practices cho Production:

  1. High Availability: Tạo NAT Gateway ở mỗi AZ
  2. Monitoring: Theo dõi metrics như BytesOutToDestination, BytesInFromSource
  3. Cost Optimization: Xem xét VPC Endpoints cho AWS services để giảm data transfer qua NAT
  4. Backup Route: Có kế hoạch dự phòng nếu NAT Gateway gặp sự cố

✅ Hoàn thành: Bạn đã tạo thành công NAT Gateway và cấu hình routing cho private subnets. EC2 Private instance giờ đã có thể truy cập internet một cách an toàn!