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

التصميمان يعدان بأشياء مختلفة

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

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

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

الماسكيريد: نظير واحد على الطرف البعيد

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

sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i eth1 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

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

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

التوجيه بالسياسة: احتفظ بالمصدر وأضف مسار عودة

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

ip rule add iif eth1 table vpn
ip route add default dev tun0 table vpn

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

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

قرّر بحسب الملكية وبحسب ما يسجّله الطرف البعيد

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

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

التصاميم الهجينة طبيعية: توجيه بالسياسة داخل شبكتك، وماسكيريد عند حافة المزوّد. المهم هو تدوين أي قفزة تترجم وأي قفزة توجّه، لأن قاعدة NAT عرضية تُضاف لعميل واحد تخفي المصدر عن كل عميل في السلسلة نفسها.

تحقق من عميل، ثم من عميل ثانٍ

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

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

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

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