Score:1

iptables PREROUTING ไม่มีผล

ธง ru
Cal

เรากำลังใช้งาน 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

คำแนะนำใด ๆ ที่จะได้รับการชื่นชม ขอขอบคุณ.

Score:1
ธง cl
A.B

ฉันถือว่ากฎของ OP ถูกเพิ่มลงในระบบ Ubuntu ด้วยที่อยู่ IP 172.31.0.151 ซึ่งเป็นระบบเดียวกับที่เริ่มต้นการเชื่อมต่อ mysql ไปยังที่อยู่จำลอง

ดังจะเห็นได้ในนี้ Netfilter และเครือข่ายทั่วไป แผนผัง: แพ็กเก็ตโฟลว์ใน Netfilter และ General Networking

  • แพ็กเก็ตแรกในโฟลว์ที่เริ่มต้นโดยกระบวนการในเครื่องไม่ได้ข้ามผ่าน nat/PREROUTING
  • แต่มันสำรวจ nat/OUTPUT
  • เฉพาะแพ็กเก็ตแรก (สถานะใหม่) ของการเชื่อมต่อข้ามผ่าน แนท ตาราง (ดังนั้นแพ็กเก็ตเพิ่มเติมเช่นการตอบกลับก็ไม่สำคัญอยู่ดี)

ดังนั้น nat/PREROUTING จึงไม่มีผลต่อการเปลี่ยนเส้นทางการเชื่อมต่อที่เริ่มต้นในเครื่อง สิ่งนี้ควรทำใน nat / OUTPUT เนื่องจากสิ่งนี้อาจเปลี่ยนแปลงแม้กระทั่งอินเทอร์เฟซที่จะใช้ (อาจไม่ใช่ในกรณีของ OP) สิ่งนี้จะทริกเกอร์ ตรวจสอบเส้นทางใหม่ ภายหลังเพื่อจัดการกรณีดังกล่าว

ในตอนท้ายควรเพิ่มกฎของคุณด้วย:

sudo iptables -t nat -A OUTPUT -s 172.31.0.151 -d 6.6.6.6 -j DNAT --to-destination 172.31.6.173

หากระบบมีที่อยู่ IP เพียงแห่งเดียว: 172.31.0.151, -s 172.31.0.151 กลายเป็นสิ่งฟุ่มเฟือย:

sudo iptables -t nat -A OUTPUT -d 6.6.6.6 -j DNAT --to-destination 172.31.6.173

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา