กุญแจสำคัญในสถานการณ์นี้คือเพื่อให้แน่ใจว่า 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
เช่นกัน แต่ไม่มีการเปลี่ยนแปลงอื่นใดในการกำหนดค่า)