توجيه الانقسام لعملاء نقطة الاتصال ليس استبعاداً لكل تطبيق
استبعاد تطبيق من الـ VPN يغيّر الهاتف فقط. يحتاج الحاسوب المحمول المرتبط بقاعدة توجيه خاصة به، تُطابق على المصدر والوجهة و NAT.
متطلبان يبدوان متكافئين ليسا كذلك: «استبعاد هذا التطبيق من الـ VPN» و«إرسال هذه الوجهة الواحدة خارج الـ VPN للحاسوب المحمول على نقطة الاتصال الخاصة بي». الأول يغيّر طريقة اختيار مقبس على الهاتف لشبكة ما. الثاني يجب أن يغيّر قرار إعادة توجيه لحزمة وصلت من جهاز آخر بعد أن يكون الهاتف قد قبلها بالفعل. الخلط بين الاثنين هو ما يجعل عميل نقطة الاتصال ينتهي باستثناء كان ينطبق دائماً على متصفح الهاتف وحده.
نظامان فرعيان يملكان السؤالين
يُبقي أندرويد شبكات التطبيقات والمشاركة عبر الربط منفصلة. تُسنَد مقابس التطبيقات إلى شبكة بواسطة مكدّس الاتصال، ويقرّر تطبيق VPN أيّاً من مقابسه يدخل النفق. وتتولّى منظومة الربط معالجة الحزم المُعاد توجيهها من عميل مرتبط، وهي تسأل netd عن المسارات وقواعد السياسة والترجمة على واجهة المصبّ.
يُقيَّم استبعاد تطبيق واحد عند فتح التطبيق لمقبس. والحزمة المُعاد توجيهها لا تصل إلى ذلك الفحص أبداً، لأنها لم تنشأ من مقبس تطبيق على هذا الجهاز. وهذا هو السبب الكامل في أن الإعدادين لا يصلحان بديلاً أحدهما عن الآخر، وليس عيباً في أي منهما.
ما يغيّره الاستبعاد لكل تطبيق فعلاً
يمكن لمنشئ VpnService أن يسمّي حزماً تبقى خارج النفق باستخدام addDisallowedApplication، أو أن يسمّي الحزم الوحيدة المسموح لها بالدخول باستخدام addAllowedApplication. ثم تفتح تلك التطبيقات مقابس على الشبكة الأساسية بينما يظل الـ VPN مالكاً للمسار الافتراضي لكل شيء آخر.
النطاق دقيق: مقابس الحزمة نفسها، على هذا الجهاز، ما دام النفق قائماً. وهو لا يقول شيئاً عن المرور المُعاد توجيهه، ولا عن جهاز ثانٍ، ولا عن حزم يرسلها النظام نيابة عن الربط.
وهو ليس تحكّماً في الوجهة أيضاً. استبعاد متصفح يستبعد كل عنوان يصل إليه ذلك المتصفح، بما في ذلك العنوان الذي أردت إبقاءه داخل النفق. وعندما يسمّي المتطلب وجهةً بدلاً من تطبيق، فإن منتقي التطبيقات هو الأداة الخطأ بحكم التصميم.
كيف تبدو الحزمة المرتبطة بالنسبة إلى الهاتف
تصل حزمة العميل على واجهة نقطة الاتصال بعنوان مصدر خاص يخصّصه الهاتف، مثل 192.168.43.20، ووجهة عامة. ولإعادة توجيهها يحتاج الهاتف إلى مسار نحو وصلة علوية وإلى قاعدة ترجمة كي تجد الردود طريقها إلى الخلف، لأن العنوان الخاص للعميل لا معنى له على شبكة الخلوي.
يعبّر أندرويد عن ذلك بقواعد سياسة تختار جدول توجيه، ويعيد netd بناء الجداول والقواعد ذات الصلة عند تغيّر الشبكات وشبكات VPN. ورقم جدول أو أولوية قاعدة أو اسم واجهة منسوخ من منشور منتدى، أو من الطراز نفسه في إصدار أقدم، لا يثبت ملكية دائمة. وهذا البناء المتكرر هو أيضاً سبب أن قاعدة مكتوبة يدوياً قد تعمل ساعة ثم تتوقف بعد إعادة الاتصال التالية.
السياسة التي يحتاجها استثناء نقطة الاتصال فعلاً
اكتب القرار في صورة مصدر ووجهة ومسار مقصود قبل أن تمسّ أي قاعدة. والشكل الأدنى لوجهة واحدة معتمدة يبدو هكذا:
| Source | Destination | Intended path |
|---|---|---|
| One authorized hotspot client | One approved public service address | Ordinary cellular uplink |
| The same client | All other covered destinations | Shared VPN |
| The phone's own apps | Their existing destinations | Unchanged phone policy |
يجب أن يكون الاتجاهان كاملين. يحتاج الفرع المباشر إلى مسار صالح عبر الوصلة العلوية الخلوية الموجودة فعلاً في الوقت الراهن؛ ويحتاج فرع الـ VPN إلى مسار النفق مع إذن بإعادة التوجيه. وأي ترجمة للمصدر يجب أن تطابق المخرج الذي اخترته، لأن NAT المطبّق على واجهة نفق يُظهر عنوان النفق لا العنوان الخلوي، وحينها يختلف مسار العودة عن مسار الخروج.
يجب أن تصل الردود إلى العميل نفسه في المصبّ عبر حالة متتبَّعة أو مسار صريح، وعدّاد الحزم الصادرة لا يثبت شيئاً من ذلك. وأبقِ النقل الخارجي للـ VPN نفسه خارج نطاق الاستثناء أيضاً، وإلا ورثت حزم حامل النفق سياسة كُتبت لطلب ويب من عميل.
عنوان واحد مُلتقط ليس وجهة
عنوان IPv4 واحد يُقرأ من متصفح هو لقطة واحدة. الخدمات الكبيرة تجيب من أي كاست أو من مجموعة متغيّرة من عناوين الحافة، وكثير منها ثنائي المكدّس، وقد يمسّ تدفّق تسجيل الدخول مضيفات مصادقة وقياس لا تعرضها الصفحة أبداً. والاستثناء المبني حول العنوان الذي صادف أن رأيته ينكسر في المرة التالية التي تعيد فيها الخدمة موازنة نفسها.
استخدم العناوين الموثّقة من مالك الخدمة، أو نطاقاً تنشره، واحسب حساب عائلتي العناوين. وإذا تعذّر التعبير عن المتطلب كمجموعة مستقرة، فهو على الأرجح سؤال سياسة للخدمة لا حيلة توجيه على هاتف.
تحقّق من جانب المصبّ
ثلاثة فحوص، بهذا الترتيب: الخدمة المختارة من الحاسوب المحمول، ووجهة عادية يجب أن تبقى داخل الـ VPN، وتطبيق على الهاتف يجب أن يبقى غير متأثر. ثم كرّر ذلك بعد إعادة الاتصال وبعد تغيّر الوصلة العلوية، لأن الجداول حينها تُعاد بناؤها.
إذا لم تستطع منظومة المشاركة في الهاتف الالتزام بذلك العقد خلال إعادة الاتصال، فانقل السياسة الانتقائية إلى موجّه مصبّ مدعوم بدلاً من تكديس قواعد الجذر على الجهاز. ويستطيع الموجّه التعبير عن مطابقة المصدر والوجهة بمالك مستقر، وتُعدّ وثائق وحدة الربط المرجع الصحيح لما يفعله الهاتف في الواقع.