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