Score:1

กำหนดเส้นทางการรับส่งข้อมูลทั้งหมดผ่าน Wireguard peer

ธง gh

ฉันมีการตั้งค่า Wireguard VPN ที่มีลักษณะดังนี้:

P1 ---- S ---- P ---- แลน
พx -----|
  • S (ip 192.168.60.1) เป็นเซิร์ฟเวอร์ WG ที่ทำงานบน Ubuntu 20.04 โดยเปิดใช้งาน ufw โดยมี IP สาธารณะ (ใช้อินเทอร์เฟซ wg0)
  • P (ip 192.168.60.2) เป็นเพียร์ WG ที่ทำงานอยู่เบื้องหลัง CGNAT โดยไม่มี IP สาธารณะ เชื่อมต่อกับ LAN ของตนเอง
  • P1..Px คือเพื่อน WG คนอื่นๆ (ip 192.168.60.1x)

Ufw มีการกำหนดค่าดังต่อไปนี้:

ถึงการดำเนินการจาก
-- ------ ----
22/tcp อนุญาตได้ทุกที่
51820/udp อนุญาตได้ทุกที่

ที่ใดก็ได้บน eth0 อนุญาต FWD ที่ใดก็ได้บน wg0
ที่ใดก็ได้บน wg0 อนุญาต FWD ที่ใดก็ได้บน eth0
ที่ใดก็ได้บน wg0 อนุญาต FWD ที่ใดก็ได้บน wg0

ฉันต้องการให้การรับส่งข้อมูลทั้งหมดที่มาจากเพียร์ P1..Px ถูกกำหนดเส้นทางผ่าน P

ฉันลองทำสิ่งต่อไปนี้ แต่ไม่สำเร็จ:

  • ใน P1 ฉันตั้งค่า AllowedIPs สำหรับ S เป็น 0.0.0.0/0 ใน S ฉันตั้งค่า AllowedIPs สำหรับ P เป็น 0.0.0.0/0 - การกำหนดค่านี้ทำให้ S ไม่สามารถเข้าถึงได้ผ่าน eth0 (และยังไม่ได้กำหนดเส้นทางใด ๆ ไปยัง P)

  • ใน P1 ฉันตั้งค่า AllowedIPs สำหรับ S เป็น 0.0.0.0/0 ใน S ฉันลองกำหนดค่าการกำหนดเส้นทางตามนโยบายตาม IP ต้นทาง:

     กฎ sudo ip เพิ่มจาก 192.168.60.0/24 ค้นหา 200
     เส้นทาง sudo ip เพิ่มค่าเริ่มต้นผ่าน 192.168.60.2 dev wg0 ตาราง 200
    

    ซึ่งจะป้องกันไม่ให้ P1 เชื่อมต่อกับสิ่งอื่นที่ไม่ใช่ 192.168.60.0/24

Score:2
ธง in

คุณควรเริ่มต้นด้วยการใช้ ตาราง=ปิด ใน wg-quick conf ทั้ง S และ P ค่าของ IP ที่อนุญาต= จะไม่ทำให้เกิดการเปลี่ยนแปลงกับกฎการกำหนดเส้นทาง / นโยบายเกี่ยวกับเส้นทางเหล่านั้น

แก้ไข: ที่จริงมันควรจะออกไป ตาราง= ไม่แตะต้อง P เว้นแต่คุณต้องการ IP ที่อนุญาต= ของ S มันจะเป็น 0.0.0.0/0 แทน 192.168.60.0/24 ด้วยเหตุผลบางประการ เช่น ต้องการการรับส่งข้อมูลที่มาจากตัวเองเพื่อกำหนดเส้นทาง S คุณไม่จำเป็นต้องยุ่งกับเส้นทางและกฎการกำหนดเส้นทางบน P ด้วยตัวเองแม้แต่คำนำหน้าใน ที่อยู่=192.168.60.2/24 ควรได้รับการกำหนดค่าเส้นทางที่จำเป็น ย่อหน้าถัดไปอาจใช้ไม่ได้กับสิ่งที่คุณต้องการ แม้ว่าอาจให้ข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับวิธีการทำงานของสิ่งต่างๆ

และคุณควรใช้ซับเน็ต IP เพิ่มเติมสำหรับ เอส แอนด์ พี, เช่น. 192.168.59.0/30. สิ่งนี้จะช่วยให้คุณไม่ต้องวุ่นวายกับกฎ ip เพิ่มเติม อย่าลืมเพิ่มเส้นทางเครือข่ายย่อยสำหรับ 192.168.60.0/24 บน P แม้ว่าเช่นเดียวกับ ตาราง=ปิดเฉพาะเส้นทางคำนำหน้าเท่านั้นที่จะถูกเพิ่มโดยเคอร์เนลสำหรับคำนำหน้าใน ที่อยู่= เขตข้อมูล ใช้ประโยชน์ได้ดี โพสต์อัพ= (และ ก่อนดาวน์=) btw.

ฉันไม่คิดว่าคุณต้องการกำหนดเส้นทางการรับส่งข้อมูลที่มาจาก S เองไปยัง P ดังนั้นคุณอาจต้องการกฎ ip ต่อไปนี้แทน:

# กฎ ip เพิ่ม iif wg0 จาก 192.168.60.0/24 ค้นหา 200

หากคุณต้องการกำหนดเส้นทางเช่น การรับส่งข้อมูลนอกเหนือจากเซิร์ฟเวอร์ ssh และ wireguard ตอบกลับไปยัง P คุณยังสามารถมี:

# กฎ ip เพิ่ม iif lo ค้นหา 200
# กฎ ip เพิ่ม iif lo ipproto tcp sport 22 ค้นหาหลัก
# กฎ ip เพิ่ม iif lo ipproto udp sport 51820 ค้นหาหลัก

หมายเหตุ: คุณไม่สามารถจับคู่กับ จาก 192.168.60.1 เพิ่มในกฎข้อแรกและละเว้นอีกสองข้อ เนื่องจากสำหรับการเข้าชมที่ไม่ตอบกลับ ที่อยู่ต้นทางมักจะถูกเลือก (หากไม่เสมอไป) ตามเส้นทางที่ตัดสินใจ -- ยังไม่ได้ตั้งค่า ณ จุดนี้

โปรดทราบว่าลำดับของคำสั่งโดยปกติจะกำหนดลำดับความสำคัญ ดังนั้นโปรดเพิ่มกฎ "superset" ก่อนกฎ "subset" มิฉะนั้นกฎหลังจะถูกลบล้างโดยกฎก่อนหน้า

นอกจากนี้ยังควรเก็บไว้ โต๊ะ 200 ว่างเปล่าจนกว่ากฎความปรารถนาทั้งหมดจะอยู่ในตำแหน่ง มิฉะนั้น การเข้าถึงระยะไกลของโฮสต์อาจถูกตัดออก

ในที่สุด nexthop ก็ไร้ความหมายในเส้นทางไปยังอุโมงค์ L3:

# เส้นทาง ip เพิ่ม dev wg0 ตารางเริ่มต้น 200

ป.ล. ตรวจสอบให้แน่ใจว่าคุณไม่ได้อนุญาตการส่งต่อ IP ในไฟร์วอลล์ แต่ให้เปิดใช้งานด้วย sysctl

Andrija Kovačević avatar
gh flag
ขอบคุณสำหรับคำแนะนำ - ฉันจัดการเพื่อให้มันใช้งานได้กับการกำหนดค่าต่อไปนี้ (ทุกอย่างทำบน S): - เพิ่ม Table = off ไปที่ wg0.conf - ตั้งค่า AllowedIPs = 0.0.0.0/0 สำหรับ P (ไม่แน่ใจว่าจำเป็นหรือไม่) - เพิ่มสิ่งต่อไปนี้ใน PostUp: กฎ ip เพิ่ม iif wg0 จาก 192.168.60.0/24 ค้นหา 200; เส้นทาง ip เพิ่มค่าเริ่มต้นผ่าน 192.168.60.2 dev wg0 ตาราง 200; - เพิ่มสิ่งต่อไปนี้ใน PostDown: กฎ ip ลบ iif wg0 จาก 192.168.60.0/24 ค้นหา 200; เส้นทาง ip ลบค่าเริ่มต้นผ่าน 192.168.60.2 dev wg0 ตาราง 200;
Tom Yan avatar
in flag
ฉันแก้ไขคำตอบแล้ว ดูว่ามันทำให้คุณเข้าใจอะไรมากขึ้นหรือไม่

โพสต์คำตอบ

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