สถานะ VPN บน Mac: ตรวจสอบโปรไฟล์ ทรัพยากร หรือโฟลว์
ค่าบูลีนเดียวตอบคำถามที่ต่างกันสามข้อไม่ได้ เลือกหัวข้อก่อน จากนั้นใช้ส่วนติดต่อที่รายงานได้จริง และเก็บเหตุผลของความล้มเหลวไว้
มีคนถามว่า VPN ทำงานอยู่หรือไม่ และคนสามคนหมายถึงสามเรื่องที่ต่างกัน ผู้ดูแลระบบหมายถึงโปรไฟล์ Office ผ่านการยืนยันตัวตนแล้ว ผู้จัดตารางหมายถึง API ส่วนตัวจะตอบกลับ การตรวจสอบความปลอดภัยหมายถึงคำขอนี้ผ่านเส้นทางที่ได้รับการป้องกันออกไป สคริปต์ที่ใช้ grep ตารางเส้นทางเพื่อหาชื่ออินเทอร์เฟซไม่ได้ตอบคำถามเหล่านี้ได้อย่างน่าเชื่อถือเลย
ดังนั้นรายการตรวจสอบจึงเริ่มก่อนคำสั่งใดจะทำงาน: ตั้งชื่อหัวข้อของการตรวจสอบ ทุกอย่างหลังจากนั้นคือการเลือกส่วนติดต่อที่รายงานได้จริง
ตั้งชื่อหัวข้อก่อนคำสั่ง
เขียนคำถามเป็นประโยคที่มีหัวข้อ «โปรไฟล์ Office เชื่อมต่ออยู่หรือไม่» ทดสอบได้และมีเจ้าของที่ตอบได้ «งานนี้เข้าถึง API ภายในได้หรือไม่» เป็นประโยคที่สองซึ่งมีรูปแบบความล้มเหลวที่ต่างออกไป «คำขอนี้ใช้เส้นทางที่ได้รับการป้องกันหรือไม่» เป็นประโยคที่สาม และเป็นประโยคเดียวที่พูดถึงโฟลว์เดียวไม่ใช่ทั้งเครื่อง
การผสมกันทำให้เกิดระบบอัตโนมัติที่โกหกอย่างมั่นใจ งานที่ตรวจสอบสถานะโปรไฟล์แล้วถือว่า API พร้อมจะเรียกคนผิดชั้น และงานที่ ping API แล้วเรียกว่านั่นคือหลักฐานของอุโมงค์ไม่สามารถแยก VPN ที่ทำงานอยู่ออกจากแล็ปท็อปที่บังเอิญอยู่ในเครือข่ายสำนักงานได้
โปรไฟล์เดียว: ถามสิ่งที่ถือครองมัน
สำหรับบริการ Mac แบบเนทีฟ ตัวควบคุมการเชื่อมต่อเครือข่ายใน scutil รายงานสิ่งนี้อย่างตรงไปตรงมา พวกมันอ่านสถานะของการกำหนดค่าที่มีชื่อแทนการอนุมานอะไรบางอย่างจากอินเทอร์เฟซ
scutil --nc list
scutil --nc status "Office VPN"
ชื่อโปรไฟล์ในคำสั่งนั้นต้องเป็นชื่อจริงจากผลลัพธ์ของรายการ ไม่ใช่การเดา นี่คือเส้นทางแบบอ่านอย่างเดียวสำหรับบริการเนทีฟ และไม่ใช่การรับประกันว่าลูกค้าบุคคลที่สามจะปรากฏที่นั่นเลย ผู้ให้บริการที่จัดการอุโมงค์ของตัวเองต้องมีส่วนติดต่อสถานะที่รองรับของตัวเอง ตรวจสอบรายการก่อนเขียนการเรียกสถานะ เพื่อให้ชื่อที่หายไปล้มเหลวอย่างเห็นได้ชัดแทนที่จะจับคู่กับสิ่งใดอย่างเงียบ ๆ
ภายในแอป Network Extension ให้อ่านสถานะจากออบเจกต์ตัวจัดการและการเชื่อมต่อแทนที่จะอ่านจากระบบ ระวังขอบเขตตรงนี้: การโหลดการกำหนดค่าที่บันทึกไว้จะคืนเฉพาะที่แอปที่เรียกสร้างขึ้น ดังนั้นผลลัพธ์ว่างหมายถึง «ไม่มีของฉันสักอัน» ไม่ใช่ «ไม่มี VPN บน Mac นี้» แยกความแตกต่างระหว่างคำค้นที่ล้มเหลวกับสถานะตัดการเชื่อมต่อที่ยืนยันแล้ว และถือว่าสถานะเปลี่ยนผ่านเป็นผลลัพธ์ของตัวเองแทนที่จะลองเชื่อมต่อที่กำลังขึ้นอยู่แล้วซ้ำ
งานเดียว: ความพร้อมเป็นประโยคแยกต่างหาก
หากคำถามคือว่างานจะดำเนินต่อได้หรือไม่ ให้ทดสอบการพึ่งพาจริงของงานหลังจากเจ้าของการเชื่อมต่อรายงานสถานะที่ตั้งใจไว้ การตรวจสอบความพร้อมแบบจำกัดต่อทรัพยากรส่วนตัวคือรูปแบบที่ถูกต้อง: มันพิสูจน์ว่าจำเป็นต้องมีอะไรและไม่มากไปกว่านั้น
ยังคงพิสูจน์ไม่ได้ว่าทุกคำขอบนเครื่องใช้อุโมงค์ และไม่ควรรายงานราวกับว่าทำได้ เช่นเดียวกัน ทรัพยากรที่ตอบกลับผ่านเครือข่ายธรรมดาไม่ใช่หลักฐานของ VPN นั่นคือเหตุผลที่การตรวจสอบทั้งสองยังแยกจากกันแม้ทั้งคู่จะสำเร็จ
เมื่องานต้องการเส้นทางที่ได้รับการป้องกันจริง ๆ ข้อกำหนดนั้นต้องมีการออกแบบการบังคับใช้ของการติดตั้งเอง: การกำหนดเส้นทาง ข้อยกเว้นอุโมงค์แบบแยก ส่วน กฎไฟร์วอลล์ หรือข้อกำหนดระดับแอปพลิเคชัน ความพร้อมใช้งานของปลายทางเป็นข้อเท็จจริงเกี่ยวกับเซิร์ฟเวอร์ การบังคับใช้เป็นข้อเท็จจริงเกี่ยวกับการกำหนดค่าของไคลเอนต์ และสิ่งหนึ่งไม่ได้พิสูจน์อีกสิ่งหนึ่ง
โฟลว์เดียว: ตรวจสอบเส้นทางที่เลือก
สำหรับโฟลว์เดียว ให้ดูปลายทาง ตระกูลที่อยู่ และบริบทต้นทางด้วยการวินิจฉัยเส้นทางที่รายงานเส้นทางที่เลือกสำหรับปลายทางนั้นโดยเฉพาะ ผลลัพธ์นั้นระบุอินเทอร์เฟซและที่อยู่ต้นทางที่ใช้จริง ซึ่งเป็นการกล่าวอ้างที่แข็งแกร่งกว่าการมีรายการเส้นทางเริ่มต้นมาก
การตรวจสอบเบราว์เซอร์แบบกว้างตอบคำถามที่ต่างออกไปโดยสิ้นเชิง ผลลัพธ์ IP สาธารณะอธิบายว่าคำขอหนึ่งดูเป็นอย่างไรจากมุมมองของเซิร์ฟเวอร์หนึ่ง และไม่ได้บอกอะไรเกี่ยวกับ DNS ส่วนตัว แอปพลิเคชันที่ถูกยกเว้น หรือบริบทเครือข่ายที่สองที่โปรเซสอื่นกำลังใช้อยู่
คืนผลลัพธ์ที่ผู้เรียกใช้ได้
เลือกรูปแบบการคืนค่าที่ตรงกับประโยค: สถานะโปรไฟล์ที่มีชื่อ คำตัดสินความพร้อมของทรัพยากร หรือค่าที่ไม่ทราบอย่างชัดเจนพร้อมหลักฐานที่สร้างมันขึ้นมา เก็บข้อมูลระบุตัวตนของการกำหนดค่าและเหตุผลของความล้มเหลวไว้ข้างคำตัดสิน
นิสัยสุดท้ายนั้นคือสิ่งที่สร้างความแตกต่างระหว่างระบบอัตโนมัติที่ช่วยเหลือและระบบอัตโนมัติที่ซ่อนปัญหา «Office VPN: ตัดการเชื่อมต่อ ความพยายามครั้งสุดท้ายล้มเหลวในการยืนยันตัวตน» บอกผู้ดูแลระบบว่าควรมองที่ไหน «VPN ล่ม» ชวนให้ติดตั้งใหม่ และ «พบอินเทอร์เฟซ» ชวนให้เชื่อผิด ๆ ว่าทุกอย่างเรียบร้อย
เอกสารอ้างอิง Network Extension เกี่ยวกับ การโหลดการกำหนดค่าอุโมงค์ที่บันทึกไว้ คือจุดที่คุณยืนยันขอบเขตของแอปที่เรียกก่อนสร้างสิ่งใดบนนั้น