Score:0

เซิร์ฟเวอร์ Wireguard มัลติฮอปสำหรับเพื่อนบางคน

ธง us

ฉันมีเซิร์ฟเวอร์ 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 ด้วย.

ไดอะแกรมของการตั้งค่า

cn flag
ฉันพบวิธีแก้ไขปัญหาของฉัน: [Chaining WireGuard Servers: สามารถ ping ทั้งสองจากไคลเอ็นต์ แต่ไม่สามารถเข้าถึงอินเทอร์เน็ตได้ ปัญหาการกำหนดเส้นทาง IP?](https://serverfault.com/questions/1080901/chaining-wireguard-servers-can-ping-both-from-client-but-cant-access-internet) â ดูว่ามันช่วยได้ไหม!
computerguy1 avatar
us flag
ขอบคุณที่ช่วยได้มาก ฉันตอบคำถามของคุณ หวังว่าจะมีคนรู้วิธีที่จะขยายการกำหนดค่าของคุณเพื่อเปิดใช้งานการกำหนดเส้นทางแบบเพียร์
A.B avatar
cl flag
A.B
ดูที่นั่นด้วย มันนอกเหนือจากการกำหนดเส้นทางและการจำกัดเพิ่มเติม (ไม่อนุญาตให้ทับซ้อนกัน): https://www.wireguard.com/#cryptokey-routing กฎ DNAT กำลังเปลี่ยนปลายทาง (10.42.1.2 จาก peer1 เสมอ) เหตุใดคุณจึงคาดหวังให้แตกต่างออกไป
A.B avatar
cl flag
A.B
ที่จริงฉันเดาว่าทำไม: iptables มักถูกเข้าใจผิดว่าเป็นเครื่องมือในการกำหนดเส้นทาง แต่ไม่ใช่ หากแพ็กเก็ตไม่ได้กำหนดเส้นทางไปยังอินเทอร์เฟซ WireGuard ด้วยเหตุผลบางอย่าง การแก้ไขปลายทางอาจไม่ใช่วิธีที่ถูกต้องในการทำให้แพ็กเก็ตมีเส้นทางไปที่นั่น ใช้เครื่องมือที่เหมาะสม: `ip route` (และบางครั้ง `ip rule`)
A.B avatar
cl flag
A.B
ฉันดูที่ปัญหานี้ สำหรับฉันวิธีแก้ปัญหาจะ: 1/ หลีกเลี่ยงการใช้ iptables ที่ไร้ประโยชน์ (และที่นี่เป็นอันตราย) 2/ ต้องการการกำหนดเส้นทางนโยบาย 3/ ต้องการอินเทอร์เฟซ WireGuard หลายระบบในบางระบบเพื่อเอาชนะข้อจำกัดที่มีอยู่ใน WireGuard: ไม่มีที่อยู่ทับซ้อนกันสำหรับการเลือกเพียร์ (ตรงกันข้ามกับเส้นทาง ที่สามารถแทนที่เส้นทางด้วยเส้นทางที่แคบกว่า)
cn flag
เมื่อพิจารณาจากประสบการณ์ของฉันกับ WG และความรู้ด้านเทคนิคที่จำกัด ฉันจะสร้างอินเทอร์เฟซ WG ที่แตกต่างกัน (wg0, wg1 ฯลฯ) สำหรับเชนต่างๆ ไม่เคยลองด้วยตัวเองแม้ว่า มันง่ายกว่านั้น
cn flag
ฉันได้เพิ่มคำตอบสำหรับคำถามที่ *อาจ* ปรับเปลี่ยนได้ง่ายกว่าสำหรับความต้องการของคุณ แค่หัวขึ้น! . ดูว่ามันจะช่วยได้หรือไม่

โพสต์คำตอบ

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