VPN للآيفون حسب النطاق: قرّر أين يحدث الرفض
يمنع NeverConnect بدء تشغيل VPN؛ وهو لا يحجب موقعًا. حدّد ما إذا كان الرفض ينتمي إلى حدود الخدمة أم إلى سياسة مُدارة.
يُكتب متطلبان في جملة واحدة ثم يُنفَّذان في مكانين مختلفين تمامًا. عبارة «يجب ألا يكون هذا الموقع متاحًا إلا عبر VPN» تصريح عن القبول، وموطنه الطبيعي هو الشبكة الموجودة أمام الخدمة. وعبارة «يجب ألا يتصل هذا الآيفون بذلك النطاق مباشرة أبدًا» تصريح عن الجهاز، ولا يمكن التعبير عنها إلا بسياسة عميل مُدارة. قرّر أي المتطلبين لديك فعليًا قبل فتح محرّر ملف تعريف.
متطلبان يبدوان متطابقين
خذ المضيف التوضيحي records.corp.example. في حالة القبول تنشره فقط على العناوين الواقعة خلف VPN، لذا تفشل محاولة مباشرة من هاتف على شبكة خلوية عند الشبكة، بينما ينجح الطلب نفسه عبر النفق ولا يزال يطالب بتسجيل دخول حقيقي إلى الحساب. في حالة الجهاز قد يصل الهاتف إلى الإنترنت العام، لذا يُحلّ المضيف ويجيب للجميع، والمكان الوحيد لإيقاف المحاولة هو الجهاز. ولا تستطيع الخدمة فرض قاعدة على طلب لا يصل إليها أبدًا.
يظهر إساءة قراءة المتطلب في عملية نشر محددة. يبقى السجل عامًا، ويعتقد المشغّل أن VPN إلزامي، ويُظهر تدقيق محاولة خلوية أن الطلب لم يدخل النفق قط. لا شيء في السجلات يبدو معطلًا، لأن لا شيء قد حُجب.
اقرأ إجراءات التقييم حرفيًا
تضم آلية التشغيل عند الطلب طبقتين متمايزتين من الإجراءات، وخلطها ينتج معظم الالتباس هنا. يقرّر إجراء القاعدة الخارجية ما يحدث للنفق عند مطابقة القاعدة، ويقرّر إجراء تقييم الاتصال ما يحدث لمطابقة اسم مضيف داخل قاعدة تقييم. ولا يصف مرجع Never Connect من Apple سوى الطبقة الثانية.
| Layer | Action | What it controls |
|---|---|---|
| Outer rule | connect | Bring the tunnel up when the rule matches |
| Outer rule | disconnect | Tear the tunnel down when the rule matches |
| Outer rule | evaluateConnection | Run a hostname evaluation instead of acting directly |
| Outer rule | ignore | Leave the current tunnel state alone |
| Connection evaluation | connectIfNeeded | Start the tunnel when the hostname cannot be resolved |
| Connection evaluation | neverConnect | Do not start the tunnel for that match |
neverConnect هو القيمة الأكثر إساءة قراءة، لأن الاسم يوحي بالحجب. فهو يحكم بدء النفق لاسم مضيف مطابق، لا إذن الهاتف بالوصول إلى اسم، لذا فإن إدخال Never Connect ليس حجبًا للنطاق. وتسميته كذلك في مستند تصميم هي الطريقة التي تُعتمد بها عملية نشر بحدّ تنفيذ لا تملكه.
عندما تملك الخدمة، نفّذ الإنفاذ عند الحدود
تقييد القبول يعني نشر الاسم فقط حيث يستطيع مسار VPN الوصول إليه، ثم اختبار أن المسار المقصود يعمل ومسار آخر لا يعمل. غطِّ كل سجل منشور، وكلا عائلتي العناوين إن كنت تنشرهما، وأي اسم وسيط أو بديل يستخدمه التطبيق. فسجل CNAME قديم لا يزال يشير إلى موازن حمل عام يُبقي المسار المباشر حيًّا مهما كان السجل الرئيسي مرتبًا.
هذا يحمي الخدمة لا الجهاز. فهو لا يمنع الهاتف من إرسال استعلام DNS، ولا يمنع التطبيق من المحاولة. وإذا كانت تلك المحاولات مقبولة، فإن الإنفاذ عند الحدود هو الخيار الأرخص والأدوم، لأنه يصمد لكل عميل لا للعملاء الذين أعددتهم فقط. كما يصمد أمام هاتف لم يُسجَّل قط.
عندما يجب ألا يحاول الهاتف أصلًا، تحتاج إلى سياسة مُدارة
يتطلب إيقاف المحاولة سياسة إنفاذ مدعومة تغطي التطبيق أو الوجهات قبل الاتصال، وأثناء فشل النفق، وبعد تغيير الشبكة. اطلب من مزوّد VPN أو إدارة الأجهزة أن يسمّي تلك السياسة، وأن يوضح ما إذا كانت تتطلب إدارة تنظيمية، وأن يصف ما تؤثر فيه أيضًا. فالنفق لكل تطبيق مع قاعدة تشغيل عند الطلب ليس الشيء نفسه، ولا اختصار الشاشة الرئيسية إلى اتصال.
اختبر حالة الفشل بتعطيل النفق ومراقبة ما إذا كان الطلب يخرج. فإن خرج، فالحد الذي وثّقته ليس الحد الذي نشرته.
قرّر بثلاثة أسئلة
أولًا، هل تتحكم في الخدمة أم في الهاتف فقط؟ ثانيًا، هل يجوز للجهاز استخدام الإنترنت العام بشكل مشروع لكل شيء آخر؟ ثالثًا، هل الهاتف مُدار، وبواسطة من؟ امتلاك الخدمة مع أسطول مُدار يعني أن أي طبقة متاحة، بينما امتلاك الهاتف وحده يجعل سياسة العميل الخيار الوحيد ويجب أن تكون مدعومة.
أجب عن تلك الأسئلة الثلاثة قبل لمس أي ملف تعريف. عندئذٍ يتوقف الإعداد عن كونه تخمينًا لما يعنيه مربع اختيار اسمه Never.