เส้นทาง VPN ที่หายไปใน NetworkManager: นโยบายโปรไฟล์หรือสคริปต์?
อุโมงค์เชื่อมต่อได้ แต่คำนำหน้าหนึ่งไม่เคยปรากฏ ตัดสินใจระหว่างนโยบายโปรไฟล์ ข้อมูลปลั๊กอิน และเจ้าของเส้นทางคนที่สองก่อนเพิ่มสคริปต์ช่วย
คุณเชื่อมต่อ อินเทอร์เฟซอุโมงค์ปรากฏขึ้น และคำนำหน้าหนึ่งที่คุณต้องการก็ไม่มีอยู่ในตาราง ขั้นตอนถัดไปมักเป็นการค้นหาสคริปต์ที่เพิ่มมัน การค้นหานั้นนำไปสู่คำตอบที่แปะตัวช่วย OpenVPN ลงในโปรไฟล์ และครึ่งหนึ่งของคำตอบเหล่านั้นทำให้สถานการณ์แย่ลงแทนที่จะดีขึ้น เพราะเส้นทางที่หายไปมีเจ้าของที่เป็นไปได้สามคน และมีเพียงคนเดียวเท่านั้นที่เป็นสคริปต์ที่หายไป
ตัดสินใจว่าเจ้าของคนใดรับผิดชอบก่อนเขียนอะไรลงไป
เจ้าของสามคน คำนำหน้าหนึ่งที่หายไป
คำนำหน้าอาจหายไปเพราะไม่มีใครให้มา เพราะโปรไฟล์ปฏิเสธมัน หรือเพราะมันถูกติดตั้งในที่ที่คุณไม่ได้มอง สิ่งเหล่านี้เป็นข้อบกพร่องที่ต่างกันและมีวิธีแก้ที่ต่างกัน
อันแรกตรวจสอบง่ายที่สุด เซิร์ฟเวอร์หรือปลั๊กอินเคยเสนอเส้นทางนั้นหรือไม่ แบ็กเอนด์ที่ไม่เคยได้รับคำนำหน้าไม่สามารถติดตั้งมันได้ และสคริปต์ช่วยไม่สามารถประดิษฐ์การเข้าถึงที่คู่ตรงข้ามไม่เคยอธิบาย อันที่สองคือนโยบายโปรไฟล์ ซึ่งสามารถระงับเส้นทางที่การเชื่อมต่อจะใช้เป็นอย่างอื่น อันที่สามคือตารางหรือกฎ ซึ่งสามารถเก็บเส้นทางไว้ในที่ที่การค้นหาโดยปริยายไม่เคยมอง
เจ้าของคนที่สี่คือคุณ ในภายหลัง สคริปต์ที่เพิ่มเส้นทางเมื่อเชื่อมต่อแต่ไม่ลบมันเมื่อตัดการเชื่อมต่อ สิ่งนี้สร้างคำนำหน้าที่มีอายุยืนกว่าอุโมงค์ ชี้ไปที่อินเทอร์เฟซที่ตายแล้ว และทำให้คนถัดไปที่ต้องดีบักเครื่องสับสน
อ่านโปรไฟล์ก่อนเพิ่มอะไรลงไป
เริ่มจากคุณสมบัติของการเชื่อมต่อที่บันทึกไว้ อ่านโดยไม่เทความลับออกมา และใช้ UUID หากชื่อโปรไฟล์กำกวม
nmcli -f vpn.service-type,ipv4.never-default,ipv4.ignore-auto-routes,ipv4.route-table,ipv4.routes connection show office
vpn.service-type บอกคุณว่า แบ็กเอนด์ใดเป็นเจ้าของการเชื่อมต่อ และนั่นสำคัญเพราะข้อมูลปลั๊กอินเฉพาะเจาะจงต่อแบ็กเอนด์ คีย์ที่ปลั๊กอินหนึ่งยอมรับไม่ใช่คำสั่งที่รองรับสำหรับอีกตัวหนึ่ง ดังนั้นตัวอย่างที่คัดลอกมาจากเอกสารของไคลเอนต์อื่นจึงไม่ใช่หลักฐานใดๆ
ipv4.ignore-auto-routes และ ipv4.never-default ตอบคำถามที่ต่างกัน อันแรกสามารถปฏิเสธเส้นทางที่การเชื่อมต่อจะใช้โดยอัตโนมัติเป็นอย่างอื่น และอันที่สองควบคุมว่าโปรไฟล์จะกลายเป็นเส้นทางโดยปริยายได้หรือไม่ โปรไฟล์ที่เพิกเฉยต่อเส้นทางอัตโนมัติและไม่พึ่งพาสิ่งอื่นใดจะเชื่อมต่อได้อย่างสะอาดและติดตั้งแทบไม่มีอะไรเลย
ip -4 rule show
ip -4 route show table all
สองคำสั่งนี้ตัดสินความเป็นไปได้ที่สาม ค้นหาคำนำหน้าของคุณในทุกตาราง ไม่ใช่แค่ main และตรวจสอบว่า กฎนโยบายส่งการค้นหาที่เกี่ยวข้องไปที่อื่นหรือไม่ หากคำนำหน้าอยู่ในตารางอื่นและไม่มีอะไรตรวจสอบมัน คุณไม่ได้มีเส้นทางที่หายไป คุณมีการค้นหาที่ไม่เคยไปถึงมัน
สิ่งที่สคริปต์แก้ไม่ได้
การเพิ่มสคริปต์ช่วยให้ vpn.data ของ NetworkManager มีโปรแกรมให้รัน นั่นเป็นกลไกจริง และเป็นกลไกที่ผิดสำหรับกรณีเหล่านี้ส่วนใหญ่ เพราะสคริปต์ได้รับควบคุมหลังจากที่นโยบายของโปรไฟล์เองได้ตัดสินใจแล้วว่าจะยอมรับอะไร
script-security ของ OpenVPN คือความสับสนที่เกิดซ้ำอีกอย่างหนึ่ง มันเป็นการตั้งค่าของ OpenVPN ที่กำหนดว่าไคลเอนต์สามารถรันสคริปต์ใดได้บ้างและสามารถใส่อะไรลงในสภาพแวดล้อมของสคริปต์เหล่านั้นได้ ระดับ 3 อนุญาตให้ส่งข้อมูลรับรองผ่านสภาพแวดล้อม ซึ่งเป็นการตัดสินใจเกี่ยวกับการจัดการความลับไม่ใช่การแก้ไขเส้นทาง การแปะมันลงในโปรไฟล์ที่แบ็กเอนด์ไม่ใช่ OpenVPN หรือการเพิ่มระดับเมื่อไม่มีสคริปต์ใดต้องการมัน เพิ่มการเปิดเผยโดยไม่เพิ่มเส้นทาง
จากนั้นก็มีปฏิกิริยาการรีสตาร์ต การรีสตาร์ตบริการ NetworkManager จะฉีกและสร้างลิงก์ที่จัดการทั้งหมดใหม่ รวมถึงลิงก์ที่คุณเชื่อมต่ออยู่หากคุณทำงานระยะไกล มันเป็นการกระทำที่รบกวน ไม่ใช่การวินิจฉัยที่ไม่มีอันตราย และบนเซิร์ฟเวอร์มันอาจเป็นความแตกต่างระหว่างเซสชันที่อยู่รอดและเซสชันที่ไม่อยู่รอด
การตัดสินใจ ตามลำดับ
ถามสามคำถามตามลำดับ คู่ตรงข้ามให้คำนำหน้ามาหรือไม่ ซึ่งล็อกของแบ็กเอนด์หรือเอาต์พุตสถานะของมันเองจะแสดงให้เห็น หากใช่ โปรไฟล์ถูกกำหนดค่าให้ยอมรับและติดตั้งเส้นทาง หรือมันระงับเส้นทางเหล่านั้น หากเส้นทางมีอยู่ที่ใดที่หนึ่ง เส้นทางการค้นหาถูกต้องสำหรับทราฟฟิกที่คุณกำลังทดสอบหรือไม่
เฉพาะเมื่อคำตอบแรกคือใช่ คำตอบที่สองคือใช่ และคำตอบที่สามถูกต้อง สคริปต์เสริมจึงเป็นสิ่งที่ป้องกันได้ และแม้ในตอนนั้นคุณควรถามว่าแบ็กเอนด์รองรับเส้นทางนั้นโดยกำเนิดหรือไม่ เอกสารอ้างอิงการตั้งค่า VPN จัดทำเอกสาร service-type และพจนานุกรมข้อมูลเฉพาะปลั๊กอิน และนั่นคือจุดที่ควรเริ่มก่อนสันนิษฐานว่ามีคีย์อยู่
หลังการแก้ไขที่ได้รับอนุมัติ ให้เชื่อมต่อใหม่และทดสอบปลายทางด้วยที่อยู่แล้วจึงด้วยชื่อ จากนั้นตัดการเชื่อมต่อและเชื่อมต่อใหม่เพื่อยืนยันว่าสถานะสามารถทำซ้ำได้ เจ้าของหนึ่งคน ตารางหนึ่งตาราง และเส้นทางที่หายไปพร้อมกับอุโมงค์คือผลลัพธ์ที่คุ้มค่า