Skip to main content

NAT Gateway & NAT Instance

NAT (Network Address Translation) ใช้เพื่อให้ Instance ใน Private Subnet สามารถออกอินเทอร์เน็ตได้ (เช่น อัปเดตซอฟต์แวร์) โดยไม่เปิดให้อินเทอร์เน็ตเข้ามาเชื่อมต่อกับ Instance ได้โดยตรง


NAT Gateway (Managed by AWS)

NAT Gateway เป็นบริการที่ AWS จัดการให้ทั้งหมด (Fully Managed) ไม่ต้องดูแลเรื่อง patching หรือ OS

  • รองรับ bandwidth ตั้งแต่ 5 Gbps และ scale ได้สูงสุดถึง 100 Gbps โดยอัตโนมัติ
  • ไม่ต้องกำหนด Security Group ให้ NAT Gateway
  • ต้องวาง NAT Gateway ใน Public Subnet และกำหนด Elastic IP ให้
  • Private Subnet จะมี Route ชี้ไปที่ NAT Gateway เพื่อให้ออกอินเทอร์เน็ตได้
  • NAT Gateway ถูกสร้างใน AZ เดียว หากต้องการ High Availability ต้องสร้าง NAT Gateway ในแต่ละ AZ ที่ใช้งาน
  • ใช้ IPv4 เท่านั้น (สำหรับ IPv6 ใช้ Egress-only Internet Gateway)

High Availability

  • NAT Gateway ทำงานแบบ per-AZ หากมี Private Subnet ใน 3 AZ ควรสร้าง NAT Gateway 3 ตัว (ตัวละ AZ)
  • หาก AZ ใด AZ หนึ่งล่ม NAT Gateway ของ AZ อื่นจะยังคงทำงานได้ปกติ
  • ไม่จำเป็นต้อง cross-AZ failover เพราะ resource ใน AZ ที่ล่มจะไม่สามารถใช้งานได้อยู่แล้ว

Regional NAT Gateway

  • สามารถสร้าง NAT Gateway ได้ในระดับ Region เพื่อรองรับ traffic จากหลาย AZ
  • แต่แนะนำให้สร้างแยกตาม AZ เพื่อความทนทานสูงสุด

ค่าใช้จ่าย

  • $0.045 ต่อชั่วโมง สำหรับ NAT Gateway
  • $0.045 ต่อ GB ของข้อมูลที่ผ่าน NAT Gateway
  • สำหรับการเข้าถึง S3 ควรใช้ Gateway Endpoint แทน (ฟรี) เพื่อประหยัดค่าใช้จ่าย

NAT Instance (Legacy)

NAT Instance เป็นวิธีเดิมที่ใช้ EC2 Instance ทำหน้าที่แปลง NAT แทน (ไม่แนะนำสำหรับ production ใหม่)

  • ต้องวางใน Public Subnet
  • ต้อง ปิด Source/Destination Check บน EC2 Instance (สำคัญมากสำหรับข้อสอบ)
  • ต้องจัดการ Security Group เอง
  • ต้องดูแล OS patching, scaling, failover ด้วยตนเอง
  • รองรับ port forwarding ได้ (NAT Gateway ไม่รองรับ)
  • สามารถใช้เป็น Bastion Host ได้ด้วย

เปรียบเทียบ NAT Gateway vs NAT Instance

คุณสมบัติNAT GatewayNAT Instance
การจัดการManaged by AWSSelf-managed
Bandwidth5-100 Gbps (auto scale)ขึ้นอยู่กับ instance type
AvailabilityHA ภายใน AZต้องจัดการเอง
Security Groupไม่ต้องกำหนดต้องกำหนดเอง
Source/Dest Checkไม่เกี่ยวข้องต้องปิด
Elastic IPต้องกำหนดต้องกำหนด
Port Forwardingไม่รองรับรองรับ
Bastion Hostไม่ได้ใช้ได้
ค่าใช้จ่ายตาม usage ($0.045/hr + data)ตาม instance type