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

ไฟล์ระบุชื่อปลั๊กอิน ไม่ใช่ชุดคุณสมบัติ

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

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

สิ่งที่แอปของผู้จำหน่ายเพิ่มรอบอุโมงค์

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

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

จุดที่ความเป็นเจ้าของต่างกันจริง

อ่านสิ่งนี้เป็นแผนที่ความเป็นเจ้าของ ไม่ใช่รายการตรวจสอบ เพราะความล้มเหลวด้านล่างคือช่องว่างความเป็นเจ้าของ และการกำหนดค่าไคลเอนต์มากเท่าใดก็ไม่ปิดช่องว่างนั้น แต่ละแถวระบุชั้น ฝั่งที่มักถือไว้ในวันนี้ และจุดที่ช่องว่างปรากฏขึ้นก่อน

LayerVendor applicationNetworkManager connectionWhere the gap shows up
Enrollment and posturebuilt into the clientabsent unless something else supplies ita managed device fails its next posture check
Address and resolver authoritythe client sets boththe plugin plus dispatcher scriptsnames resolve through the wrong resolver after a state change
Blocking on dropa bundled enginenothing by defaulttraffic continues in the clear after the tunnel dies
Upgrade paththe vendor's own channelthe distribution package and its plugina plugin update changes behaviour with no vendor note
Diagnostics and supportvendor tooling with client statejournal and dispatcher outputsupport cannot see why negotiation failed

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

สลับโดยไม่ทับซ้อนความเป็นเจ้าของ

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

nmcli -f NAME,UUID,TYPE connection show
nmcli connection show work --show-secrets | grep -E "^vpn\."
journalctl -u NetworkManager -b --since "10 min ago"

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

ตัดการเชื่อมต่อไคลเอนต์เก่าก่อนเปิดใช้งานการเชื่อมต่อใหม่ รักษาจุดปลายทางและบัญชีให้เหมือนเดิม และจดว่าองค์ประกอบใดเป็นเจ้าของเส้นทาง การตั้งค่าตัวแก้ไข และการบล็อก บันทึกนั้นคือสิ่งที่ป้องกันไม่ให้การอัปเดตครั้งถัดไปจบลงด้วยเจ้าของสองราย

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