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

สองจุดสังเกต สองชนิดของหลักฐาน

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

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

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

อินเทอร์เฟซแพลตฟอร์มภายในรายงานอะไรได้บ้าง

Android มีเครื่องหมายเฉพาะ NetworkCapabilities วัตถุสามารถรายงาน TRANSPORT_VPN และ hasTransport ทดสอบว่าการขนส่งนั้นมีอยู่บนวัตถุหรือไม่ แอปได้วัตถุจากบริการเชื่อมต่อและอ่านมัน ภายใต้สิทธิ์สถานะเครือข่าย

ผลลัพธ์คือข้อมูลแพลตฟอร์มภายใน ไม่ใช่การค้นหาในช่วงที่อยู่ของผู้ให้บริการ อธิบายเครือข่ายที่แอปที่เรียกใช้กำลังใช้

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

adb shell dumpsys connectivity | grep -i -m5 vpn

บริการระยะไกลเห็นอะไรได้บ้าง

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

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

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

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

ทำไมทางออกที่โฮสต์เองจึงเปลี่ยนเพียงด้านเดียว

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

หลักฐานด้านหนึ่งเคลื่อนที่ อีกด้านคงที่ ช่องว่างระหว่างทั้งสองคือที่ที่ความคาดหวังแตกสลาย

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

ตัดสินด้วยคำถามที่คุณถาม

หากคำถามคือแอปหนึ่งสังเกตสถานะอุโมงค์ได้หรือไม่ อินเทอร์เฟซแพลตฟอร์มคือที่ที่ถูกต้องในการดู และคำตอบอยู่ในโค้ดและสิทธิ์ของแอปนั้น หากคำถามคือบริการอนุมานอะไรได้ เมทาดาทาการเชื่อมต่อคือหลักฐาน คำถามทางกฎหมายหรือสัญญาไม่มีฝ่ายใดตัดสินได้

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

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

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

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