Score:0

WireGuard รวม Hub และ Spoke กับ Point to Site

ธง us

ฉันต้องการโทโพโลยีแบบ Point to Site แต่เนื่องจากโฮสต์ "ไคลเอ็นต์" และ "เซิร์ฟเวอร์" ต่างก็อยู่ในเครือข่าย NAT ของตัวเอง ฉันจึงต้องพึ่งพาโฮสต์ที่สามในโทโพโลยี Hub and Spoke

การสร้างภาพ

โฮสต์ A (ฮับ)

[อินเตอร์เฟซ]
คีย์ส่วนตัว = 
ที่อยู่ = 10.201.50.1/32
ListenPort = 51820

PreUp = sysctl -w net.ipv4.ip_forward=1

[เพียร์]
คีย์สาธารณะ = 
IP ที่อนุญาต = 10.201.50.2/32

[เพียร์]
คีย์สาธารณะ = 
IP ที่อนุญาต = 10.201.50.3/32

โฮสต์ B (เซิร์ฟเวอร์)

[อินเตอร์เฟซ]
คีย์ส่วนตัว = 
ที่อยู่ = 10.201.50.2/32

PreUp = sysctl -w net.ipv4.ip_forward=1
PreUp = iptables -t mangle -A PREROUTING -i %i -j MARK --set-mark 0x40
PreUp = iptables -t nat -A การโพสต์ ! -o %i -m เครื่องหมาย --mark 0x40 -j MASQUERADE
PostDown = iptables -t mangle -D PREROUTING -i %i -j MARK --set-mark 0x40
PostDown = iptables -t nat -A POSTROUTING ! -o %i -m เครื่องหมาย --mark 0x40 -j MASQUERADE

[เพียร์]
คีย์สาธารณะ = 
จุดสิ้นสุด = 198.230.220.45:51820
IP ที่อนุญาต = 10.201.50.0/24
PersistentKeepalive = 15

โฮสต์ C (ลูกค้า)

[อินเตอร์เฟซ]
คีย์ส่วนตัว = 
ที่อยู่ = 10.201.50.3/32

[เพียร์]
คีย์สาธารณะ = 
จุดสิ้นสุด = 198.230.220.45:51820
IP ที่อนุญาต = 10.201.50.0/24, 10.0.0.0/24

เพื่อนทั้งสองเชื่อมต่อกับฮับได้ดี

อินเทอร์เฟซ: wg0
  รหัสสาธารณะ: 
  รหัสส่วนตัว: (ซ่อน)
  พอร์ตการฟัง: 51820

เพื่อน: 
  จุดสิ้นสุด: :63882
  ips ที่อนุญาต: 10.201.50.3/32
  การจับมือครั้งล่าสุด: 35 วินาทีที่แล้ว
  การโอน: ได้รับ 213.07 KiB, ส่งแล้ว 15.93 KiB

เพื่อน: 
  ปลายทาง: :33868
  ips ที่อนุญาต: 10.201.50.2/32
  การจับมือครั้งล่าสุด: 1 นาที 6 วินาทีที่แล้ว
  การโอน: ได้รับ 7.19 KiB, ส่ง 5.12 KiB

ฉันสามารถ ping Host B จาก Host C ได้ ซึ่งถือว่าดี แต่การเชื่อมต่ออื่นๆ ล้มเหลว ตัวอย่างเช่น ฉันไม่สามารถ ssh ลงในโฮสต์ B ได้ มันเพิ่งหยุดทำงาน ฉันไม่สามารถขดเว็บเซิร์ฟเวอร์ที่ทำงานบนโฮสต์ B บนพอร์ต 80 ได้ แต่ก็หยุดทำงานเช่นกัน ไม่มีไฟร์วอลล์ทำงานบนโฮสต์ B เท่าที่ฉันทราบ โฮสต์อื่นๆ ในเครือข่ายโฮสต์ B ไม่สามารถเข้าถึงได้เลย

ขอบคุณที่คุณช่วย. ไชโย

Score:0
ธง cn

กุญแจสำคัญในสถานการณ์นี้คือเพื่อให้แน่ใจว่า IP ที่อนุญาต ในแต่ละเพียร์ได้รับการกำหนดค่าให้อนุญาตที่อยู่ IP ปลายทางของแพ็กเก็ตที่คุณต้องการ ส่งถึง (หรือ ส่งผ่าน) เพื่อน

ดังนั้นหากบล็อก CIDR สำหรับไซต์ในพื้นที่ที่คุณต้องการเข้าถึงจากโฮสต์ C ผ่านโฮสต์ A ถึงโฮสต์ B 10.0.0.0/24ตรวจสอบให้แน่ใจว่า IP ที่อนุญาต การตั้งค่าบนโฮสต์ C สำหรับโฮสต์ A รวมถึง 10.0.0.0/24 (เช่นคุณมี):

# การกำหนดค่าโฮสต์ C สำหรับโฮสต์ A เพียร์
IP ที่อนุญาต = 10.201.50.0/24, 10.0.0.0/24

และยังเป็นที่ IP ที่อนุญาต การตั้งค่าบนโฮสต์ A สำหรับโฮสต์ B รวมถึง 10.0.0.0/24 (ที่คุณขาดหายไป):

# การกำหนดค่าโฮสต์ A สำหรับโฮสต์ B เพียร์
IP ที่อนุญาต = 10.201.50.2/32, 10.0.0.0/24

แต่จากคำอธิบายของคุณเกี่ยวกับการทำงานของ ping และ SSH/HTTP ไม่ทำงาน คุณอาจมีปัญหา MTU ด้วย (แพ็กเก็ตแยกส่วน/ถูกปฏิเสธเนื่องจากมีขนาดใหญ่เกินไปสำหรับการกระโดดหนึ่งครั้งระหว่างทาง) ลองเพิ่มการตั้งค่านี้ใน [อินเตอร์เฟซ] ส่วนของการกำหนดค่า WireGuard แต่ละรายการ:

มทร. = 1280

และคุณไม่จำเป็นต้องปลอมตัวบนโฮสต์ A (เฉพาะในโฮสต์ B เช่นเดียวกับที่คุณมี)


อย่างไรก็ตามหากต้องการเส้นทาง ทั้งหมด การจราจร (0.0.0.0/0) จากโฮสต์ C ถึงโฮสต์ A ถึงโฮสต์ B เปลี่ยนการกำหนดค่าโฮสต์ A WireGuard ของคุณเป็น:

[อินเตอร์เฟซ]
คีย์ส่วนตัว = ...
ที่อยู่ = 10.201.50.1/24
ListenPort = 51820
ตาราง = 123

PreUp = sysctl -w net.ipv4.ip_forward=1
PreUp = กฎ ip เพิ่ม iif %i ตาราง 123 ลำดับความสำคัญ 456
PostDown = กฎ ip ลบ iif %i ตาราง 123 ลำดับความสำคัญ 456

#ถึงโฮสบี
[เพียร์]
คีย์สาธารณะ = ...
IP ที่อนุญาต = 0.0.0.0/0

# ถึงโฮสต์ C
[เพียร์]
คีย์สาธารณะ = ...
IP ที่อนุญาต = 10.201.50.3/32

สิ่งนี้จะใช้ตารางเส้นทางที่กำหนดเอง (123) สำหรับทราฟฟิกนั้น เพื่อหลีกเลี่ยงการยุ่งกับตารางเส้นทางหลักของโฮสต์ A

(และเปลี่ยนการกำหนดค่าโฮสต์ C ของคุณเพื่อใช้ IP ที่อนุญาต = 0.0.0.0/0 เช่นกัน แต่ไม่มีการเปลี่ยนแปลงอื่นใดในการกำหนดค่า)

us flag
ขอบคุณมากสำหรับตัวชี้ ฉันสามารถเชื่อมต่อกับเครือข่ายย่อย B ได้แล้ว ฉันไม่รู้ว่าคุณทราบหรือไม่ แต่แบบฝึกหัด Wireguard ของคุณมีประโยชน์อย่างมากต่อชุมชน Wireguard ไม่มีอะไรที่เหมือนกับที่อื่น ผู้คนเชื่อมโยงถึงพวกเขาทุกที่ ช่วยฉันได้มาก นอกจากนี้ การเชื่อมต่อระหว่างโฮสต์ไม่ทำงานเนื่องจากโฮสต์ Jump มีการตั้งค่ากฎ iptables ที่ค่อนข้างเข้มงวด ฉันได้แก้ไขแล้วในตอนนี้
us flag
ฉันมีคำถามอื่นถ้าคุณไม่รังเกียจ ฉันจะกำหนดเส้นทางทราฟฟิกทั้งหมดจากโฮสต์ C ถึงโฮสต์ B โดยไม่กำหนดเส้นทางทราฟฟิกทั้งหมดจากฮับผ่านฮับได้อย่างไร นั่นคือสิ่งที่จะเกิดขึ้นหากฉันเพิ่งเพิ่ม 0.0.0.0/0 ไปยัง AllowedIPs ของการกำหนดค่าเพียร์ B บนฮับ

โพสต์คำตอบ

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