عميل VPN محمول دون حقوق مسؤول: ما الذي يبقى معطوبًا
يمكن لعميل VPN محمول أن يتجاوز المثبّت ويظل بحاجة إلى جهاز نفق ومسار وكتابة في المحلّل. شغّل هذه الاختبارات قبل أن تثق به.
«محمول» يصف المثبّت لا النواة. يمكن أن يصل العميل كملف تنفيذي واحد على ذاكرة USB ويظل بحاجة إلى جهاز نفق وإدخال في جدول المسارات وكتابة في المحلّل قبل أن تتحرك أول حزمة. وأيٌّ من هذه الثلاثة ستسمح لك الآلة الهدف بلمسه يحدّد ما إذا كان ذلك البناء يعمل عليها أصلًا. والاختبارات أدناه تجيب عن السؤال بالترتيب الذي سيصطدم به العميل.
«محمول» يغطي ثلاثة وعود مختلفة، وواحد فقط منها مجاني
لا مثبّت يعني أن المورّد لم يسجّل خدمة ولم يوزّع أداة إزالة ولم يضف مدخلًا في القائمة. لا مسؤول يعني أن حسابًا عاديًا يستطيع تشغيل العميل وإتمام اتصال. لا تغيير في المضيف يعني أن الآلة تبدو مطابقة بعد أن تخرج. صفحات التنزيل التي تقول «محمول» تَعِد عادةً بأول هذه فقط، والوعدان الآخران هما حيث تفشل عمليات النشر. ويمكن أن يكون البناء محمولًا بالمعنى الضيق، أي أنه يعمل من وسائط للقراءة فقط دون أي كتابة لملفات نقطية، وهذا لا يقول شيئًا عن حزمة الشبكة.
الوعود المكلفة هي الثاني والثالث. ملف تنفيذي واحد يحتاج إلى مهايئ أو مسار أو كتابة في المحلّل يطلب من نظام التشغيل صلاحية لم يغطّها وسم «محمول» قط.
اعثر على المساعد المميّز الذي سيستدعيه العميل
لا يكاد أي عميل VPN ينقل الحزم بنفسه. على Windows يمرّ مسار البيانات عبر مرشّحات WFP ومحرّك Base Filtering Engine، وعلى macOS عبر موفّر NetworkExtension يوافق عليه المستخدم في إعدادات النظام، وعلى Linux عبر جهاز tun بالإضافة إلى حزمة التوجيه. الملف التنفيذي الذي نسخته هو سطح تحكّم لتلك المكوّنات وليس بديلًا عنها. اسأل أي مكوّن يتوقّعه العميل، ثم تأكّد من أنه مثبّت ويعمل وقابل للاستخدام من حسابك.
Linux أسهل مكان لإثبات النقطة لأن الفحص نداء نظام واحد. فتح /dev/net/tun وطلب جهاز من النواة يتطلّب CAP_NET_ADMIN، و توثيق TUN/TAP في النواة يذكر قاعدة الملكية والقدرة معًا. شغّل الاختبار بالحساب الذي سيشغّل العميل، لا بصلاحية root.
ls -l /dev/net/tun
ip tuntap add dev vpntest mode tun
ip link delete vpntest
خطأ في الصلاحيات عند السطر الأوسط هو الجواب الذي كنت تبحث عنه: هذا الحساب لا يستطيع إنشاء واجهة نفق، لذا أي عميل يعمل في فضاء المستخدم ويحتاج واحدة يفشل عند الاتصال لا عند التنزيل. السطر الأخير يزيل جهاز الاختبار ولا يطبع شيئًا عندما ينجح. وإذا نجح السطران معًا، فلم يغيّر المضيف شيئًا دائمًا.
اختبر تغييرات المسار والمحلّل قبل الاتصال الأول
تحوّل النفق المنقسم الاتصال إلى قرار توجيه، بينما يحوّله النفق الكامل إلى استبدال للمسار الافتراضي. كلاهما كتابة في حزمة شبكة المضيف، وكلاهما يفشل لحساب غير مميّز حتى عندما يبدأ العميل نفسه نظيفًا. المحلّل هو الكتابة الثالثة، وهو على مضيفات systemd عادةً آخر ما ينكسر. وهذا الترتيب مهم حين تقرّر أين تنفق تثبيتًا بصلاحيات مرتفعة.
يحتاج اختبار المسار إلى وجهة تهمّك فعلًا، لذا استبدل شبكة فرعية من ملفك الشخصي بدلًا من العنصر النائب أدناه. ويجب أن يوجد اسم الجهاز كي يتمكّن المسار من الالتصاق بشيء.
ip route add 10.20.0.0/16 dev vpntest
ip route del 10.20.0.0/16
resolvectl query intranet.example.internal
السطر الأول الذي يعيد RTNETLINK answers: Operation not permitted يعني أن الحساب لا يستطيع تثبيت المسار الخاص الذي يتطلّبه الملف الشخصي. السطر الثاني يثبت الحق نفسه بالعكس، وهذا مهم لأن العميل الذي يستطيع إضافة المسارات لا إزالتها يترك خلفه جدولًا معطوبًا. ثم يُظهر استعلام المحلّل ما إذا كانت الأسماء الخاصة تُحلّ عبر النفق أو تتسرّب إلى أي محلّل يثق به المضيف أصلًا.
شغّل الثلاثة جميعًا ما دام جهاز الاختبار موجودًا، ثم احذفه. المسار الذي يشير إلى جهاز اختفى هو السبب الأكثر شيوعًا لفقدان حاسوب محمول للاتصال بعد محاولة اتصال فاشلة.
قرّر ما يجب أن يبقى بعد الجلسة
حذف المجلّد ليس خطة تنظيف. فالمهايئات والمسارات وإعدادات المحلّل والشهادات الموثوقة وبيانات الاعتماد المخزّنة يمكن أن يعيش كلٌّ منها بعد العملية، وقد تستعيد خدمة تعمل عند الإقلاع بعضها دون أن تسأل. اكتب ما يُسمح للعميل بتركه قبل تشغيله، لا بعد أول قطع اتصال فاشل.
القاعدة العملية هي أخذ لقطة للمساحات الثلاث التي أنت على وشك تغييرها ومقارنتها بعد ذلك. سجّل الواجهات وجدول التوجيه الرئيسي وحالة المحلّل قبل الاتصال الأول، ثم كرّر القراءات الثلاث نفسها بعد أن يخرج العميل.
ip -brief addr show
ip route show table main
resolvectl status
كل ما يظهر في الالتقاط الثاني ويغيب عن الأول يحتاج إلى مالك. إما أن يزيله العميل عند الخروج، أو تزيله أنت بالأوامر نفسها التي أنشأته بها، وهذا الإزالة تنتمي إلى ملاحظات النشر لا إلى ذاكرة أحد عن ما حدث. على Windows فإن القراءات المكافئة هي Get-NetAdapter و Get-NetRoute و Get-DnsClientServerAddress، وهي لا تحتاج إلى رفع صلاحيات لكنها تُظهر المخلفات نفسها.