คำศัพท์สองคำของ 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 ที่ระบบมี ซึ่งเป็นคำถามอื่นและมักเป็นคำถามที่สำคัญเมื่อโปรไฟล์การเชื่อมต่อหายไปแทนที่จะเสีย

ควรตรวจสอบสิ่งใดสำหรับอาการที่กำหนด

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

SymptomFirst place to look
No VPN entry at allConfiguration profile or scutil list
Client installed, nothing happensExtension activation state
Tunnel up, private host unreachableTunnel provider routes and policy
One app blocked, others fineFilter or app proxy provider

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

log show --last 10m --predicate 'process == "nesessionmanager"'

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

การอนุมัติ MDM และตำนานส่วนขยายเคอร์เนล

บน Mac ที่มีการจัดการ ขั้นตอนการอนุมัติเป็นของโปรไฟล์ MDM และผู้ใช้ที่คลิก Allow ใน System Settings อาจยังถูกบล็อกโดยนโยบายที่ยังไม่อัปเดต ถามทีมเดสก์ท็อปว่ากลไกใดอนุมัติส่วนขยายสำหรับกลุ่มนั้นก่อนขอให้ผู้ใช้คลิกอะไร

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

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

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