Score:0

ไคลเอนต์สองเครื่องที่อยู่เบื้องหลัง NAT บนการเชื่อมต่อ VPN เดียว ขยายไปยัง IP สาธารณะสองแห่งแยกกัน

ธง gf

ฉันกำลังมองหาวิธีส่งต่อทราฟฟิกขาออกบนที่อยู่ IPv4 แยกต่างหากสำหรับไคลเอนต์ต่างๆ ที่เชื่อมต่อผ่านอุโมงค์ VPN เดียวกัน เบื้องหลัง NAT

ตอนนี้ฉันกำลังส่งต่อพอร์ต 44158 จากที่อยู่ IPv4 สาธารณะหลายแห่งบนเซิร์ฟเวอร์ VPS X ไปยังไคลเอนต์หลายเครื่องที่เชื่อมต่อผ่านการเชื่อมต่อ VPN เดียว - จากเราเตอร์ที่อยู่เบื้องหลัง NAT พอร์ตอินพุต 44158 บนที่อยู่ IPv4 สาธารณะที่ได้รับไม่สามารถเปลี่ยนแปลงได้ และไคลเอ็นต์ที่อยู่หลังเราเตอร์จะได้รับข้อมูลบนพอร์ตที่ถูกต้อง 44158 เนื่องจากเราเตอร์ได้รับการตั้งค่าให้ส่งต่อไปยังพอร์ตที่ถูกต้องสำหรับไคลเอ็นต์แต่ละรายที่ปลายทาง

สิ่งนี้ทำได้ดังนี้:

iptables -t nat -A PREROUTING -d 103.143.72.84 -p tcp --dport 44158 -j DNAT --to-destination 192.168.52.2:44158
iptables -t nat -A PREROUTING -d 103.143.72.25 -p tcp --dport 44158 -j DNAT --to-destination 192.168.52.2:44159
iptables -t nat -A โพสต์ -s 192.168.52.0/24 -j MASQUERADE

ที่ไหน 192.168.0.2 คือเราเตอร์ที่ปลายทางซึ่งส่งต่อแพ็กเก็ตไปยัง NAT ภายในไปยังไคลเอนต์จาก 44158 ถึง 192.168.0.12:44158 และจาก 44159 ถึง 192.168.0.13:44158.

สิ่งที่ฉันพยายามทำให้สำเร็จคือการทำให้ทราฟฟิกขาออกทั้งหมดจาก 192.168.0.12 ออกไปจนถึง 103.143.72.84 และทราฟฟิกขาออกทั้งหมดจาก 192.168.0.13 ออกไปจนถึง 103.143.72.25 มีวิธีการทำเช่นนี้กับ iptables บนเซิร์ฟเวอร์ VPS X ?

ฉันมีการตั้งค่าฮาร์ดแวร์นี้ซึ่งไม่สามารถเปลี่ยนแปลงได้ ไคลเอ็นต์ A (192.168.0.12) & B (192.168.0.13) เชื่อมต่อกับเราเตอร์ N บน LAN และอยู่บนเครือข่าย NAT 192.168.0.0/24 เราเตอร์ N เชื่อมต่อผ่าน VPN ไปยังเซิร์ฟเวอร์ VPS X และได้รับ IP 192.168.52.2 Server X มีที่อยู่สาธารณะ IPv4 หลายที่อยู่ (103.143.72.84 และ 103.143.72.25) และฉันต้องการกำหนด IP ไคลเอ็นต์แต่ละรายการเป็น IP สาธารณะขาออกแยกต่างหากบนเซิร์ฟเวอร์ X

  • IP ที่ใช้มีวัตถุประสงค์เพื่อเป็นตัวอย่าง;
  • เพื่อความเรียบง่ายฉันเก็บตัวอย่างกับลูกค้าสองราย แต่มีวิธีที่เกี่ยวข้องมากกว่านี้
Score:1
ธง in

การใช้การจราจรขาออก iptables -t nat -A โพสต์ ...

และเพื่อระบุการใช้ที่อยู่ต้นทาง -j SNAT ไอพี

iptables -t nat -A โพสต์ -s 192.168.0.12 -j SNAT 103.143.72.84
iptables -t nat -A โพสต์ -s 192.168.0.13 -j SNAT 103.143.72.25

โปรดทราบว่าสิ่งเหล่านี้ต้องอยู่ก่อน global สวมหน้ากาก ถ้าคุณมีมันสำหรับช่วงนั้น

หาก IP ทั้งหมดเป็นช่วงเชิงเส้น มีวิธีอื่นในการ NAT ช่วง

gf flag
ขอขอบคุณ! ลองแล้ว `POSTROUTING -s 192.168.0.12 -j SNAT --to (และ --to source) 103.143.72.84` แต่ใช้ไม่ได้เพราะ `192.168.0.0/24` อยู่หลัง 192.168.52.2 (IP ที่กำหนดให้กับ เราเตอร์ไคลเอนต์ VPN) ดังนั้นเซิร์ฟเวอร์ VPS จึงไม่เห็นเครือข่ายนั้นทันที ฉันสงสัยว่ามันอาจใช้งานได้โดยใช้ conntrack ctorigsrc แต่สำหรับชีวิตของฉันฉันไม่สามารถเข้าใจได้
gf flag
-j MASQUERADE ที่ส่วนท้ายของ POSTROUTING จะส่งต่อทุกอย่างที่มาจาก 192.168.52.2 ซึ่งเป็น IP ทั้งหมดที่อยู่หลังเราเตอร์ใน 192.168.0.0/24 ผ่านที่อยู่ IPv4 ภายนอกเดียว ฉันใส่ SNAT ก่อนหน้านั้น แต่ไม่พบอะไรเลย 192.168.0.12 ไม่ได้อยู่ในเครือข่ายเดียวกัน แต่อยู่หลัง NAT 192.168.52.2
Nikita Kipriyanov avatar
za flag
จากนั้นเราเตอร์ VPN ของคุณจะเห็นไคลเอ็นต์ทั้งสองเป็นไคลเอ็นต์เดียว `192.168.52.2` มีวิธีสำหรับเราเตอร์ VPN ในการระบุและแยกแยะไคลเอนต์ได้อย่างน่าเชื่อถือหรือไม่? คุณสามารถให้ที่อยู่ IP ที่แตกต่างกัน ("คงที่") ได้หรือไม่? เช่น. ลบ NAT ออกจากระบบ 192.168.52.2 และตั้งค่าเส้นทางที่เหมาะสม ดังนั้นเราเตอร์ VPN ที่มีที่อยู่สาธารณะจะเห็นและแยกแยะเป็น 192.168.0.12 และ .13 โดยตรง หรืออย่างน้อย NAT ให้เป็น IP ที่แตกต่างกัน ไม่ใช่ 192.168.52.2 .
in flag
คุณต้องลบ NAT ออกจากอุปกรณ์ VPN ในกรณีนี้ เว้นแต่คุณจะทำ SNAT ที่นั่นได้แล้ว

โพสต์คำตอบ

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