ما الذي يفعله TUN، وما الذي لا يزال على بروتوكول VPN القيام به
ينقل TUN حزم IP بين النواة وبرنامج. أما النقل والمصادقة والتشفير فهي من عمل البروتوكول الذي يتحدثه ذلك البرنامج.
التعامل مع tun0 وبروتوكول VPN كأنهما شيء واحد يقود الناس إلى السجل الخطأ. الواجهة حد محلي يتبادل عبره برنامج في مساحة المستخدم حزم IP مع النواة. البروتوكول هو ما يفعله ذلك البرنامج بالحزم بعد حصوله عليها: النقل والمصادقة والتشفير والقرين. وإنشاء الجهاز لا يختار أيا من ذلك.
مكونان ومسار حزم واحد
تكتب النواة حزمة IP في الجهاز، ويقرأها البرنامج من واصف ملف. وفي الاتجاه الآخر يكتب البرنامج حزمة مرة أخرى فتمررها النواة كما لو وصلت على واجهة حقيقية. يحمل TUN حزم IP، بينما يحمل TAP إطارات Ethernet. وقراءة حزمة عند ذلك الحد تظهر التأطير، وهو بالضبط سبب وجود الجهاز.
كل ما بعد ذلك الحد هو شأن البرنامج. يمكن لبرنامجين أن يستخدما المفهوم نفسه للواجهة وأن يفعلا بالحزم أشياء مختلفة تماما. والجهاز نفسه لا رأي له فيما يحدث بعده. وواصف الملف هو المقبض الوحيد الذي يملكه البرنامج على جانب النواة.
أنشئ الجهاز، ثم راقب الحد
أنشئ جهازا عن عمد عندما تختبر الحد. الجهاز الدائم يبقى بعد العملية التي أنشأته، وهذا مفيد للتجارب ومصدر شائع للارتباك لاحقا. افحص الأعلام والمالك قبل لوم الـ VPN.
sudo ip tuntap add dev tun9 mode tun user alice
ip -d link show tun9تظهر تفاصيل الرابط نوع الجهاز والمالك المرتبط به. إذا لم تكن هناك عملية تفتحه، فإن الحزم المكتوبة فيه تذهب إلى لا مكان. والجهاز الذي لا عملية مرتبطة به قد يبدو سليما في قائمة الروابط بينما لا يمرر شيئا.
ما لا يستطيع اسم الواجهة أن يعد به
لا يقول اسم الواجهة شيئا عن التشفير أو المصادقة. يمكن للبرنامج أن يلف الحزم في TLS، أو في بروتوكول مخصص، أو في IPsec، أو في لا شيء إطلاقا. اختيار TUN بدلا من TAP يغير التأطير عند الحد، لا تصميم الأمان. والخيار المتعلق بالتأطير حقيقي، لكنه أصغر بكثير من مسألة الأمان.
الكشف يعمل بالطريقة نفسها: يرى المراقب البروتوكول الخارجي على السلك، لا ملصقا يقول أي جهاز محلي أنتجه. والنفق الذي يبدو كشيء آخر يفعل ذلك بسبب بروتوكوله الخارجي، لا بسبب اسم واجهته. ولا يستطيع المراقب أن يرى أي جهاز محلي أنتج الحزمة، بل شكل الحزمة فقط. افصل بين هذين السؤالين عندما تقارن المنتجات، لأن إجابة أحدهما لا تستلزم الآخر أبدا.
طابق الإصلاح مع المرحلة الفاشلة
افصل مراحل الفشل عندما ينكسر شيء. الجهاز المفقود وخطأ الصلاحيات وتسجيل الدخول المرفوض تنتج أدلة مختلفة وإصلاحات مختلفة. اقرأ الحالة المحلية أولا، ثم سجل البرنامج نفسه، ثم منظور القرين. اقرأ الثلاثة قبل أن تغير أي شيء.
ip -d link show tun0
journalctl -u openvpn-client@corp --since '10 min ago'إذا كان الجهاز موجودا وتحتفظ به عملية، فالحد المحلي يعمل والمشكلة أبعد. وإذا كان الجهاز مفقودا، فلن يساعد أي قدر من فحص بيانات الاعتماد. والمرحلة التي تستطيع تسميتها هي مرحلة تستطيع اختبارها. وتصف وثائق TUN/TAP الحد ونموذج الجهاز.