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

الفحص الأول: أين تقع نقطة النهاية فعليًا؟

بوابة VPN تربط شبكتين تتحكم أنت في عناوينهما. أما الخدمة المُدارة فتُشغَّل خلف الباب الأمامي للمزوّد نفسه، وذلك الباب يتخذ أحد ثلاثة أشكال بحسب المنتج. إن لم تكن تعرف أي شكل تتعامل معه، فلن يساعدك أي قدر من العمل على المسارات، لأن العطل قد لا يكون عطل مسار على الإطلاق.

ShapeWhat it meansPass condition
Software on your VMOrdinary subnet addressingRoute and security group permit the client
Attached to your VPCPrivate, but only inside that VPCEndpoint associated, source allowed, route present
Provider-hosted, public endpointOptional private link, not private by defaultA private endpoint exists and DNS points at it

معظم الأمسيات التي تُهدر تأتي من تخطّي هذا التصنيف والانتقال مباشرة إلى جدول المسارات. فالخدمة المستضافة لدى المزوّد بنقطة نهاية عامة ليست خلف نفقك مهما قال الرسم، والخدمة المرتبطة بـ VPC لن تظهر أبدًا في إجابة DNS عامة.

الفحص الثاني: خدمة مرتبطة بـ VPC مثل ElastiCache

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

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

الفحص الثالث: نقطة نهاية PaaS تحمل اسمًا عامًا

تقدم Azure Database for PostgreSQL اسم خادم عامًا. وهي لا تمنحك عنوانًا خاصًا يمكنك تثبيته في ملف hosts وتمريره عبر بوابة. فنقاط نهاية خدمة الشبكة الافتراضية تحدّ من الشبكات الفرعية التي يجوز لها الوصول إلى مورد؛ وهي لا تُصرّح لعميل محلي يصل عبر VPN.

الحصول على وصول خاص يعني إدخال نقطة نهاية خاصة أو تصميم ربط خاص، ثم إضافة منطقة DNS خاصة حتى يُجيب الاسم العام بذلك الطرف بدلًا من الإنترنت. أما VPN مقترن بقاعدة نقطة نهاية خدمة فهو بنية مختلفة تبدو مشابهة في الرسم فقط. ويتبع App Service المنطق نفسه من الاتجاه المعاكس: يتيح تكامل VNet للتطبيق إجراء مكالمات صادرة إلى VNet، ولا ينشئ مسارًا خاصًا داخلًا من نفقك. لذلك يتطلب الوصول الخاص الداخل نقطة نهاية خاصة أو بيئة App Service أو بوابة موضوعة أمام التطبيق، وأيها يمكنك استخدامه يعتمد على الخطة.

الفحص الرابع: منتجات لها بابها الأمامي الخاص

لا يمكن ربط Firebase Hosting بـ Cloud VPN، لأن طبقة الاستضافة واجهة أمامية عالمية وليست شيئًا داخل VPC لمشروع. البديل الموثّق هو أن تبني نقطة الدخول الخاضعة للتحكم بنفسك، عبر نسخة وسيطة أو موازن تحميل مدعوم بحاوية تخزين. وفي كلتا الحالتين يتوقف الموقع عن كونه منتج استضافة صافيًا ويصبح بنية تحتية تديرها أنت الآن. وهذه المقايضة جديرة بالتسمية قبل أن يَعِد أحد بأن النفق سيغطيه.

تقع Private API Gateway أقرب إلى جانب خدمة الـ VPC: فنقطة نهاية VPC من نوع interface تنشر اسم مضيف تكون إجاباته عناوين خاصة، ويصل المرور من مقرك عبر النفق أو عبر ربط مخصص. ويجب أن تكون نقطة النهاية مرتبطة بالـ API، وأن تتطابق الشهادة واسم المضيف مع النطاق المخصص الذي يستخدمه المتصلون.

ترتبط أنفاق Google Cloud VPN بعناوين IP للأقران، لا بالأسماء. ويُضبط توجيه DNS بشكل منفصل، ولهذا قد يكون النفق سليمًا تمامًا بينما تظل عمليات البحث في المنطقة الخاصة البعيدة تفشل.

ثم حدّد موضع الحدّ

شغّل الاتصال نفسه من آلة افتراضية داخل الـ VPC. عندما ينجح هناك ويفشل من عميل VPN، تكون الفجوة بين مسار العميل ونقطة نهاية الخدمة: مسار أو مجموعة أمان أو سياسة نقطة نهاية أو اسم. وعندما تفشل المحاولتان، فلا شيء في تلك الشبكة يستطيع الوصول إلى الخدمة، ولم يكن الـ VPN هو العقبة قط.

getent hosts db.internal.example
nc -vz db.internal.example 5432

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

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