โปรไฟล์ VPN บน Android: ค้นหาเจ้าของก่อนแก้ไข
แถว VPN ของระบบซ่อนแอปที่เป็นเจ้าของปลายทาง เส้นทาง และคีย์ ระบุเจ้าของ แล้วเปรียบเทียบสถานะที่ร้องขอ ได้รับ และนำไปใช้
หน้าจอ VPN ของ Android แสดงหนึ่งแถวที่มีชื่อ ไอคอนกุญแจ และอาจมีสวิตช์เปิดตลอดเวลา มันไม่ค่อยแสดงปลายทาง นโยบายเส้นทาง เซิร์ฟเวอร์ DNS หรือข้อมูลรับรองที่ทำให้การเชื่อมต่อทำงาน เพราะในอุโมงค์ที่อิงแอปนั้นสิ่งเหล่านี้เป็นของแอป ผลในทางปฏิบัติคือคำถามแบบ runbook ไม่ใช่คำถามเชิงปรัชญา: ก่อนแก้ไขไฟล์ที่ดาวน์โหลดมาหรือค้นหาที่เก็บโปรไฟล์ส่วนกลาง ให้ค้นหาว่า ส่วนประกอบใดเป็นเจ้าของการตั้งค่า ที่คุณต้องการเปลี่ยน
ระบุประเภทการเชื่อมต่อก่อน
มีอย่างน้อยสามรูปแบบบนหน้าจอการตั้งค่าเดียวกัน แอปสามารถใช้ VpnService เพื่อสร้างอินเทอร์เฟซเสมือนและเป็นเจ้าของโปรโตคอลและการกำหนดค่าส่วนตัว รวมถึงแอปกรองในเครื่องที่ไม่มีทางออกระยะไกล Android ยังสามารถจัดเตรียมโปรไฟล์ IKEv2 ของแพลตฟอร์มผ่าน Ikev2VpnProfile ซึ่งใช้ได้ตั้งแต่ API 30 โดยแพลตฟอร์มถือส่วนใหญ่ของโปรไฟล์ และแอปผู้ให้บริการสามารถแสดงรายการเซิร์ฟเวอร์ของตนเองและประกอบการตั้งค่าภายในได้
adb shell dumpsys connectivity | grep -i -A12 "VPN"
adb shell cmd connectivity list-owners 2>/dev/null || true
คำสั่งแรกแสดงเครือข่าย VPN ที่ใช้งานอยู่และคุณสมบัติลิงก์ ซึ่งเป็นสถานะที่นำไปใช้ หากแถวระบุแพ็กเกจที่คุณรู้จัก ให้เริ่มจากมุมมองโปรไฟล์ของแอปนั้นเองแทนหน้าจอระบบ
บันทึกเจ้าของและขอบเขตโปรไฟล์
จดข้อเท็จจริงสี่ข้อก่อนเปลี่ยนแปลงสิ่งใด: แพ็กเกจเจ้าของ การเชื่อมต่ออยู่ในโปรไฟล์ส่วนตัวหรือโปรไฟล์งาน ชื่อโปรไฟล์หรือการเชื่อมต่อตามที่แอปแสดง และใครเป็นผู้ดูแล ผู้เป็นเจ้าของอุปกรณ์สามารถจัดเตรียม VPN ของโปรไฟล์งานที่ผู้ใช้โปรไฟล์ส่วนตัวแก้ไขไม่ได้ และแอปเดียวกันที่ติดตั้งสองครั้งทำให้คุณมีเจ้าของอิสระสองราย
ขั้นตอนนี้ป้องกันชั่วโมงที่สูญเปล่าที่สุด นั่นคือการแก้ไขโปรไฟล์ที่ไม่ใช่โปรไฟล์ที่เชื่อมต่ออยู่ แอปมักเก็บหลายโปรไฟล์ และโปรไฟล์ที่ใช้งานอยู่เป็นคุณสมบัติของแอป ไม่ใช่ของแถว Android
เปรียบเทียบสถานะที่ร้องขอ ได้รับ และนำไปใช้
นี่คือสามขั้นตอนที่แตกต่างกัน และความคลาดเคลื่อนระหว่างกันบอกคุณว่าต้องแก้ส่วนประกอบใด
| Stage | Where to look | What it proves |
|---|---|---|
| Requested | The app's profile editor or imported file | What the owner intends to use |
| Received | Sanitized app log of server-supplied options | What the peer actually pushed |
| Applied | Link properties and routes after connect | What the device is really using |
ขั้นตอนที่นำไปใช้คือขั้นตอนเดียวที่สังเกตได้โดยไม่ต้องเชื่อถือบันทึกของใคร เปรียบเทียบเซิร์ฟเวอร์ DNS และเส้นทางในคุณสมบัติลิงก์ที่ใช้งานอยู่กับสิ่งที่โปรไฟล์อ้าง หากแตกต่างกัน แสดงว่าเซิร์ฟเวอร์ส่งบางอย่างมาหรือแอปใช้โยบายที่คุณไม่ได้คาดไว้
adb shell ip addr show tun0
adb shell ip route show table all | head -40
ชื่ออินเทอร์เฟซแตกต่างกันระหว่างแอป ดังนั้นให้แสดงรายการอินเทอร์เฟซก่อนแล้วอ่านอันที่ปรากฏเมื่ออุโมงค์เชื่อมต่อ เส้นทางที่มีในตัวแก้ไขของแอปแต่ไม่มีที่นี่ไม่เคยถูกนำไปใช้ ส่วนเส้นทางที่มีที่นี่แต่ไม่มีในตัวแก้ไขมาจากที่อื่น
แก้ไขไฟล์ที่เจ้าของอ่านจริง
สำหรับโปรไฟล์ OpenVPN ที่นำเข้า แอปมักเก็บสำเนาของตนเอง การแก้ไขไฟล์ที่ดาวน์โหลดมาแต่แรกในภายหลังไม่เปลี่ยนการเชื่อมต่อครั้งถัดไป ใช้ตัวแก้ไขที่เอกสารระบุของแอป หรือนำเข้าใหม่และยืนยันว่าโปรไฟล์ใดทำงานอยู่ตอนนี้ นี่คือความแตกต่างระหว่างการเปลี่ยนไฟล์กับการเปลี่ยนการกำหนดค่า
แอปผู้ให้บริการมักประกอบการตั้งค่าจากรายการเซิร์ฟเวอร์แทนการเขียนไฟล์ที่ผู้ใช้แก้ไขได้ การไม่มีปุ่มส่งออกไม่ใช่หลักฐานว่า VPN เป็นของปลอม และไฟล์ที่ส่งออกอาจละเว้นคีย์ที่ผูกกับอุปกรณ์หรือวัสดุลงทะเบียนที่อุปกรณ์อื่นต้องใช้ ให้ถือการส่งออกและการนำเข้าเป็นปฏิบัติการแยกกันที่มีเงื่อนไขของตนเอง
เขียนบันทึกช่วยเหลือโดยไม่เปิดเผยความลับ
บันทึกที่มีประโยชน์ระบุแอปและโปรไฟล์ที่แน่นอน การตั้งค่าที่ดูเหมือนผิด และหลักฐานจากแต่ละขั้นตอน ตัวอย่างเช่น โปรไฟล์นี้ได้รับที่อยู่ DNS ส่วนตัวจากเซิร์ฟเวอร์ แต่แอปงานที่ตั้งใจไว้ไม่สามารถแก้ไขบริการของตนได้ และคุณสมบัติลิงก์ที่นำไปใช้แสดงตัวแก้ไขนั้นขณะที่ตัวแก้ไขโปรไฟล์แสดงอีกตัวหนึ่ง
เก็บข้อมูลรับรองไว้นอกบันทึก การรูทอุปกรณ์เพื่อค้นหาที่เก็บส่วนตัวของแอปไม่จำเป็นสำหรับการระบุเจ้าของ และเส้นทางไดเรกทอรีข้อมูลที่เดาขึ้นไม่ใช่อินเทอร์เฟซที่รองรับ หากคำตอบต้องใช้ไบต์ที่แอปเท่านั้นมองเห็น ให้ขอการส่งออกเพื่อวินิจฉัยจากเจ้าของแทนการคิดค้นเอง
เมื่องานเสร็จ ให้ปิดวงจร: ยืนยันชื่อโปรไฟล์ที่ใช้งานอยู่ อ่านสถานะที่นำไปใช้อีกครั้ง และตัดการเชื่อมต่อหนึ่งครั้งเพื่อตรวจสอบว่าการเปลี่ยนแปลงอยู่รอดหลังเชื่อมต่อใหม่ การตั้งค่าที่มีอยู่เฉพาะในตัวแก้ไขยังไม่ได้ถูกนำไปใช้