تصل تذاكر الدعم لتقول إن التطبيق يُظهر عنوانًا بينما سجّل الخادم عنوانًا آخر، ثم تسأل أيّ الاثنين يكذب. لا أحد منهما يكذب؛ فهما رصدان لشيئين مختلفين. العنوان المرتبط بواجهة شبكة، والعنوان المرتبط بمقبس، وعنوان المصدر الذي تراه خدمة بعيدة، تجيب عن ثلاثة أسئلة منفصلة. شبكة VPN تضيف سياقًا شبكيًا إلى الهاتف و لا تجمع تلك الثلاثة في رقم واحد على مستوى الجهاز. اقرأ أسماء الحقول في التذكرة قبل أن تقرأ العناوين.

ما تصفه التذكرة عادةً

تخيّل هاتفًا متصلًا بشبكة Wi-Fi ونفقًا قائمًا. تحتفظ واجهة Wi-Fi بعنوان شبكة محلية، وتحتفظ واجهة النفق بعنوان داخلي مُخصَّص، ويصل الطلب الخارج عبر النفق إلى خدمة عامة من أي مصدر ينجو من أي ترجمة على الطريق. التطبيق الذي يطبع العنوان الداخلي والخادم الذي يسجّل المصدر المترجَم كلاهما يبلّغان بدقة، ولن تتطابق القيمتان أبدًا.

تختلف الرصدات الثلاثة في ما يمكنها إثباته، لا في ما تصفه فقط.

ObservationWhat it describesWhat it cannot prove
An address on a local interfaceOne configured attachment: Wi-Fi, cellular or a tunnelThe source a remote site receives
A socket's local endpointThe binding used by that one connectionThe address after translation further along
The peer address at a serviceWhat arrived at that observation pointAny other interface on the phone

أبقِ هذا الجدول قريبًا من الشيفرة التي تملأ هذه القيم في تذكرة، لأن معظم الالتباس هنا خلط بين أعمدة وليس عطلًا في الشبكة.

ما يمكن لنداء المقبس الإجابة عنه وما لا يمكن

على مستوى واجهة البرمجة، يبلّغ getsockname عن الطرف المحلي المرتبط حاليًا بمقبس معيّن. وبالنسبة إلى مقبس متصل، فإن ذلك هو المصدر الذي اختاره النواة لذلك الاتصال، وهو أدق أصلًا من أي قائمة واجهات. وهو ليس بحثًا عن عنوان عام، واستدعاؤه على مقبس غير مرتبط لا يخبرك تقريبًا بأي شيء. وأي قيمة يعيدها يمكن أن تُعاد كتابتها لاحقًا في المسار، لذا فإن رصد الخدمة نفسها وحده هو المرجع الموثوق بشأن ما استلمته الخدمة.

على منصات Apple، لجانب الواجهات سطح منفصل: تُدرج إعدادات النفق العناوين المخصَّصة لواجهة النفق. وقراءة تلك العناوين تخبرك كيف ضُبط النفق، ولا تخبرك أي مسار سلكه طلب معيّن، لأن التوجيه وقواعد كل تطبيق تقرر ذلك لكل اتصال.

النفق المنقسم يجعل الفجوة مرئية. قد يخرج طلب عبر النفق في حين لا يخرج التالي، الموجّه إلى وجهة أو عائلة عناوين مختلفة، لذا يمكن أن تكون نتيجتان من التطبيق نفسه يفصل بينهما ثوانٍ صادقتين ومختلفتين.

اختر الرصد الذي يطابق السؤال

اختر عن قصد بدلًا من إضافة أدوات قياس إلى كل شيء. ولما يراه الخادم الخلفي، سجّل المصدر عنده، وحيث يقف وكيل عكسي في المقدمة، اقرأ عنوان العميل من ترويسة التمرير التي ينشرها نشرك فعلًا لا من أي شيء أرسله العميل.

لمعرفة ما إذا كان النفق مضبوطًا، اقرأ الواجهة. ولمعرفة ما إذا كانت حركة هذا التطبيق قد استخدمته، أرسل حركة من ذلك التطبيق إلى وجهة تتحكم بها وقارن المصدر عند الطرفين.

قواعد كل تطبيق تستحق جملة خاصة بها. نتيجة المتصفح دليل على ذلك المتصفح، والنفق المُدار لكل تطبيق يمكنه وضع تطبيقين على الهاتف نفسه في مسارين مختلفين في اللحظة نفسها. التحقق من التغطية يعني إرسال حركة من التطبيق المعني، في عائلة العناوين المعنية.

أسماء الواجهات ليست كاشفًا

لا تستخدم اسم واجهة كفحص لـ VPN أيضًا. الأسماء ليست عقدًا عامًا، ويمكن للهاتف أن يحمل عدة ارتباطات بينما يحمل واحد منها فقط طلبك.

سمِّ الحقل على اسم الرصد الذي يحمله. local_interface_address و socket_local_endpoint و service_observed_source أسماء ثقيلة ولا لبس فيها، ولا لبس فيها هو ما تريده عندما تصل القيمة إلى تذكرة دعم بعد أسبوع. عمود واحد باسم IP الجهاز سيجمع الثلاثة ثم يُوثق به كأنه رقم واحد.

أبعد الهوية عن عمود العنوان

مخرج VPN مشترك ليس هوية مستخدم، والعنوان الخاص ليس بيانات اعتماد للوصول. كلاهما يصف مسارًا لا شخصًا، ومعاملة أيّ منهما كتوثيق تحوّل حادث توجيه إلى قرار تصريح.

حين يسأل أحدهم أي عنوان يملكه الهاتف، فالجواب المفيد سؤال عن أي اتصال وأي راصد. تعريف getsockname يستحق الاقتباس للحالة الوسطى، لأنه يحسم سؤال المقبس دون أن يزعم حسم السؤالين الآخرين.

ثم اكتب أيّ الثلاثة يحتاج منتجك فعلًا إلى عرضه، واحذف الاثنين الآخرين من الواجهة.

مقالات ذات صلة