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

تشغيل عميلين بترتيب ما لا يحقق ذلك. التوجيه هو ما يحققه.

قارن الترتيبين الممكنين

اختر الطبقة الخارجية بوصفها النفق الذي يمكن للإنترنت العام الوصول إلى نقطة نهايته. الطبقة الداخلية هي النفق الذي لا يجيب خادمه إلا عبر ذلك المخرج. على Windows يكون التقسيم العملي هو WireGuard في الخارج وعميل الشركة في الداخل. العامل الحاسم هو التحكّم.

يطبّق عميل WireGuard الرسمي ملف تكوين كاملاً، بما في ذلك المسارات وDNS. أما عملاء الشركات التجاريون فيخفون كليهما عادةً. ووضع عميل يخفي تفاصيله في الخارج يتركك تخمّن المسار الذي يسلكه الاتصال تحته.

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

دع AllowedIPs يسمّي نطاق الشركة فقط

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

تحتاج الطبقة الخارجية بنفق كامل إلى 0.0.0.0/0 ناقص النطاقات المحلية. الصيغة لا تستطيع التعبير عن استثناء، لذلك يجب حساب المكمّل ولصقه.

[Interface]
PrivateKey = ...
Address = 10.99.4.2/32

[Peer]
PublicKey = ...
Endpoint = 198.51.100.44:51820
AllowedIPs = 198.51.100.44/32, 10.20.0.0/16, 10.21.0.0/16

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

الترتيب والمقاييس والمحوّل الثاني

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

# which interface currently claims the corporate prefix?
Find-NetRoute -RemoteIPAddress 10.20.10.5 | Select-Object -First 1

# prefer the corporate interface for its own prefixes
Set-NetIPInterface -InterfaceAlias 'Corp VPN' -InterfaceMetric 3
Set-NetIPInterface -InterfaceAlias 'wg-personal' -InterfaceMetric 40

wg show interfaces

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

العملاء المبنية على OpenVPN 2.6 تضيف فخاً خاصاً بها. فعندما يكون محوّل تفريغ قناة البيانات مشغولاً بالفعل، يرفض المثيل الثاني ببساطة أن يبدأ. وإضافة disable-dco إلى الملف الشخصي تعيده إلى مسار TAP الأقدم، وبعدها يعمل الاثنان جنباً إلى جنب.

أين ينكسر المسار المتداخل

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

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

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

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