ทำไม VPN บน Mac ของคุณหลุดเมื่อเสียบ iPhone ผ่าน USB
iPhone ที่ต่อผ่าน USB อาจเพิ่มเส้นทาง hotspot หรือลิงก์อุปกรณ์ของ Xcode ตรวจสอบบริการ เส้นทาง และข้อผิดพลาดของไคลเอนต์ก่อนลบอะไร
คุณเสียบ iPhone เพื่อชาร์จ และหนึ่งนาทีต่อมา VPN บน Mac ของคุณก็หยุดส่งผ่านทราฟฟิก การตั้งค่าระบบแสดงบริการใหม่ชื่อ iPhone USB และสิ่งที่ดูเหมือนควรทำคือลบมันออก การทำเช่นนั้นมักผิดพลาด บริการนี้อาจเป็นฮอตสปอตส่วนบุคคลของโทรศัพท์ หรืออาจเป็นลิงก์ที่ Xcode และเครื่องมืออุปกรณ์ใช้สื่อสารกับโทรศัพท์ และทั้งสองทำงานต่างกันมากพอที่การระบุตัวตนต้องมาก่อนการลบ
ขั้นตอนที่ 1: อ่านบริการที่โทรศัพท์สร้างขึ้นจริง
เปิดการตั้งค่าระบบ จากนั้นเครือข่าย และเปรียบเทียบรายการบริการเมื่อถอดและเสียบโทรศัพท์ บน macOS ปัจจุบันบริการแสดงเป็น iPhone USB สังเกตว่าทำงานอยู่หรือไม่ อยู่ตรงไหนในลำดับบริการ และ Mac ใช้เป็นเส้นทางเริ่มต้นหรือไม่ ลำดับบริการสำคัญเพราะ macOS เลือกบริการที่ทำงานอยู่สูงสุดที่ไปถึงปลายทางได้ ไม่ใช่บริการที่คุณรู้จักชื่อ
คำแนะนำของ Apple เกี่ยวกับฮอตสปอตส่วนบุคคล อธิบายกลไก: ตราบใดที่ฮอตสปอตส่วนบุคคลเปิดอยู่บนโทรศัพท์ การเสียบผ่าน USB อาจทำให้ Mac ใช้การเชื่อมต่อเซลลูลาร์ของโทรศัพท์ แม้คุณตั้งใจเพียงชาร์จ นี่ไม่ใช่ข้อบกพร่องของไคลเอนต์ VPN ตารางเส้นทางกำลังตามบริการที่ขึ้นมาก่อน Wi-Fi
ถ้าบริการมีอยู่แต่ยังไม่ทำงานขณะเสียบโทรศัพท์ คุณน่าจะเห็นการเชื่อมต่อแบบชาร์จอย่างเดียวหรือลิงก์อุปกรณ์ ไม่ใช่ฮอตสปอต รักษาความแตกต่างนี้ไว้ เพราะสองขั้นตอนถัดไปจะทดสอบมันแทนการเดาจากไอคอน
ขั้นตอนที่ 2: ตรวจสอบว่า VPN ปลายทางใช้เส้นทางใด
อ่านเส้นทางไปยังที่อยู่ที่แปลงแล้วของเซิร์ฟเวอร์ VPN ไม่ใช่ไปยังเว็บไซต์ route -n get อ่านได้อย่างเดียวและพิมพ์อินเทอร์เฟซกับเกตเวย์ที่เคอร์เนลจะใช้ และทั้งสองบรรทัดสำคัญ
scutil --dns | head -20
route -n get 203.0.113.10ที่อยู่ด้านบนเป็นตัวยึดตำแหน่งสำหรับเอกสาร แทนที่ด้วยปลายทางที่ไคลเอนต์ของคุณแสดง และใช้ route -n get -inet6 สำหรับปลายทาง IPv6 เปรียบเทียบผลลัพธ์เมื่อถอดและเสียบโทรศัพท์ และอย่าเพิ่มหรือลบเส้นทางระหว่างการอ่านสองครั้ง ถ้าอินเทอร์เฟซเปลี่ยนจาก en0 เป็นอินเทอร์เฟซ iPhone USB แสดงว่าเส้นทางฮอตสปอตชนะการค้นหา และการเชื่อมต่อภายนอกของ VPN กำลังวิ่งบนเซลลูลาร์
การเปลี่ยนเส้นทางไม่ได้อธิบายทุกความล้มเหลว ไคลเอนต์ยังไปถึงเซิร์ฟเวอร์ได้และล้มเหลวภายหลังบนทราฟฟิกภายในอุโมงค์ เพราะเส้นทางใหม่มี MTU ต่างกันหรือผู้ให้บริการบล็อกโปรโตคอล อ่านข้อผิดพลาดของไคลเอนต์เองก่อนเปลี่ยนอะไร หมดเวลาจับมือภายนอกชี้ไปที่การเข้าถึง ขณะที่อุโมงค์ที่สร้างแล้วหยุดส่งทราฟฟิกชี้ไปที่ MTU, DNS หรือนโยบาย
ขั้นตอนที่ 3: แยกฮอตสปอตออกจากลิงก์สื่อสารอุปกรณ์
Xcode 15 และใหม่กว่าคุยกับอุปกรณ์ที่ต่อ USB ผ่านช่องทางเครือข่ายซึ่งรวม IPv6 แบบลิงก์โลคอล ดังนั้น Mac สำหรับพัฒนาอาจแสดงอินเทอร์เฟซเพิ่มเติมที่ไม่เกี่ยวกับการเข้าถึงอินเทอร์เน็ต บันทึกเทคนิค TN3158 ของ Apple เอกสารพฤติกรรมนี้และเตือนว่า VPN หรือการกรองความปลอดภัยอาจรบกวน นี่คือด้านกลับของปัญหาฮอตสปอต VPN ไม่พังเพราะโทรศัพท์ให้อินเทอร์เน็ต แต่การเชื่อมต่ออุปกรณ์พังเพราะ VPN ดักจับมัน
การสังเกตสองอย่างแยกกรณีได้โดยไม่ต้องดักแพ็กเก็ต อย่างแรก ตรวจสอบว่าอินเทอร์เฟซมีที่อยู่ที่กำหนดเส้นทางได้และเส้นทางเริ่มต้น หรือมีเพียงที่อยู่ fe80:: แบบลิงก์โลคอล ถ้ามีเพียงลิงก์โลคอลหมายความว่าไม่มีเส้นทางอินเทอร์เน็ต อย่างที่สอง ปิด VPN แล้วดูว่า Xcode ไปถึงอุปกรณ์ได้อีกหรือไม่ ถ้าได้ เส้นทางหรือตัวกรองเนื้อหาของ VPN กำลังดักจับทราฟฟิกลิงก์โลคอล และการแก้ไขอยู่ในคอนฟิกอุโมงค์แยกหรือตัวกรอง ไม่ใช่ในแผงเครือข่าย
ifconfig | grep -A4 -E '^en[0-9]+:'
netstat -rn -f inet6 | headอย่าตัดสินจากชื่ออินเทอร์เฟซอย่างเดียว macOS สร้างและทำลายอินเทอร์เฟซเหล่านี้เมื่ออุปกรณ์เชื่อมต่อ และหมายเลข en ถูกจัดสรรขณะรันไทม์ ดังนั้น Mac เดียวกันอาจแสดงหมายเลขอื่นหลังรีบูตหรือสลับสาย
ขั้นตอนที่ 4: ทำซ้ำความล้มเหลวด้วยตัวแปรเดียวต่อครั้ง
เมื่อรู้ว่าบริการใดเกี่ยวข้อง ให้ทำซ้ำปัญหาในลำดับที่แน่นอน เริ่มด้วยถอดโทรศัพท์และ VPN เชื่อมต่ออยู่ เสียบโทรศัพท์โดยปิดฮอตสปอตส่วนบุคคล รอให้รายการเครือข่ายนิ่ง แล้วรันคำตอบเส้นทางอีกครั้ง ถอดออก เปิดฮอตสปอตส่วนบุคคล เสียบใหม่ และทำซ้ำ บันทึกอินเทอร์เฟซ เกตเวย์ และข้อผิดพลาดของไคลเอนต์สำหรับทั้งสามสถานะ แล้วคุณจะมีการเปรียบเทียบแทนความจำ
ถ้า VPN ล้มเหลวเฉพาะสถานะฮอตสปอต ให้แยกโทรศัพท์ออกจากเส้นทางนั้น ปิดฮอตสปอตส่วนบุคคลขณะชาร์จ หรือย้ายบริการ iPhone USB ลงใต้ Wi-Fi ในลำดับบริการ ถ้าล้มเหลวในทุกสถานะที่เสียบ รวมถึงเมื่อปิดฮอตสปอต ให้ดูว่าไคลเอนต์จัดการการเปลี่ยนเครือข่ายอย่างไร ไคลเอนต์บางตัวรื้ออุโมงค์เมื่อบริการหลักเปลี่ยนและต้องเชื่อมต่อใหม่ นั่นคือพฤติกรรมของไคลเอนต์ ไม่ใช่ข้อบกพร่องของโทรศัพท์
เปลี่ยนทีละอย่างต่อการลอง ถ้าลบบริการ รีเซ็ตคอนฟิก VPN และติดตั้งไคลเอนต์ใหม่ในนาทีเดียวกัน คุณจะเหลือ Mac ที่ใช้งานได้และไม่รู้ว่าการกระทำใดแก้ไข
ขั้นตอนที่ 5: ตัดสินใจว่าจะเก็บอะไรและจะตรวจสอบอะไร
ปล่อยลิงก์อุปกรณ์ไว้ การลบอินเทอร์เฟซที่ Xcode ใช้ไม่ได้แก้เส้นทาง VPN และทำให้การติดตั้งลงอุปกรณ์เสียจนกว่าจะเชื่อมต่อครั้งถัดไป ถ้าบริการฮอตสปอตไม่ต้องการจริง ๆ ให้ปิดฮอตสปอตส่วนบุคคลบนโทรศัพท์ก่อน นั่นคือตัวควบคุมที่มีเอกสารกำกับและอยู่รอดหลังรีบูต
ถ้าคุณลบบริการ ให้ลบตัวที่คุณระบุแล้วตรวจสอบสองอย่าง เส้นทางไปยังปลายทาง VPN กลับมาบนอินเทอร์เฟซที่คาดไว้ และอุโมงค์ส่งทราฟฟิกไปยังที่อยู่ภายใน ไม่ใช่แค่อินเทอร์เน็ต บันทึกลำดับบริการและเวอร์ชันไคลเอนต์ เพราะการอัปเดต macOS อาจเปลี่ยนลักษณะที่โทรศัพท์ปรากฏ
จากนั้นจำแนกความล้มเหลวที่คุณเห็นจริง หมดเวลาจับมือ การหยุดของ MTU หลังอุโมงค์ขึ้น และคำตอบ DNS ที่มาจากผู้ให้บริการเป็นสามปัญหาต่างกันพร้อมการแก้ไขต่างกัน บริการ USB เป็นตัวกระตุ้นในทั้งสามกรณี ไม่ค่อยเป็นสาเหตุ