# بروتوكول نفقي

في شبكات الحاسوب، يسمح البروتوكول النفقي أو بروتوكول الاتصال النفقي أو بروتوكول الإنفاق أو بروتوكول النقل النفقي (بالإنجليزية: Tunneling Protocol)‏ للمستخدم بأن يصل إلى أو يقدّم خدمة ما غير مدعومة بشكلٍ مباشر في الشبكة، ويشمل ذلك إمكانيّة استخدام بروتوكول ما غير مدعوم في الشبكة. على سبيل المثال، تشغيل الإصدار السادس من بروتوكول الإنترنت (IPv6) في شبكة تدّعم الإصدار الرابع (IPv4) منه فقط. أحد الاستخدامات الهامة الأخرى هي تأمين خدمة غير متاحة أو غير آمنة في الشبكة الأساسيّة، مثل تزويد أحد المُضيفين البعيدين (Remote Host) بعنوان شبكة على الرغم من تواجده في شبكة بعيدة ذات معيار فيزيائي مختلف. يشمل استخدام البروتوكول النفقي إعادة بناء الرزمة (repackaging)، مما يسمح بوجود تطبيقات له في مجال التشفير، وتحديداً في إخفاء طبيعة المُعطيات التي تعبر النفق.
إنّ عملية بناء النفق تعتمد على نموذج طبقي مشابه لنموذج الاتصال المعياري (OSI) أو لنموذج الإنترنت (TCP/IP)، بشكلٍ عام، تعتمد آليّة عمل البروتوكول النفقي على استخدام قسم المُعطيات في الرزمة الأصليّة لحمل رزمة أخرى تُقدّم الخدمة الفعليّة. يعمل البروتوكول النفقي في نفس الطبقة أو في طبقة أعلى من النموذج مُقارنة بالبروتوكول الذي يقدّم خدمة النقل عبر الشبكة.

## نظرة عامة

لفهم النموذج الخاص ببناء النفق، يجب على مُهندسي الشبكات فهم كل من مجموعة البروتوكولات المُستخدمة لتوليد الحِمل وتلك المُستخدمة لتوصيله عبر الشبكة.
كمثال عن البروتوكولات النفقية، بروتوكول التوجيه والتغليف العام (Generic Routing Encapsulation GRE)، وهو بروتوكول يعمل على مستوى طبقة الشبكة، ويقوم بتغليف رزمة داخل رزم بروتوكول آخر يعمل ضمن نفس الطبقة هو بروتوكول الإنترنت (IP)، يسمح ذلك بنقل رزم البروتوكول التي تحمل عناوين خاصة (Private Address)، لا يُسمح باستخدامها في شبكة الإنترنت، ضمن رزم بروتوكول الإنترنت التي تحمل عناوين عامة مقبولة في هذه الشبكة.
بشكلٍ عام، لا تكون الأنفاق مُشفّرة، وهي تعتمد على الخدمات الأمنيّة التي تُقدمّها بروتوكولات النموذج، ويشمل ذلك الاعتماد على بروتوكول النقل الأمن (Secure Shell)، الذي يعمل على المنفذ (22)، لتشفير مُعطيات الحمل، بالإضافة لإمكانية دعم حزمة بروتوكول الإنترنت الأمنية (IPSec).

## بناء الأنفاق باستخدام بروتوكول الاتصال الآمن (SSH)

يتكوّن نفق بروتوكول الاتصال الآمن (SSH) من نفق مُشفّر تمّ إنشاؤه ضمن اتصال خاص ببروتوكول الاتصال الآمن. يستطيع المُستخدمون أن يقوموا ببناء هذا النوع من الأنفاق لنقل مُعطيات غير مُشفّرة عبر قناة مُشفّرة ضمن الشبكة. على سبيل المثال، يُمكن للأجهزة التي تُشغّل نظام التشغيل ويندوز أن تتشارك الملفات باستخدام بروتوكول خاص، لا يُشفّر، يُسمى بروتوكول مجموعة رسائل المُخدّم (Server Messages Block SMB)، ويتوجب حينها على المُستخدمون أن يُنشئ نفقاً أمناً مع المُخدّم (Server) أولاً باستعمال بروتوكول الاتصال الآمن (SSH)، وبعدها يُمكن أن يتمّ تبادل مُعطيات بروتوكول مجموعة رسائل المُخدّم (SMB) بشكل آمن عبر هذه القناة المُشفّرة.
لإنشاء نفقٍ أمن، يجب تهيئة عميل بروتوكول الاتصال الآمن (SSH Client) ليقوم بنقل المُعطيات التي يُراد تشفيرها إلى منفذ ما (ممثلاً بالدائرة الخضراء في الشكل) ثم توجيهها نحو منفذ أخر (ممثلاً بالدائرة الأرجوانية في الشكل) في مُضيف بعيد. بعد أن يتم إنشاء النفق، يمكن للمُستخدم أن يحصل على اتصال آمن عبر المنفذ المحلي (ذو اللون الأخضر) للحصول على إحدى خدمات الشبكة مثلاً. لا يُشترط أن يكون للمنفذان المحلي والبعيد نفس القيمة العدديّة.
تسمح أنفاق الاتصال الآمن بتجاوز الجدران النارية التي قد تمنع الوصول إلى خدمات مُحددة، على افتراض أنّ الموقع الذي يتمّ إنشاء النفق فيه يسمح بإنشاء الاتصالات نحو خارج الشبكة. على سبيل المثال، قد تمنع مُؤسسة ما مُستخدمي الشبكة فيها من النفاذ إلى صفحات الويب (رقم المنفذ هو (80)) بشكلٍ مُباشر بدون المرور عبر وكيل (Proxy)، ولذلك للتحكم بما يمكن للمستخدمين تصفحه. ويُمكن في هذه الحالة للمُستخدمين تجاوز هذه الرقابة وانشاء نفق آمن باستخدام بروتوكول الاتصال الآمن (SSH) مع مُخدّم ويب (Web Server) بعيد، وعندها يجب أن يقوم المُستخدمون بتعريف المُتصفح الذي يستعملُونه على المنفذ المحليّ الذي تمّ إنشاؤه لهذا الغرض.
تسمح الإصدارات الحاليّة من تطبيق (OpenSSH) بإنشاء أنفاق على مستوى الطبقتين الثانية أو الثالثة فقط، وذلك في حال كان كلا الطرفين يدعم هذه الميّزة. ويسمح ذلك، بنشاط بروتوكولات إدارة الشبكة التقليدية، أما عند استخدامِه في المُوجّهات (Router) فإنّه يسمح لكامل مُعطيات شبكة فرعية ما (Sub-network) موجودة على طرفي مُوجّه أو أكثر، بالحركة ضمن الأنفاق بشكل مشابه للحالة التي لا يوجد فيها أي مُوجّه، أو حدود على مستوى طبقة الشبكة.

## التحايّل على سياسة جدران الحماية

يُمكن للمُستخدمين -أيضاً- استخدام الأنفاق للتسلل عبر جدران الحمايّة، وفي هذه الحالة يتم الاعتماد على برتوكول يُسمح لرزمه بعبور جدار الحماية، لنقل رزم بروتوكول آخر، يمنع جدار الحمايّة حركة رزمه. وهنا يتمّ تغليف (Encapsulate) رزمة البروتوكول الممنوع داخل رزمة البروتوكول المسمُوح، ويُمكن أن يتمّ تجاوز جدار الحمايّة الذي لا يتحقق من عملية التغليف باستعمال هذه الطريقة.
يُمكن أيضاً الاعتماد على بروتوكول نقل النص التشعبي (HTTP) لإنشاء نفق يتجاوز جدار الحمايّة. في هذه الحالة، يتم الاتصال مع مُخدّم ويب بعيد باستخدام أمر الاتصال (CONNECT) الخاص بهذا البروتوكول، ثم وبشكلٍ مُشابه لأي اتصال ويب تقليدي يتمّ تبادل المُعطيات بين المُستخدم والمُخدّم عبر جدار الحماية. بعد ذلك، يقوّم مُخدّم الويب بإنشاء اتصال نحو الهدف الحقيقي، ويلعب دور الوكيل بين المُستخدم والوجهة الحقيقية، حيث يُرسِل المُعطيات نحو المُستخدم مُغلّفة ضمن رزم البروتوكول وكأنّها مُعطيات مخصصة لتصفّح الويب، ولهذا تعمد مُعظم الجدران الحمايّة إلى إغلاق هذه الثغرة من خلال تقييد استخدام أمر الاتصال الخاص ببروتوكول نقل النص التشعبي (HTTP).