Mac VPN ไคลเอนต์: Network Extension กับ System Extension
Network Extension คือความสามารถ และ System Extensions คือกลไกการจัดส่ง: แยกทั้งสองเพื่อเลือกขั้นตอนการอนุมัติใน macOS และบันทึกที่ต้องอ่าน
คำศัพท์สองคำของ Apple ถูกใช้ราวกับว่าหมายถึงสิ่งเดียวกัน และความสับสนนั้นพาคนไปยังแผงการตั้งค่าที่ผิด Network Extension อธิบายถึงความสามารถ: วิธีที่รองรับในการใช้งานอุโมงค์ VPN พร็อกซี และตัวกรอง System Extensions อธิบายกลไกการจัดส่งและการอนุมัติสำหรับส่วนขยายในพื้นที่ผู้ใช้ ไคลเอนต์ VPN บน Mac สมัยใหม่มักต้องใช้ทั้งสองอย่าง จึงไม่มีป้ายใดป้ายหนึ่งอธิบายอาการได้ด้วยตัวเอง การแยกสองสิ่งนี้ออกมาตอบว่าจะตรวจสอบส่วนประกอบใดและจะคาดหวังขั้นตอนการอนุมัติใด
สองคำถาม ไม่ใช่ป้ายเดียว
ถามว่าส่วนประกอบทำอะไรก่อนจะถามว่าติดตั้งอย่างไร ความสามารถกำหนดว่ามีคลาสผู้ให้บริการใด และดังนั้นโค้ดใดจัดการแพ็กเก็ตของคุณ กลไกการจัดส่งกำหนดว่าไบนารีมาถึงอย่างไร ได้รับอนุมัติอย่างไร และบันทึกสถานะไว้ที่ใด ผลิตภัณฑ์สามารถใช้งานอุโมงค์แพ็กเก็ตได้โดยไม่ต้องจัดส่งส่วนขยายระบบในเวอร์ชันเก่า และสามารถจัดส่งส่วนขยายระบบที่ใช้งานสิ่งอื่นที่ไม่ใช่อุโมงค์ได้
ส่วนขยายเคอร์เนลเป็นคำที่สามที่คนมักปนกัน มันเป็นวิธีเก่าในการเรียกใช้โค้ดเครือข่ายที่ได้รับสิทธิพิเศษ ต้องมีการอนุมัติที่แตกต่าง และ Apple ผลักดันนักพัฒนาให้ออกห่างจากมันมาหลายปี การใช้สูตรการอนุมัติส่วนขยายเคอร์เนลกับไคลเอนต์สมัยใหม่ทำให้เสียเวลากับกล่องโต้ตอบที่จะไม่ปรากฏขึ้นเลย
อ่านบันทึกการปรับใช้ของผู้จำหน่ายสำหรับเวอร์ชัน macOS ที่คุณใช้ แทนโพสต์ฟอรัมจากรุ่นก่อนหน้า สถาปัตยกรรมเปลี่ยนมากกว่าหนึ่งครั้ง และคำแนะนำล้าสมัยเร็ว บันทึกที่กล่าวถึงการอนุมัติส่วนขยายเคอร์เนลอธิบายยุคอื่นของผลิตภัณฑ์
Network Extension ให้อะไร
เฟรมเวิร์กมีประเภทผู้ให้บริการสำหรับงานเครือข่ายทั่วไป: อุโมงค์แพ็กเก็ตสำหรับทราฟฟิก VPN พร็อกซีแอปสำหรับโฟลว์ต่อแอปพลิเคชัน ตัวกรองเนื้อหาสำหรับตรวจสอบทราฟฟิก และการจัดการพร็อกซี DNS สำหรับพฤติกรรมของตัวแก้ไข ประเภทผู้ให้บริการกำหนดว่าส่วนขยายทำอะไรได้ และไคลเอนต์ที่จัดส่งผู้ให้บริการสองรายอาจกำลังทำงานสองอย่างที่ต่างกัน
เรื่องนี้สำคัญระหว่างการวินิจฉัย เพราะอาการเชื่อมต่อเดียวกันอาจมาจากอุโมงค์ ตัวกรอง หรือพร็อกซี DNS การบล็อกเว็บไซต์เป็นการตัดสินใจของตัวกรอง การไปไม่ถึงซับเน็ตส่วนตัวมักเป็นการตัดสินใจของอุโมงค์ และการแก้ไขที่อยู่ผิดมักเป็นการตัดสินใจของตัวแก้ไข การระบุประเภทผู้ให้บริการทำให้การค้นแคบลงก่อนจะอ่านบันทึกใด ๆ
ไม่มีสิ่งใดในเฟรมเวิร์กที่บ่งบอกจุดยืนด้านความเป็นส่วนตัว ส่วนขยายในพื้นที่ผู้ใช้ยังมีสิทธิ์ การกำหนดค่า และผู้ดำเนินการอยู่เบื้องหลัง ดังนั้นมองสถาปัตยกรรมเป็นรายละเอียดการใช้งาน ไม่ใช่สัญญาณความไว้วางใจ ถามว่าใครดำเนินการปลายทางและกำหนดค่าให้เก็บอะไร
System Extensions เปลี่ยนอะไร
กลไกนี้นำโค้ดที่ได้รับสิทธิพิเศษออกจากเคอร์เนลเข้าสู่พื้นที่ผู้ใช้ และเปลี่ยนวิธีที่ระบบปฏิบัติการขอความยินยอม การเปิดใช้งานเป็นขั้นตอนแยกจากการติดตั้ง และผู้ใช้หรือโปรไฟล์ MDM ต้องอนุญาต ไคลเอนต์ที่ติดตั้งแต่ไม่เคยเปิดใช้งาน ดูเหมือนมีอยู่ในโฟลเดอร์ Applications และไม่ทำอะไรเพื่อการเชื่อมต่อ
สถานะถูกบันทึกโดยระบบไม่ใช่แอป ซึ่งมีประโยชน์เพราะสอบถามได้ คำสั่งด้านล่างแสดงส่วนขยายที่ระบบรู้จักและสถานะการเปิดใช้งาน
systemextensionsctl list
scutil --nc list
คำสั่งแรกตอบว่าส่วนประกอบติดตั้งและเปิดใช้งานแล้วหรือไม่ คำสั่งที่สองแสดงการกำหนดค่า VPN ที่ระบบมี ซึ่งเป็นคำถามอื่นและมักเป็นคำถามที่สำคัญเมื่อโปรไฟล์การเชื่อมต่อหายไปแทนที่จะเสีย
ควรตรวจสอบสิ่งใดสำหรับอาการที่กำหนด
จับคู่อาการกับชั้นก่อนเปิดแผงการตั้งค่า การกำหนดค่าที่หายไปเป็นคำถามเรื่องโปรไฟล์ ส่วนประกอบที่ติดตั้งแต่ไม่ทำงานเป็นคำถามเรื่องการจัดส่ง และส่วนประกอบที่ทำงานแต่ส่งทราฟฟิกผ่านไม่ได้เป็นคำถามเรื่องความสามารถ
| Symptom | First place to look |
|---|---|
| No VPN entry at all | Configuration profile or scutil list |
| Client installed, nothing happens | Extension activation state |
| Tunnel up, private host unreachable | Tunnel provider routes and policy |
| One app blocked, others fine | Filter or app proxy provider |
สตรีมบันทึกเป็นหลักฐานร่วมสำหรับสองแถวสุดท้าย การอ่านระบบย่อยส่วนขยายเครือข่ายบอกว่าผู้ให้บริการรายใดจัดการโฟลว์ และการตัดสินใจของตัวกรองดูแตกต่างจากความล้มเหลวของอุโมงค์ แม้ผู้ใช้อธิบายทั้งสองว่าเป็น VPN ที่เสีย
log show --last 10m --predicate 'process == "nesessionmanager"'
อย่าสรุปว่าส่วนขยายทำงานอยู่เพราะมีไอคอนในแถบเมนู ไอคอนอยู่รอดหลังการเปิดใช้งานล้มเหลว และไอคอนที่ล้าสมัยเป็นสาเหตุที่พบบ่อยที่สุดประการหนึ่งที่การโทรขอความช่วยเหลือเริ่มต้นผิดที่ อ่านสถานะการเปิดใช้งานแทน เพราะระบบบันทึกสิ่งนั้น
การอนุมัติ MDM และตำนานส่วนขยายเคอร์เนล
บน Mac ที่มีการจัดการ ขั้นตอนการอนุมัติเป็นของโปรไฟล์ MDM และผู้ใช้ที่คลิก Allow ใน System Settings อาจยังถูกบล็อกโดยนโยบายที่ยังไม่อัปเดต ถามทีมเดสก์ท็อปว่ากลไกใดอนุมัติส่วนขยายสำหรับกลุ่มนั้นก่อนขอให้ผู้ใช้คลิกอะไร
บน Mac ที่ไม่ได้จัดการ ข้อความขออนุมัติจะปรากฏครั้งเดียว และการปฏิเสธอาจถาวรจนกว่าจะติดตั้งส่วนขยายใหม่ พฤติกรรมนี้อธิบายเครื่องที่ไคลเอนต์เคยทำงานก่อนอัปเกรดระบบปฏิบัติการและตอนนี้รายงานการเชื่อมต่อที่ไม่เคยถูกสร้าง
จดประเภทผู้ให้บริการ สถานะการเปิดใช้งาน และกลไกการอนุมัติสำหรับไคลเอนต์ที่คุณติดตั้ง ข้อเท็จจริงสามข้อนี้ตอบคำถามในอนาคตส่วนใหญ่เกี่ยวกับ VPN บน Mac โดยไม่ต้องเปิดการโต้แย้งเรื่องความสามารถกับการจัดส่งอีก