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

เริ่มจากแอปและโปรไฟล์ของมัน

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

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

อ่านสถานะที่แพลตฟอร์มรายงาน

ภายในกิจกรรมที่มีอยู่ในเครื่องมือสนับสนุนของคุณ บน API 23 หรือใหม่กว่า สามารถอ่านสถานะเครือข่ายได้โดยไม่ส่งไบต์ใดเลย การเรียกต้องใช้สิทธิ์ manifest ปกติ ACCESS_NETWORK_STATE สำหรับการอ่านความสามารถ

val cm = getSystemService(android.net.ConnectivityManager::class.java) ?: return
val network = cm.activeNetwork
val caps = network?.let { cm.getNetworkCapabilities(it) }
val hasVpn = caps?.hasTransport(android.net.NetworkCapabilities.TRANSPORT_VPN)
val proxy = cm.defaultProxy

แต่ละค่าตอบคำถามแคบ ๆ เครือข่ายที่ใช้งานคือเครือข่ายเริ่มต้นของโปรเซสที่เรียกในขณะนั้น การตรวจสอบความสามารถบอกคุณว่าเครือข่ายเริ่มต้นนั้นรองรับ VPN หรือไม่ การเรียกพร็อกซี่รายงานพร็อกซี่ HTTP เริ่มต้นที่มีผล และออบเจ็กต์ที่ส่งคืนอาจอธิบายพร็อกซี่แบบคงที่หรือสคริปต์ PAC

หากคุณต้องการมุมมองรายเครือข่ายแทนค่าเริ่มต้น ให้อ่านคุณสมบัติลิงก์ของเครือข่ายเดียวกันและเปรียบเทียบกับ cm.getLinkProperties(network)?.httpProxy พร็อกซี่ที่ติดตั้งโดยการจัดการอุปกรณ์จะปรากฏในการเรียกพร็อกซี่เริ่มต้นและไม่ปรากฏในคุณสมบัติลิงก์ ซึ่งเป็นวิธีเร็วในการแยกพร็อกซี่ที่มาจากนโยบายออกจากพร็อกซี่ที่เครือข่ายให้มา

เก็บผลลัพธ์ไว้ในช่องทางสนับสนุนของคุณแทนรายงานสาธารณะ ชื่อโฮสต์พร็อกซี่ URL ของ PAC และส่วนต่อท้ายภายในเปิดเผยว่าองค์กรของคุณกำหนดเส้นทางทราฟฟิกอย่างไร และไม่จำเป็นต้องใช้สิ่งใดเลยเพื่ออธิบายความล้มเหลว

ตีความทุกฟิลด์อย่างแคบ

เครือข่ายที่เป็น null หรือออบเจ็กต์ความสามารถที่เป็น null หมายความว่าสถานะเครือข่ายของผู้เรียกไม่พร้อมใช้งานหรือเปลี่ยนไประหว่างการอ่าน ไม่ได้หมายความว่าไม่มี VPN ให้ถือว่าไม่ทราบและอ่านอีกครั้งหลังจากแอปมาอยู่เบื้องหน้า ไม่ใช่เป็นผลลบ

การขนส่ง VPN เป็นสิ่งที่อ่อนแอที่สุดในบรรดาสัญญาณบวก แอปใดก็ตามที่มี VpnService จะสร้างหนึ่งขึ้น รวมถึงแอปกรองในเครื่องที่ไม่เคยส่งทราฟฟิกของคุณไปที่ใดเลย ดังนั้นค่า true บอกว่ามีเครือข่ายเริ่มต้นที่รองรับ VPN ไม่ได้บอกว่าใช้ทางออกขององค์กรคุณ และแน่นอนไม่ได้บอกว่ามีการตรวจสอบ

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

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

สิ่งที่ภาพรวมนี้บอกคุณไม่ได้

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

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

นั่นคือเหตุผลที่สองครึ่งสำคัญด้วยกัน ภาพรวมจำกัดตำแหน่งที่จะดู และการวินิจฉัยของแอปเองบอกว่าอะไรล้มเหลวจริง

รายงานในรูปแบบที่ผู้ดูแลระบบใช้ได้

ระบุแอปที่ได้รับผลกระทบ โปรไฟล์ เวลาที่เกิด และขั้นตอนที่ล้มเหลวอย่างแม่นยำ การแก้ชื่อ การเชื่อมต่อ TCP การจับมือ TLS หรือสถานะ HTTP เพิ่มค่าของภาพรวมตามที่อ่านมา โดยเขียน null เป็น null ไม่ใช่คำว่าไม่มี บันทึกว่าแอปอื่นในโปรไฟล์เดียวกันล้มเหลวแบบเดียวกันหรือไม่ ซึ่งแยกปัญหาแอปออกจากปัญหาเส้นทางทั้งโปรไฟล์

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

สัญญาพร็อกซี่เริ่มต้นนั้นสั้นและคุ้มค่าที่จะอ่านสักครั้ง เพราะมันกำหนดอย่างแม่นยำว่าการเรียกจะรายงานพร็อกซี่ใด และการอ่านภาพรวมนี้เกินเลยทุกครั้งเริ่มจากการสมมติว่ามันรายงานมากกว่า

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