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

من ينهي الجلسة المشفرة فعليًا

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

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

NAT يعيد كتابة الضيف حتى يبدو مثل المضيف

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

# on the host: adapter mode and NAT DNS behaviour
VBoxManage showvminfo "lab-vm" | grep -i -E "nic|nat"
VBoxManage modifyvm "lab-vm" --natdnshostresolver1 on

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

الجسر يمنح الضيف إيجاره الخاص وتعرضه الخاص

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

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

لماذا لا يمكن أن يكون الضيف بوابة المضيف

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

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

ssh -N -f -L 8080:internal-host.example:80 user@lab-vm

المحلّلات والمسارات لا تعبر الحدود

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

# on the host
VBoxManage showvminfo "lab-vm" | grep -i -E "nic|nat"
# inside a Linux guest
ip -4 route
resolvectl status
# inside a Windows guest
Get-DnsClientServerAddress

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

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