เรากำลังใช้งาน Ubuntu 20.04 ใน AWS เรากำลังพยายามตั้งค่ากฎ iptables ดังนั้นทราฟฟิก MySQL ที่มีที่อยู่ IP จำลองจะถูกส่งต่อไปยังฐานข้อมูล MySql ที่ 172.31.6.173 ใน VPC เดียวกัน ให้ฉันอธิบาย:
ที่อยู่ IP ในงานนี้:
เซิร์ฟเวอร์ Ubuntu (แหล่งที่มา): 172.31.0.151
เซิร์ฟเวอร์ MySql (ปลายทาง): 172.31.6.173
MySql Dummy IP: 6.6.6.6
จาก 172.31.0.151 (ต้นทาง) เราจะเชื่อมต่อกับ mysql ที่ dummy IP (6.6.6.6) และมันจะเป็น NAT ไปยังปลายทาง (172.31.6.173)
กฎที่เราใช้:
sudo iptables -t nat -A PREROUTING -s 172.31.0.151 -d 6.6.6.6 -j DNAT --to-destination 172.31.6.173
sudo iptables -A ไปข้างหน้า -p tcp -d 172.31.6.173 -j ยอมรับ
บรรทัดแรกระบุการรับส่งข้อมูลใด ๆ จาก 172.31.0.151 โดยมีปลายทางเป็น 6.6.6.6 จะถูกส่งต่อไปยัง 172.31.6.173
บรรทัดที่สองยอมรับ tcp ทั้งหมดส่งต่อไปยัง 172.31.6.173
นี่เป็นกฎเดียวใน iptables ถ้าฉันเรียกใช้ sudo iptables -t แนท -L
ผลลัพธ์คือ:
ห่วงโซ่ PREROUTING (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
DNAT ทั้งหมด -- 172.31.0.151 6.6.6.6 ถึง:172.31.6.173
เชนอินพุท (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
Chain OUTPUT (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
ห่วงโซ่โพสต์ (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
อย่างไรก็ตามด้วยกฎสองข้อนี้จากเซิร์ฟเวอร์ต้นทาง (172.31.0.151) เมื่อฉันพยายามเข้าสู่ระบบ MySql ที่ IP จำลอง:
mysql -h 6.6.6.6 -u ชื่อผู้ใช้ -p
เอาต์พุต tcpdump: (เซิร์ฟเวอร์ MySql เป็นอินสแตนซ์ RDS ซึ่งหมายความว่าฉันไม่สามารถเข้าสู่ระบบเพื่อเรียกใช้ tcpdump ดังนั้นฉันจึงสามารถรับ tcpdump จากเซิร์ฟเวอร์ต้นทางเท่านั้น):
13:41:41.768171 IP 172.31.0.151.50374 > 6.6.6.6.mysql: ค่าสถานะ [S], seq
3441229166, ชนะ 62727, ตัวเลือก [mss 8961,sackOK,TS val 2723434614 ecr
0,nop,wscale 7], ความยาว 0
13:41:45.992114 IP 172.31.0.151.50374 > 6.6.6.6.mysql: ค่าสถานะ [S], seq
3441229166, ชนะ 62727, ตัวเลือก [mss 8961,sackOK,TS val 2723438838 ecr
0,nop,wscale 7], ความยาว 0
13:41:54.184186 IP 172.31.0.151.50374 > 6.6.6.6.mysql: ค่าสถานะ [S], seq
3441229166, ชนะ 62727, ตัวเลือก [mss 8961,sackOK,TS val 2723447030 ecr
0,nop,wscale 7], ความยาว 0
กฎ PREROUTING ไม่มีผล ความพยายามเข้าสู่ระบบยังคงมองหาเซิร์ฟเวอร์ที่ 6.6.6.6 แทนที่จะเป็น NAT ไปยังที่อยู่ IP จริงของ 172.31.6.173
คำแนะนำใด ๆ ที่จะได้รับการชื่นชม ขอขอบคุณ.