เกตเวย์ NAT และซับเน็ตส่วนตัว
อนุญาตให้ทรัพยากรในซับเน็ตส่วนตัวเข้าถึงอินเทอร์เน็ตได้โดยไม่เปิดให้เข้าถึงโดยตรง ผ่านเกตเวย์ NAT ที่มีการจัดการ
เกตเวย์ NAT และซับเน็ตส่วนตัว เป็นบทเรียน Cloud & IT Cert Prep ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cloud & IT Cert Prep และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cloud & IT Cert Prep มีบทเรียนทั้งหมด 4 บทเรียน
ปัญหาการเข้าถึงอินเทอร์เน็ตของ subnet ส่วนตัว
ทรัพยากรใน subnets ส่วนตัว มีเฉพาะที่อยู่ IP ส่วนตัวและไม่มีเส้นทางไปยัง Internet Gateway จึงไม่สามารถเริ่มการเชื่อมต่อขาออกไปยังอินเทอร์เน็ตได้ แต่ทรัพยากรเหล่านี้มัก จำเป็น ต้องเข้าถึงอินเทอร์เน็ต เช่น เพื่อดาวน์โหลดแพตช์ OS ดึงอิมเมจ Docker เรียกใช้ API ของผู้ให้บริการภายนอก หรืออัปเดตซอฟต์แวร์ วิธีแก้คือกำหนดเส้นทางการรับส่งข้อมูลจาก subnet ส่วนตัวผ่านอุปกรณ์ที่เข้าถึงอินเทอร์เน็ตได้และทำ NAT (การแปลที่อยู่เครือข่าย) โดยซ่อน IP ส่วนตัวไว้เบื้องหลัง IP สาธารณะ AWS มีสองตัวเลือก ได้แก่ NAT Gateway (แบบมีการจัดการ) และ NAT Instance ที่จัดการเอง (แบบเดิม)
NAT Gateway: NAT ขาออกแบบมีการจัดการ
NAT Gateway เป็นบริการที่มีการจัดการอย่างเต็มรูปแบบและพร้อมใช้งานสูง ซึ่งช่วยให้อินสแตนซ์ใน subnets ส่วนตัวเริ่มการเชื่อมต่อขาออกไปยังอินเทอร์เน็ตได้ พร้อมปิดกั้นการรับส่งข้อมูลขาเข้าที่ไม่ได้ร้องขอ NAT Gateway อยู่ใน subnet สาธารณะ มี Elastic IP และขยายขนาดแบนด์วิดท์ได้โดยอัตโนมัติสูงสุด 100 Gbps คุณไม่จำเป็นต้องแพตช์ ปรับขนาด หรือจัดการโครงสร้างพื้นฐานเบื้องหลัง NAT Gateway จะแปล IP ต้นทางส่วนตัวของแพ็กเก็ตขาออกเป็น EIP ของตนเอง จากนั้นส่งการตอบกลับกลับไปยัง IP ส่วนตัวเดิม
# Create a NAT Gateway in the public subnet
aws ec2 allocate-address --domain vpc # Get an EIP
aws ec2 create-nat-gateway \
--subnet-id subnet-public-1a \
--allocation-id eipalloc-12345678 \
--tag-specifications 'ResourceType=natgateway,Tags=[{Key=Name,Value=nat-gw-1a}]'การกำหนดเส้นทางการรับส่งข้อมูลของซับเน็ตส่วนตัวผ่าน NAT
หลังจากสร้าง NAT Gateway แล้ว ให้เพิ่มเส้นทางลงในตารางเส้นทางของซับเน็ตส่วนตัว โดยมีปลายทางเป็น 0.0.0.0/0 → ID ของ NAT Gateway การดำเนินการนี้จะทำให้ข้อมูลทั้งหมดจากอินสแตนซ์ในซับเน็ตส่วนตัวที่มุ่งหน้าไปยังอินเทอร์เน็ตถูกส่งไปยัง NAT Gateway จากนั้น NAT Gateway จะส่งต่อผ่าน Internet Gateway ไปยังอินเทอร์เน็ต ตารางเส้นทางยังคงมีเส้นทาง VPC ภายในเครื่อง (เช่น 10.0.0.0/16 → local) สำหรับการรับส่งข้อมูลภายใน หากไม่มีรายการเส้นทางนี้ อินสแตนซ์ในซับเน็ตส่วนตัวจะยังคงไม่สามารถเข้าถึงอินเทอร์เน็ตได้ แม้ว่าจะปรับใช้ NAT Gateway แล้วก็ตาม
# Add route in private subnet's route table pointing to NAT gateway
aws ec2 create-route \
--route-table-id rtb-private-app-1a \
--destination-cidr-block 0.0.0.0/0 \
--nat-gateway-id nat-12345678สถาปัตยกรรม NAT Gateway แบบหลาย AZ
NAT Gateway จะเจาะจงกับ AZ โดยจะจัดการได้เฉพาะข้อมูลจากซับเน็ตใน AZ เดียวกันเท่านั้น เพื่อให้มีความพร้อมใช้งานสูง ให้ปรับใช้ NAT Gateway หนึ่งรายการต่อ AZ และสร้างตารางเส้นทางส่วนตัวที่เจาะจงกับแต่ละ AZ โดยตารางเส้นทางส่วนตัวใน AZ-a จะกำหนดเส้นทาง 0.0.0.0/0 ไปยัง NAT-GW ใน AZ-a ส่วนตารางเส้นทางส่วนตัวใน AZ-b จะกำหนดเส้นทางไปยัง NAT-GW ใน AZ-b วิธีนี้ช่วยหลีกเลี่ยงค่าธรรมเนียมการถ่ายโอนข้อมูลระหว่าง AZ และทำให้มั่นใจได้ว่า หาก AZ-a ล้มเหลว อินสแตนซ์ใน AZ-b ซึ่งมี NAT ของตนเองจะยังคงเข้าถึงอินเทอร์เน็ตได้
# Architecture: two NAT gateways, two private route tables
# NAT-GW-1a in subnet-public-1a --> rtb-private-1a
# NAT-GW-1b in subnet-public-1b --> rtb-private-1b
# Associate private-1a subnets with rtb-private-1a (NAT-GW-1a)
aws ec2 associate-route-table \
--route-table-id rtb-private-1a \
--subnet-id subnet-private-app-1aNAT Gateway เทียบกับ NAT Instance
NAT Instance คืออินสแตนซ์ EC2 ที่คุณต้องจัดการเองและใช้งาน NAT AMI ซึ่งเป็นแนวทางแบบเดิมก่อนที่จะมี NAT Gateway NAT Instance กำหนดให้คุณต้องปิดการตรวจสอบต้นทาง/ปลายทางบนอินสแตนซ์ EC2 จัดการแบนด์วิดท์และการปรับขนาด แพตช์ระบบปฏิบัติการ และจัดการเมื่อเกิดความล้มเหลว NAT Instance มีราคาถูกกว่าสำหรับกรณีใช้งานที่มีแบนด์วิดท์ต่ำมาก และสามารถใช้เป็นโฮสต์ Bastion ได้ ส่วน NAT Gateways เป็นตัวเลือกที่แนะนำสำหรับการใช้งานจริง เนื่องจากมีการจัดการให้ทั้งหมด ปรับขนาดโดยอัตโนมัติ มี SLA ความพร้อมใช้งาน 99.99% ภายใน AZ และไม่จำเป็นต้องแพตช์ ข้อสอบเคยทดสอบการเปรียบเทียบนี้มาแล้วในอดีต
# For NAT Instance: disable source/dest check (required!)
aws ec2 modify-instance-attribute \
--instance-id i-nat-instance-id \
--no-source-dest-checkค่าบริการ NAT Gateway
ค่าบริการ NAT Gateway มีสองส่วน ได้แก่ ค่าบริการรายชั่วโมง ต่อ NAT Gateway (ประมาณ 0.045 ดอลลาร์ต่อชั่วโมงใน us-east-1 หรือประมาณ 32 ดอลลาร์ต่อเดือน) และ ค่าประมวลผลข้อมูลต่อ GB (ประมาณ 0.045 ดอลลาร์ต่อ GB ใน us-east-1) สำหรับเวิร์กโหลดที่ถ่ายโอนข้อมูลจำนวนมากผ่าน NAT เช่น การดึงอิมเมจคอนเทนเนอร์ขนาดใหญ่หรือการดาวน์โหลดเป็นจำนวนมาก ต้นทุนการประมวลผลข้อมูลอาจเป็นค่าใช้จ่ายหลักได้ คุณสามารถปรับต้นทุน NAT ให้เหมาะสมได้โดยกำหนดเส้นทางข้อมูล S3 และ DynamoDB ผ่าน VPC Gateway Endpoints (ไม่ผ่าน NAT โดยสิ้นเชิงและไม่มีค่าใช้จ่าย) และกำหนดเส้นทางการเรียกใช้ API ของ AWS ผ่าน VPC Interface Endpoints แทนการส่งผ่าน NAT
การออกแบบซับเน็ตส่วนตัวสำหรับ RDS
อินสแตนซ์ฐานข้อมูลใน ซับเน็ตส่วนตัว ไม่ควรกำหนดเส้นทางผ่าน NAT Gateway เนื่องจากไม่มีเหตุผลที่ฐานข้อมูลจะเริ่มการเชื่อมต่อไปยังอินเทอร์เน็ต ฐานข้อมูลต้องรับการเชื่อมต่อจากชั้นแอปพลิเคชันภายใน VPC เท่านั้น และอาจต้องเข้าถึงบริการของ AWS เช่น S3 (สำหรับการส่งออก/นำเข้า) ผ่าน VPC endpoint สำหรับการแพตช์และอัปเดตฐานข้อมูล RDS เป็นบริการที่มีการจัดการให้ ดังนั้นคุณจึงไม่ต้องใช้แพตช์ระบบปฏิบัติการโดยตรง สำหรับฐานข้อมูลที่จัดการเองบน EC2 ให้ใช้ Systems Manager Patch Manager ซึ่งสามารถแพตช์ผ่าน SSM ได้โดยไม่ต้องเข้าถึงอินเทอร์เน็ต หากคุณกำหนดค่า SSM VPC endpoint ไว้แล้ว
NAT Gateway และความปลอดภัย
NAT Gateway ให้บริการ NAT แบบมีสถานะสำหรับการรับส่งข้อมูลขาออกเท่านั้น โดยอนุญาตการเชื่อมต่อขาออกที่เริ่มต้นจากภายในและการตอบกลับของการเชื่อมต่อเหล่านั้น แต่บล็อกข้อมูลขาเข้าที่ไม่ได้ร้องขอทั้งหมด NAT Gateway ไม่ใช่ไฟร์วอลล์ เพราะไม่ได้ตรวจสอบหรือกรองเนื้อหาของข้อมูล สำหรับการกรองข้อมูลขาออก เช่น อนุญาตเฉพาะโดเมนปลายทางหรือ IP ที่ระบุจากซับเน็ตส่วนตัว คุณต้องมีตัวควบคุมเพิ่มเติม ได้แก่ AWS Network Firewall ที่ปรับใช้ใน VPC หรืออุปกรณ์ไฟร์วอลล์จากผู้ให้บริการภายนอกที่อยู่หลัง Gateway Load Balancer กลุ่มความปลอดภัยและ NACL ยังคงมีผลกับอินสแตนซ์ในซับเน็ตส่วนตัว ไม่ว่าจะใช้ NAT หรือไม่ก็ตาม
Private NAT Gateway
นอกเหนือจาก NAT Gateway แบบสาธารณะ (ที่มี EIP สำหรับการเข้าถึงอินเทอร์เน็ต) แล้ว AWS ยังรองรับ private NAT Gateway ที่ไม่มี EIP ด้วย private NAT Gateway ใช้แปลงที่อยู่ IP ส่วนตัวสำหรับข้อมูลระหว่าง VPC หรือระหว่าง VPC กับเครือข่ายภายในองค์กร เมื่อช่วง CIDR ทับซ้อนกัน ตัวอย่างเช่น หาก VPC-A (10.0.0.0/16) ต้องสื่อสารกับเครือข่ายภายในองค์กรที่ใช้ 10.0.0.0/16 เช่นเดียวกัน private NAT Gateway ใน VPC-A จะแปลง IP ต้นทางเป็นช่วงที่ไม่ทับซ้อนกัน ก่อนกำหนดเส้นทางผ่าน Transit Gateway ไปยังเครือข่ายภายในองค์กร
การตรวจสอบตัวชี้วัดของ NAT Gateway
ตรวจสอบสถานะและประสิทธิภาพของ NAT Gateway ผ่าน ตัวชี้วัด CloudWatch ตัวชี้วัดสำคัญ ได้แก่ ActiveConnectionCount (จำนวนการเชื่อมต่อ TCP ที่ใช้งานอยู่ในปัจจุบันผ่าน NAT), BytesInFromDestination / BytesInFromSource (การถ่ายโอนข้อมูลทั้งสองทิศทาง), PacketDropCount (แพ็กเก็ตที่ถูกทิ้ง ซึ่งบ่งชี้ถึงข้อจำกัดด้านแบนด์วิดท์หรือข้อผิดพลาด) และ ErrorPortAllocation (NAT ใช้การจัดสรรพอร์ตจนหมด ซึ่งอาจบ่งชี้ว่าพอร์ตไม่เพียงพอเนื่องจากมีการเชื่อมต่อมากเกินไป) NAT Gateway แต่ละรายการรองรับการเชื่อมต่อพร้อมกันได้สูงสุด 55,000 รายการต่อปลายทางที่ไม่ซ้ำกัน หากเกินจำนวนนี้ การเชื่อมต่ออาจถูกทิ้ง
# Get NAT Gateway active connection count
aws cloudwatch get-metric-statistics \
--namespace AWS/NATGateway \
--metric-name ActiveConnectionCount \
--dimensions Name=NatGatewayId,Value=nat-12345678 \
--start-time 2024-01-01T00:00:00Z \
--end-time 2024-01-01T01:00:00Z \
--period 300 --statistics Maximumกรณีที่ซับเน็ตส่วนตัวไม่จำเป็นต้องใช้ NAT
ไม่ใช่ทุกเวิร์กโหลดในซับเน็ตส่วนตัวที่จำเป็นต้องใช้ NAT Gateway ให้พิจารณารูปแบบการเข้าถึง หากอินสแตนซ์จำเป็นต้องสื่อสารเฉพาะกับทรัพยากร VPC อื่นและบริการ AWS ที่เข้าถึงได้ผ่าน VPC endpoints (S3, DynamoDB, SSM, ECR, Secrets Manager) คุณสามารถยกเลิก NAT Gateway ได้ทั้งหมด ซึ่งช่วยประหยัดค่าบริการประมาณ 32 ดอลลาร์ต่อเดือนต่อ AZ รวมถึงค่าประมวลผลข้อมูล รูปแบบนี้เหมาะอย่างยิ่งสำหรับไมโครเซอร์วิสส่วนตัวอย่างสมบูรณ์ที่ใช้ VPC Interface Endpoints เพื่อเข้าถึงบริการ AWS ทั้งหมด ให้ประเมินแต่ละบริการที่อินสแตนซ์ของคุณเรียกใช้ และตรวจสอบว่า Gateway Endpoint ที่ไม่มีค่าใช้จ่าย หรือ Interface Endpoint แบบมีค่าใช้จ่าย สามารถใช้แทน NAT ได้หรือไม่
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจแนวคิดของ AWS Solutions Architect (SAA-C03) จากบทเรียนนี้
สรุปบทเรียน
ในบทเรียนนี้ คุณได้เรียนรู้ว่า NAT Gateways ทำให้อินสแตนซ์ในซับเน็ตส่วนตัวเข้าถึงอินเทอร์เน็ตขาออกได้ โดยแปลง IP ส่วนตัวเป็น Elastic IP คุณต้องเพิ่มเส้นทาง 0.0.0.0/0 ในตารางเส้นทางของซับเน็ตส่วนตัว โดยชี้ไปยัง NAT Gateway และ ควรปรับใช้ NAT Gateway หนึ่งรายการต่อ AZ เพื่อให้มีความพร้อมใช้งานสูงและหลีกเลี่ยงค่าบริการข้อมูลข้าม AZ บทถัดไปเราจะเปรียบเทียบ Network ACL กับ Security Groups เพื่อสร้างการป้องกัน VPC แบบหลายชั้น
เรียนรู้ Cloud & IT Cert Prep ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 150
- บทเรียน
- 600
คำถามที่พบบ่อย
บทเรียน “เกตเวย์ NAT และซับเน็ตส่วนตัว” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “เกตเวย์ NAT และซับเน็ตส่วนตัว” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cloud & IT Cert Prep ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cloud & IT Cert Prep มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “เกตเวย์ NAT และซับเน็ตส่วนตัว”
อนุญาตให้ทรัพยากรในซับเน็ตส่วนตัวเข้าถึงอินเทอร์เน็ตได้โดยไม่เปิดให้เข้าถึงโดยตรง ผ่านเกตเวย์ NAT ที่มีการจัดการ คุณปฏิบัติ Cloud & IT Cert Prep ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cloud & IT Cert Prep หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cloud & IT Cert Prep บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “เกตเวย์ NAT และซับเน็ตส่วนตัว” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cloud & IT Cert Prep นี้ได้ไหม
ได้ บทเรียน Cloud & IT Cert Prep ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- สถาปัตยกรรม VPC และบล็อก CIDR
- เกตเวย์อินเทอร์เน็ตและตารางเส้นทาง
- เกตเวย์ NAT และซับเน็ตส่วนตัว
- ACL เครือข่ายเทียบกับกลุ่มความปลอดภัย