NetworkManager หรือ wg-quick: ใครเป็นเจ้าของเส้นทาง WireGuard ของคุณ?
ผู้จัดการสองตัวสามารถอ้างสิทธิ์ลิงก์ WireGuard เดียวกัน และคอนฟิกที่คุณแก้ไขอาจไม่ใช่ตัวที่บังคับใช้อยู่ ค้นหาเจ้าของจากเส้นทาง กฎ และสถานะอินเทอร์เฟซ
คุณเปลี่ยน AllowedIPs ในไฟล์ WireGuard รีสตาร์ทอุโมงค์ แล้วตารางเส้นทางก็ดูเหมือนเดิมทุกอย่าง ปฏิกิริยาปกติคือลบเส้นทางที่ก่อปัญหาแล้วไปต่อ ซึ่งใช้ได้จนกว่าการเชื่อมต่อครั้งถัดไปจะใส่กลับมา ไฟล์ที่คุณแก้ไขไม่จำเป็นต้องเป็นวัตถุที่สร้างสถานะที่คุณกำลังดูอยู่ ผู้จัดการสองตัวสามารถรันโปรโตคอลเดียวกันบนเครื่องเดียว และมีเพียงตัวเดียวเท่านั้นที่เป็นเจ้าของอินเทอร์เฟซในแต่ละเวลา
ความเชื่อผิด: มีคอนฟิก WireGuard เดียวบนเครื่อง
wg-quick อ่านไฟล์ใต้ /etc/wireguard/ และสร้างอินเทอร์เฟซเมื่อคุณยกขึ้น NetworkManager เก็บโปรไฟล์การเชื่อมต่อในรูปแบบ keyfile ของตัวเองและเรนเดอร์เมื่อเปิดใช้งาน และ การนำเข้าไฟล์ wg-quick จะคัดลอกค่าไปยังโปรไฟล์นั้นแทนการลิงก์ไปยังไฟล์การแก้ไขต้นฉบับภายหลังไม่เปลี่ยนอะไร เพราะโปรไฟล์ไม่อ่านมันอีกแล้ว รายการเพื่อนและคีย์ชุดเดียวกันจึงมีอยู่สองครั้งได้ โดยสำเนาที่สองมีผลบังคับใช้
สัญญาณที่ควรจำ: การแก้ไขที่อยู่รอดหลังรีบูตแต่ไม่อยู่รอดหลังนำเข้าซ้ำมาจากที่เก็บหนึ่ง และการแก้ไขที่หายไปเมื่อรีบูตมาจากอีกที่หนึ่ง
ตัวอย่างเชิงปฏิบัติหนึ่งตัวอย่างทำให้การแบ่งชัดเจน เปรียบเทียบ nmcli connection show กับ systemctl status wg-quick@wg0จากนั้นตรวจว่าอินเทอร์เฟซใดที่เส้นทางแขวนอยู่จริง หากบริการตายและอินเทอร์เฟซขึ้นอยู่ โปรไฟล์คือผู้ทำงาน ไม่ว่าไฟล์จะพูดอะไร
ความเชื่อผิด: กฎเส้นทางเป็นส่วนหนึ่งของ WireGuard
อุปกรณ์ WireGuard ในเคอร์เนลรู้จักเพื่อนและคีย์ และไม่รู้อะไรเกี่ยวกับการกำหนดเส้นทางตามนโยบาย รายการ ip rule และตารางเพิ่มเติมที่คุณเห็นถูกติดตั้งโดยเครื่องมือที่ยกอินเทอร์เฟซขึ้น wg-quick เพิ่ม fwmark และตารางเฉพาะพร้อมกฎที่ชี้ไปยังตารางนั้นได้ ขณะที่ NetworkManager ติดตั้งเส้นทางผ่านการตั้งค่า ipv4 ของตัวเองและปล่อย DNS ให้กับแบ็กเอนด์รีโซลเวอร์ที่ระบบใช้ อุโมงค์เดียวกัน ผลข้างเคียงต่างกัน
อ่าน ip rule และ ip route show table all ก่อนเปลี่ยนอะไร และบันทึกว่าแต่ละเส้นทางอยู่ในตารางใด หมายเลขตารางที่คุณไม่ได้กำหนดค่าเป็นเบาะแสที่ชัดเจนเกี่ยวกับเครื่องมือที่สร้างมันขึ้นมา
ความเชื่อผิด: การลบเส้นทางคือการแก้ไข
เส้นทางที่ถูกลบระหว่างรันคือเส้นทางที่เจ้าของจะติดตั้งกลับในการเปิดใช้งานครั้งถัดไป และการเปิดใช้งานอาจเกิดขึ้นโดยไม่มีคุณ: แล็ปท็อปตื่น ลิงก์กระตุก บริการรีสตาร์ท หรือการเชื่อมต่ออัตโนมัติของ NetworkManager นั่นคือเหตุผลที่เส้นทางเดิมกลับมา และนั่นคือเหตุผลที่วิธีเลี่ยงรู้สึกไม่น่าเชื่อถือมากกว่าผิด หาผู้จัดการให้ได้ก่อน แล้วเปลี่ยนอินพุตที่ผู้จัดการนั้นอ่านจริง
การเชื่อมต่อใหม่และการรีสตาร์ทบริการที่เกี่ยวข้องคือบททดสอบที่แยกการแก้ไขจริงออกจากการแก้ไขที่แค่ดูเรียบร้อย
เลือกเจ้าของหนึ่งรายและถอดอีกฝ่ายออก
เลือกผู้จัดการที่การติดตั้งของคุณรองรับ แล้วปิดใช้งานการเปิดใช้งานที่แข่งขันกันผ่านการควบคุมที่มีเอกสาร แทนที่จะหวังว่ามันจะไม่ทำงาน บริการ wg-quick ที่ถูกมาสก์หรือโปรไฟล์ NetworkManager ที่ถูกลบนั้นชัดเจน แต่การเปิดทั้งสองไว้และปล่อยให้แข่งกันไม่ใช่ รักษาการเข้าถึงที่ใช้งานได้ก่อนปิดอะไร เพราะอินเทอร์เฟซที่พาเซสชันระยะไกลของคุณอยู่อาจเป็นตัวที่คุณกำลังจะถอดออก
หลังการเปลี่ยนแปลง ตรวจสอบทราฟฟิกที่รวมและที่ยกเว้น จากนั้น DNS จากนั้นรีบูตหนึ่งครั้ง หากสถานะอยู่รอดหลังรีบูตด้วยผู้จัดการเดียว คุณมีเจ้าของไม่ใช่ความบังเอิญ
กฎทั่วไปควรค่าแก่การจำนอกเหนือจาก WireGuard: เมื่อการตั้งค่าหนึ่งกลับมาซ้ำ ๆ หยุดลบผลลัพธ์แล้วมองหากระบวนการที่ยังผลิตมันอยู่