บน AWS เมื่อคุณสร้าง NLB คุณจะมีความเป็นไปได้ที่จะระบุรหัสอินสแตนซ์แทนที่อยู่ IP ของอินสแตนซ์ สิ่งนี้ทำให้ NLB รักษา IP ของไคลเอ็นต์
อย่างไรก็ตาม หากฉันกำหนดค่า NLB ให้กำหนดเป้าหมายอินสแตนซ์ในซับเน็ตส่วนตัวที่ตารางเส้นทางมีเส้นทางเริ่มต้นไปยังเกตเวย์ NAT การตอบสนองจะถูกส่งกลับผ่านอินเทอร์เฟซ NLB ไม่ใช่เกตเวย์ NAT ได้อย่างไร
พิจารณาสิ่งต่อไปนี้:
- VPC ที่มีบล็อก CIDR เป็น 10.0.0.0/16
- ซับเน็ตสาธารณะที่มีบล็อก CIDR เป็น 10.0.3.0/24
- ซับเน็ตส่วนตัวที่มีบล็อก CIDR เป็น 10.0.6.0/24
เครือข่ายย่อยสาธารณะมีเส้นทางเริ่มต้นไปยังเกตเวย์อินเทอร์เน็ต และเครือข่ายย่อยส่วนตัวมีเส้นทางเริ่มต้นไปยังเกตเวย์ NAT เกตเวย์ NAT มีอินเทอร์เฟซที่มี IP ส่วนตัว 10.0.3.12 และ NLB มีอินเทอร์เฟซที่มี IP ส่วนตัว 10.0.3.18
อินสแตนซ์ EC2 ที่มี IP 10.0.6.4 ถูกปรับใช้ในซับเน็ตส่วนตัวและเป็นส่วนหนึ่งของกลุ่มเป้าหมาย NLB อินสแตนซ์มีเส้นทางเริ่มต้นไปยังเราเตอร์ VPC ที่ 10.0.6.1 ภายในตารางเส้นทางระบบปฏิบัติการ
สมมติว่าแพ็กเก็ตที่มี IP ไคลเอนต์ 22.128.22.136 ถูกส่งต่อไปยังอินสแตนซ์ EC2 แล้วอินสแตนซ์ EC2 จะจัดการอย่างไรเพื่อส่งแพ็กเก็ตกลับไปที่ 10.0.3.18 ไม่ใช่ไปที่เกตเวย์ NAT ตารางเส้นทางเครือข่ายย่อยส่วนตัวมีเส้นทางเริ่มต้นเป็น 10.0.3.12
ฉันคิดว่า AWS "แทรก" เส้นทางไปยัง NLB สำหรับ IP ของไคลเอ็นต์ทันทีเมื่อแพ็กเก็ตมาถึงบนอินเทอร์เฟซ NLB อยากทราบรายละเอียดภายในครับ
กับ tcpdump
ในอินสแตนซ์ EC2 ฉันเห็น IP ไคลเอ็นต์ถูกรักษาไว้:
$ sudo tcpdump -n -i eth0 โฮสต์ 22.128.22.136 พอร์ต 80