การเข้าถึงบ้านคือบริการส่วนตัวหนึ่งบริการ ไม่ใช่ทางออกอินเทอร์เน็ตทางที่สอง WireGuard สิ้นสุดที่เครื่อง Linux ที่อยู่หลังเราเตอร์ เราเตอร์ยังทำงานเดิม แล็ปท็อปส่งเฉพาะพรีฟิกซ์ของบ้านผ่านอุโมงค์ อุปกรณ์ใดส่งต่อและอุปกรณ์ใดสิ้นสุดคือการตัดสินใจที่ทุกกฎถัดไปตามมา ถ้าแบ่งผิดคุณจะต้องดีบัก NAT ที่ไม่เคยตั้งใจจะเพิ่ม

ตัดสินใจว่าใครส่งต่อและใครสิ้นสุด

เราเตอร์เป็นเจ้าของทางเข้าสาธารณะ มันรับแพ็กเก็ต UDP และส่งต่อให้โฮสต์ Linux โฮสต์นั้นเป็นเจ้าของตัวรับฟัง WireGuard และการตัดสินใจส่งต่อเข้า LAN ในทางปฏิบัติการแมปส่ง UDP 51820 ไปยัง 192.168.50.10 และพอร์ตของแอปพลิเคชันเองยังคงปิดอยู่ การแยกบทบาททำให้ไฟร์วอลล์สั้น

เขียนแผนที่อยู่ก่อนสร้างอินเทอร์เฟซ เราเตอร์ 192.168.50.1 เกตเวย์ 192.168.50.10 บริการ 192.168.50.20 อุโมงค์ 10.77.0.0/24 พร้อมเกตเวย์ .1 และแล็ปท็อป .2 ช่วงของอุโมงค์ต้องไม่ทับซ้อนกับเครือข่ายที่แล็ปท็อปเข้าถึงอยู่แล้ว มิฉะนั้น ปลายทางจะกำกวม NAT ระดับผู้ให้บริการหรือเราเตอร์ด้านบนอาจบล็อกการเข้าถึงขาเข้า และการส่งต่อพอร์ตภายในก็แก้ไม่ได้

แลกเปลี่ยนคีย์ แล้วกำหนดขนาดของ AllowedIPs

สร้างคู่คีย์แยกสำหรับแต่ละปลายทาง และย้ายเฉพาะคีย์สาธารณะผ่านช่องทางที่ตรวจสอบแล้ว รายการ peer ของเกตเวย์อนุญาตเฉพาะแหล่งอุโมงค์ของแล็ปท็อป เพราะ LAN ของบ้านอยู่หลังเกตเวย์ไม่ใช่หลังแล็ปท็อป การใส่ LAN ลงในรายการนั้นอธิบายโทโพโลยีที่คุณไม่ได้สร้าง

[Interface]
Address = 10.77.0.2/32
PrivateKey = LAPTOP_PRIVATE_KEY_BASE64

[Peer]
PublicKey = HOME_PUBLIC_KEY_BASE64
Endpoint = home-vpn.example.com:51820
AllowedIPs = 192.168.50.0/24, 10.77.0.1/32

AllowedIPs คือพรีฟิกซ์ของบ้านบวกที่อยู่อุโมงค์ของเกตเวย์ ไม่ใช่ 0.0.0.0/0 เลย เพื่อให้การท่องเว็บปกติรักษาเส้นทางภายในของตน เก็บเจ้าของการตั้งค่าไว้หนึ่งราย และอย่าเชื่อมอินเทอร์เฟซเดียวกันเข้ากับตัวจัดการเครือข่ายตัวที่สอง

เส้นทางกลับคือส่วนที่คนมักข้าม

การออกแบบนี้เก็บแหล่งที่มา 10.77.0.2 ของแล็ปท็อปไว้แทนที่จะมาสเครดเป็นเกตเวย์ อุปกรณ์ในบ้านจึงต้องรู้วิธีตอบกลับ เพิ่มเส้นทางแบบคงที่บนเราเตอร์ที่บ้านสำหรับ 10.77.0.0/24 โดยมี 192.168.50.10 เป็นฮอปถัดไป และอ่านว่า wg-quick สร้างอะไรจาก AllowedIPs ใน เอกสารอ้างอิง ของมัน หากไม่มีเส้นทางนั้น การจับมือที่สมบูรณ์จะอยู่ร่วมกับการตอบกลับของแอปพลิเคชันที่ไม่เคยมาถึง

ถ้าเราเตอร์รับเส้นทางนั้นไม่ได้ ให้เลือกการออกแบบเส้นทางกลับที่มีเอกสารกำกับ การเพิ่ม NAT อย่างเงียบ ๆ จะเปลี่ยนแบบจำลองแหล่งที่มาที่คุณเพิ่งเขียนลงไป

อนุญาตบริการเดียว ไม่ใช่ทั้งซับเน็ต

เปิดการส่งต่อ IPv4 บนเกตเวย์และแยกหน้าที่ไฟร์วอลล์สามอย่างไว้ อนุญาตให้ตัวรับฟัง WireGuard ผ่าน ส่งต่อแหล่งของแล็ปท็อปไปยัง 192.168.50.20 เท่านั้น และปิดเครือข่ายบ้านส่วนที่เหลือสำหรับ peer นั้น รวมกฎเข้ากับตัวจัดการไฟร์วอลล์ที่ใช้อยู่แทนการล้างมัน เส้นทางสำหรับพรีฟิกซ์ทั้งบ้านไม่ใช่การอนุญาตให้ใช้อุปกรณ์ทุกเครื่องข้างใน

การพิสูจน์ตัวตนของแอปพลิเคชันเองและไฟร์วอลล์ของโฮสต์เป็นประตูอีกบาน ระบุชื่อบริการที่ชุดกฎอนุญาต เพื่อให้ผู้ตรวจสอบคนถัดไปเทียบกับงานที่ตั้งใจได้

ทดสอบจากภายนอก แล้วถอดออกอย่างสะอาด

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

ที่อยู่สาธารณะแบบไดนามิกต้องอัปเดต DNS และแล็ปท็อปต้องแปลงที่อยู่ปลายทางใหม่หลังการเปลี่ยนแปลง บันทึก DNS ใหม่ไม่ได้ย้ายปลายทางที่ตั้งค่าไว้ ถอดแล็ปท็อปออกโดยลบ peer ของมันจากทั้งการตั้งค่าที่เก็บไว้และการตั้งค่าที่ใช้งานอยู่ การลบโปรไฟล์แล็ปท็อปเพียงอย่างเดียวไม่ได้เพิกถอนการอนุญาตของเกตเวย์

บทความที่เกี่ยวข้อง