ฉันมีอินสแตนซ์ linux ec2 ที่มีสอง nics (eth0 และ eth2) นิคทั้งสองมี IP สาธารณะติดอยู่และสามารถออกไปยังอินเทอร์เน็ตได้ อินสแตนซ์ linux นี้ทำหน้าที่เป็นโหนดเกตเวย์สำหรับฉัน ส่งต่อทราฟฟิกจาก ec2 ในซับเน็ตส่วนตัวที่ไม่มีการเข้าถึงอินเทอร์เน็ต
สามารถส่งต่อการรับส่งข้อมูลจากอินสแตนซ์ ec2 ในซับเน็ตส่วนตัวไปยังอินสแตนซ์เกตเวย์นี้ในซับเน็ตสาธารณะ การรับส่งข้อมูลทั้งหมดในอินสแตนซ์เกตเวย์ได้รับบน eth0 ตอนนี้ฉันต้องการออกอินเทอร์เน็ตผ่าน eth1 ไม่ใช่ eth0 ฉันต้องการทำเช่นนั้นเพราะฉันต้องการให้โลกภายนอกเห็น IP ของ eth1 เป็น IP ต้นทาง
การปฏิบัติตามขั้นตอนเหล่านี้ช่วยให้ฉันบรรลุเป้าหมายได้
เส้นทาง ip เพิ่ม 10.0.0.0/23 <ซับเน็ตของเกตเวย์ cidr> dev eth2 ตาราง 2
กฎ ip เพิ่มจาก <private ec2 instance's ip> ตารางที่ 2
เส้นทาง ip เพิ่มค่าเริ่มต้นผ่าน 10.0.0.1 dev eth2 table 2
เส้นทาง ip ล้างแคช
iptables -A FORWARD --in-interface eth0 -j ACCEPT #accepts การรับส่งข้อมูลบน eth0
iptables --table nat -A POSTROUTING --out-interface eth2 -j MASQUERADE #ส่งต่อการรับส่งข้อมูลภายนอกผ่าน eth2
ด้วยการตั้งค่านี้ เมื่อฉันขดตัวนอกอินสแตนซ์ ec2 ในซับเน็ตส่วนตัว (ผ่านโหนดเกตเวย์) ฉันเห็นสิ่งที่ฉันคาดว่าจะเห็น (ซึ่งก็คือโลกภายนอกเห็นว่าคำขอนั้นมาจาก ip ของ eth1) แต่คำขอขดใช้เวลาจริงๆ เป็นเวลานาน (และบางครั้งก็หมดเวลา) ฉันจะบอกว่าประมาณ 5 ใน 10 คำขอสำเร็จ
ฉันพลาดอะไรไปที่นี่
ขอบคุณ
เคย์