ฉันมีเซิร์ฟเวอร์ Wireguard หลายตัวที่โฮสต์บนเซิร์ฟเวอร์ Ubuntu VPS มีการตั้งค่าเพียร์ในแต่ละเซิร์ฟเวอร์ VPN ฉันมีการตั้งค่าเซิร์ฟเวอร์ในการกำหนดค่า "ตาข่าย" และพวกเขาทั้งหมดสามารถ ping ซึ่งกันและกันได้โดยตรง เซิร์ฟเวอร์เปิดใช้งานการส่งต่อ ipv4ฉันสามารถเชื่อมต่อกับแต่ละเซิร์ฟเวอร์ในฐานะเพียร์และกำหนดเส้นทางการเชื่อมต่ออินเทอร์เน็ตของฉันผ่านเซิร์ฟเวอร์นั้น
ฉันต้องการส่งต่อเพื่อนบางคนผ่านเซิร์ฟเวอร์ Wireguard หลายตัว (มัลติฮอป) ในขณะเดียวกันก็ปล่อยให้เพื่อนบางคนเชื่อมต่ออินเทอร์เน็ตผ่าน Wireguard hop แรก ในที่สุดฉันตั้งใจที่จะควบคุมสิ่งนี้แบบไดนามิกด้วยแอปโหนดที่ดำเนินการตามกฎ iptables ที่เกี่ยวข้องตามที่กำหนด (หรืออะไรก็ตามที่อาจเป็นวิธีแก้ปัญหา)
ตัวอย่างเช่น:
เพียร์ 1 > เซิร์ฟเวอร์ 1 > เซิร์ฟเวอร์ 2 > อินเทอร์เน็ต
เพียร์ 2 > เซิร์ฟเวอร์ 1 > อินเทอร์เน็ต
เพียร์ 3 > เซิร์ฟเวอร์ 3 > อินเทอร์เน็ต
เพียร์ 4 > เซิร์ฟเวอร์ 2 > เซิร์ฟเวอร์ 1 > อินเทอร์เน็ต
สิ่งนี้จะเป็นไปได้ด้วยกฎ iptables หรือไม่ ฉันใช้เวลาสองสามวันในการอ่านโพสต์ที่คล้ายกันและลองทำสิ่งต่างๆ สิ่งที่ใกล้เคียงที่สุดที่ฉันได้มาคือการตั้งค่าต่อไปนี้บน Server1:
iptables -t nat -A PREROUTING -s 10.42.1.4(Peer1) -j DNAT --to-destination 10.42.1.2(Server2)
iptables -t nat -D โพสต์ -o wg0 -j MASQUERADE
โดยใช้ tcpdump -n -v -i wg0
ฉันเห็นแพ็กเก็ตถูกส่งจาก Server1 ไปยัง Server2 แต่ดูเหมือนว่ากฎ MAQUERADE กำลังเปลี่ยน IP ปลายทางหรือไม่ ฉันพยายามเพิ่ม iptables -t nat -A POSTROUTING -d 10.42.1.2 -j SNAT --to-source 10.42.1.4
ด้วย.
ไดอะแกรมของการตั้งค่า