ฉันลบคำตอบดั้งเดิมของฉันเพราะฉันไม่มั่นใจอย่างเต็มที่ว่าถูกต้อง ฉันมีเวลาพอที่จะตั้งค่าเครือข่ายเสมือนเล็ก ๆ ของ VM เพื่อจำลองเครือข่ายที่เป็นปัญหา นี่คือชุดของกฎไฟร์วอลล์ที่เหมาะกับฉัน (ในiptables-saveรูปแบบสำหรับnatตารางเท่านั้น):
-A PREROUTING -d 89.179.245.232/32 -p tcp -m multiport --dports 22,25,80,443 -j DNAT --to-destination 192.168.2.10
-A POSTROUTING -s 192.168.2.0/24 -o ppp0 -j MASQUERADE
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.2.10/32 -p tcp -m multiport --dports 22,25,80,443 -j MASQUERADE
POSTROUTINGกฎข้อแรกคือวิธีการแบ่งปันการเชื่อมต่ออินเทอร์เน็ตกับ LAN อย่างตรงไปตรงมา ฉันทิ้งไว้ที่นั่นเพื่อความสมบูรณ์
PREROUTINGกฎและครั้งที่สองPOSTROUTINGกฎร่วมกันสร้างแน็ที่เหมาะสมเพื่อให้การเชื่อมต่อที่ไปยังเซิร์ฟเวอร์ผ่านทางที่อยู่ IP ภายนอกสามารถเกิดขึ้นได้โดยไม่คำนึงว่าการเชื่อมต่อมาจากภายนอกหรือจากภายในระบบ LAN เมื่อไคลเอนต์บน LAN เชื่อมต่อกับเซิร์ฟเวอร์ผ่านที่อยู่ IP ภายนอกเซิร์ฟเวอร์จะเห็นการเชื่อมต่อที่มาจากที่อยู่ IP ภายในของเราเตอร์ (192.168.2.1)
ที่น่าสนใจก็คือปรากฎว่ามีกฎการ POSTROUTING ที่สองที่สามารถใช้งานได้หลายรูปแบบ หากเป้าหมายถูกเปลี่ยนเป็น-j SNAT --to-source 192.168.2.1เอฟเฟกต์คือ (ไม่น่าแปลกใจ) เหมือนกับMASQUERADE: เซิร์ฟเวอร์จะเห็นการเชื่อมต่อจากไคลเอนต์ LAN ในพื้นที่ว่าเกิดจากที่อยู่ IP ภายในของเราเตอร์ ในทางกลับกันหากเป้าหมายถูกเปลี่ยน-j SNAT --to-source 89.179.245.232เป็น NATs ยังคงใช้งานได้ แต่ในเวลานี้เซิร์ฟเวอร์จะเห็นการเชื่อมต่อจากไคลเอนต์ LAN ในพื้นที่ว่ามาจากที่อยู่ IP ภายนอกของเราเตอร์(89.179.245.232)
สุดท้ายโปรดทราบว่าต้นฉบับPREROUTING/ DNATกฎของคุณด้วย-i ppp0ไม่ทำงานเนื่องจากกฎไม่ตรงกับแพ็กเก็ตที่มาจากไคลเอนต์ LAN (เนื่องจากสิ่งเหล่านั้นไม่ได้ป้อนเราเตอร์ผ่านทางppp0อินเทอร์เฟซ) มันเป็นไปได้ที่จะทำให้มันทำงานได้โดยการเพิ่มPREROUTINGกฎข้อที่สองสำหรับไคลเอนต์ LAN ภายใน แต่มันจะไม่เหมาะสม (IMO) และจะต้องอ้างถึงที่อยู่ IP ภายนอกอย่างชัดเจน
ตอนนี้แม้หลังจากวาง "กิ๊บ NAT" (หรือ "วนรอบ NAT" หรือ "NAT reflection" หรืออะไรก็ตามที่ใครอยากโทรหา) วิธีแก้ปัญหาอย่างละเอียดฉันก็ยังเชื่อว่าโซลูชัน DNS แบบแยกส่วน - - ด้วยไคลเอนต์ภายนอกการแก้ไข IP ภายนอกและไคลเอนต์ภายในการแก้ไขกับ IP ภายใน --- จะเป็นเส้นทางที่แนะนำให้เลือกมากกว่า ทำไม? เพราะผู้คนจำนวนมากเข้าใจว่า DNS ทำงานอย่างไรมากกว่าเข้าใจว่า NAT ทำงานอย่างไรและส่วนใหญ่ของการสร้างระบบที่ดีคือการเลือกใช้ชิ้นส่วนที่สามารถบำรุงรักษาได้ มีความเป็นไปได้ที่จะเข้าใจการตั้งค่า DNS และทำการบำรุงรักษาอย่างถูกต้องมากกว่าการตั้งค่า NAT แบบลับ (IMO)