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

طريقتان لتحديد ما يدخل النفق

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

أما VPN القائم على التوجيه فقد ينشئ واجهة تمثل النفق ويتيح لجدول التوجيه إرسال الحركة إليها. ولا يزال خادم IKE يثبّت الحالة والسياسة الخاصة بكل واجهة، وهذه هي التفصيلة التي يتجاهلها الناس عندما يقررون أن المسارات حلّت محل التشفير. فالتصميمان يشفّران بـ IPsec، ولا يختلف إلا آلية الاختيار.

اقرأ المقارنة أدناه كمجموعة من بصمات الأعطال لا كلوحة نتائج، لأن أي عمود لا يفوز بحد ذاته.

AspectPolicy-basedRoute-based
What selects trafficNegotiated selectorsA route into the tunnel interface
Adding a networkEdit selectors on both peersAdd a route, widen the selector once
Dynamic routingAwkward to run over the tunnelRuns over the interface directly
Typical failureTunnel up, host outside the selectorTunnel up, no route or wrong source

قائم على السياسة: المحدِّد هو العقد

تخضع المحدِّدات للتفاوض، ولا تُضبط فقط. اقترح 10.10.0.0/16 في أحد الجانبين و10.10.1.0/24 في الجانب الآخر، فتغطي الرابطة ما استقر عليه التفاوض بينما يبقى كل مضيف آخر خارجها.

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

sudo ip xfrm state
sudo ip xfrm policy
sudo swanctl --list-sas

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

قائم على التوجيه: الواجهة هي العقد

يمنح واجهة XFRM النفق اسماً وهوية، وتصل الحركة إليها لأن جدول التوجيه يقول ذلك. وعندئذ تصبح البادئات البعيدة المتعددة مشكلة توجيه لا مشكلة محدِّد، ويمكن لبروتوكول توجيه أن يعلنها. وهذا هو المكسب الحقيقي، لا التشفير.

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

sudo ip link add xfrm0 type xfrm dev eth0 if_id 42
sudo ip route add 10.20.0.0/16 dev xfrm0
ip -s link show xfrm0
ip route get 10.20.5.10

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

أين يفترق التصميمان فعلاً

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

لا يستبدل أي من النموذجين جدار الحماية، والمقارنات تتوقف عادة قبل هذه النقطة. فالمحدِّد الواسع أو المسار العريض يقرر ما يُشفَّر، لا ما يُسمح به.

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

الترحيل دون فقدان مسار الرد

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

عندما يتصل النظيران بينما لا تستطيع مضيفات LAN ذلك، افحص مسار الرد وعنوان المصدر الذي سيستخدمه المضيف البعيد. فالمضيف ذو الواجهتين قد يرد من الواجهة الخطأ، ولا يصلح أي تغيير في المحدِّد ذلك. التقط الحركة عند الطرفين قبل تعديل الخوارزميات.

ip route get 10.20.5.10
sudo tcpdump -ni any host 10.20.5.10 and icmp
sudo swanctl --list-conns

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

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