دليل إرشادي
كيفية إعداد VPN على Linux
عميل المزوّد من مستودعه الخاص، وبديل ملف الإعداد باستخدام أدوات النظام نفسه، وتفصيل DNS الذي يتسرّب على Linux أكثر من أي مكان آخر، والفحوصات من الطرفية. كُتب هذا الدليل لنظام Ubuntu 26.04 LTS وNetworkManager.
قبل أن تبدأ
هذا الدليل لا يختار مزوّداً نيابةً عنك
كل خطوة أدناه واحدة مهما كان المزوّد الذي تستخدمه، ولذلك لا نذكر أي مزوّد هنا. الاختيار مهمة منفصلة تُنجز في القائمة، حيث يستند الاختيار إلى درجة منشورة، لا إلى صفحة تنزيل.
ثبّت العميل من مستودع المزوّد نفسه، باستخدام مفتاح التوقيع الوارد في تعليمات المزوّد نفسه. لا تلصق أبداً أمراً للتثبيت من سطر واحد من منتدى أو مدوّنة في الطرفية: فالأمر يعمل بصلاحيات root، ولا تعرف ما الذي جلبه. يمكن التحقق من حزمة قادمة من مستودع موقّع؛ أما النص البرمجي الممرّر إلى shell فلا يمكن التحقق منه.
ثبّت العميل
يوجد مساران على Linux، وكلاهما واضح. عميل المزوّد نفسه هو المسار الأول؛ فهو يوفّر مفتاح إيقاف الاتصال، واختيار الخادم، ومعالجة DNS مجاناً. وملف إعداد باستخدام أدوات النظام نفسه هو المسار الثاني، ويشرح القسم الأخير من هذا الدليل تكلفته.
- سجّل الدخول إلى موقع المزوّد وافتح تعليماته الخاصة بـ Linux من منطقة الحساب. ستذكر التعليمات المستودع والمفتاح والحزمة؛ اتبعها ولا تتبع شيئاً آخر.
- أضف المستودع ومفتاحه، ثم ثبّت الحزمة باستخدام مدير حزم التوزيعة. المفتاح هو ما يتيح لمدير الحزم رفض حزمة تم العبث بها، ولذلك فإن المستودع الذي أضفته من دونه هو مستودع وضعت ثقتك فيه.
- فعّل خدمة العميل لكي تبدأ عند الإقلاع. عادةً ما يتكوّن العميل من خدمة تعمل بصلاحيات root وتطبيق سطح مكتب يتصل بها؛ فالخدمة تملك النفق، ومفتاح إيقاف الاتصال الذي يفترض أن يعمل عند الإقلاع يحتاج إلى أن تكون الخدمة قيد التشغيل منذ الإقلاع.
- سجّل الدخول إلى العميل — من التطبيق، أو من سطر الأوامر باستخدام الرمز الذي تمنحك إياه منطقة الحساب — وسمّ الجهاز اسماً لا يكشف هويتك.
- لا تتصل بعد. افتح الإعدادات أولاً. اثنان من الإعدادات الثلاثة أدناه معطّلان افتراضياً في معظم العملاء.
الإعدادات الثلاثة التي تستحق الفحص
تختلف قوائم العملاء، لكن الإعدادات لا تختلف. لكل إعداد من الإعدادات الثلاثة مدخل في المعجم إذا كان الاسم غير مألوف.
مفتاح إيقاف الاتصال
يحظر كل حركة المرور إذا انقطع النفق، بدلاً من السماح بهدوء للاتصال بالعودة إلى الشبكة العادية. على Linux، هو مجموعة من قواعد جدار الحماية يكتبها العميل: تُسقط كل حركة المرور باستثناء واجهة النفق ونقطة النهاية الخاصة بالنفق. فعّله، واختر صيغة التشغيل الدائم أو lockdown عندما يوفّرها العميل، لكي تستمر القواعد منذ الإقلاع لا أثناء الاتصال فقط. تجد الغرض من المفتاح في صفحته الخاصة.
DNS داخل النفق
قد تغادر استعلامات أسماء النطاقات الجهاز خارج النفق حتى عندما تكون كل الأمور الأخرى داخله، وعلى Linux يكون هذا هو التسرّب الأكثر حدوثاً، لأن محلّل الأسماء عنصر متغيّر. في Ubuntu، هذا العنصر هو systemd-resolved: لكل واجهة محلّلات أسماء خاصة بها، والمحلّل الذي يملك المسار الافتراضي لـ DNS يجيب عن كل شيء لا يطابقه نطاق أكثر تحديداً. ينبغي للعميل أن يوجّه ذلك المسار الافتراضي إلى محلّل المزوّد عبر واجهة النفق. اضبط DNS في العميل على DNS الخاص بالمزوّد، لا على DNS تابع لجهة ثالثة؛ فالجهة الثانية التي لا ترى سوى الاستعلامات هي جهة إضافية. تجد كيفية حدوث التسرّب في صفحة تسرّبات DNS.
البروتوكول
اتركه على الإعداد الافتراضي الحديث ما لم يكن هناك عطل — تسرد صفحة البروتوكولات البروتوكولات الحالية والقديمة. إذا أتاح العميل خياراً أقدم لإصلاح مشكلة اتصال، فذلك مقايضة ينبغي إجراؤها عن علم ثم التراجع عنها: تضع القائمة علامة على أضعف بروتوكول ما زال المزوّد يوفّره، واختياره يدوياً يعني اختيار تلك العلامة لنفسك.
تأكد من أنه يعمل فعلاً
اتصل، ثم تحقّق بدلاً من الافتراض. هذه ثلاثة فحوصات من الطرفية، بهذا الترتيب:
- تغيّر عنوانك. استخدم
curlمع أي خدمة تسأل «ما عنوان IP الخاص بي؟»، أو افتح إحدى هذه الخدمات في المتصفح، وتأكد من أن الدولة تطابق نقطة الخروج التي اخترتها. ينبغي أن يذكر الأمرip route getالموجّه إلى عنوان عام واجهة النفق، لا واجهة Wi-Fi أو Ethernet. - الاستعلامات داخل النفق. نفّذ
resolvectl status: ينبغي أن تحمل واجهة النفق محلّل المزوّد والمسار الافتراضي لـ DNS؛ وينبغي ألا تُستخدم واجهة محلّل الأسماء الخاصة بالواجهة الفعلية. اختبار تسرّب DNS في المتصفح هو رأي ثانٍ، وأي شيء يخص مزوّد الإنترنت لديك يعني أن إعداد DNS لم يُطبّق. - مفتاح إيقاف الاتصال يفعل ما يقوله. أثناء تشغيل تنزيل، أوقف خدمة العميل باستخدام
systemctl stop، أو أنزل واجهة النفق باستخدامip link set … down، بحيث ينقطع النفق من دون أن تطلب من العميل ذلك. ينبغي أن يتوقف النقل تماماً. إذا استمر، فالمفتاح للزينة.
تجد مجموعة الاختبارات الأطول، وما يمكن لكل اختبار منها إظهاره وما لا يمكنه إظهاره، في دليله الخاص.
ما الذي تثبته هذه الفحوصات
+تغادر حركة المرور عبر خادم نقطة الخروج، في الدولة التي اخترتها
+محلّل الأسماء الذي يجيب عن استعلاماتك هو محلّل المزوّد، داخل النفق
+عند انقطاع النفق، يفشل الاتصال بطريقة تمنع المرور بدلاً من العودة بهدوء إلى المسار الاحتياطي
ما الذي لا تثبته
−لا تقول شيئاً عما يحتفظ به المزوّد — فهذا سؤال يتعلق بالوثائق، وتجيب عنه صفحات الاحتفاظ بالبيانات
−لا تجعلك مجهول الهوية: متصفحك وعمليات تسجيل دخولك لم تتغير، راجع ما الذي لا يحميك منه VPN
−اجتياز الاختبار اليوم ليس وعداً بشأن تحديث الحزمة التالي أو النواة التالية
مسار ملف الإعداد، وتكلفته
ينشر معظم المزوّدين ملفات إعداد للبروتوكولين الشائعين من منطقة الحساب. يمكن استيراد ملف WireGuard إلى NetworkManager من محرّر الاتصال أو باستخدام nmcli connection import، ويعمل بالقدر نفسه تحت wg-quick؛ كما يمكن استيراد ملف OpenVPN بالطريقة نفسها باستخدام إضافة OpenVPN. تحصل على النفق، ومفتاح واجهة النظام نفسه، ولا شيء لم يضعه المزوّد في الملف.
ما تفقده هو بقية وظائف العميل. لا يوجد مفتاح لإيقاف الاتصال إلا إذا كتبت قواعد جدار الحماية بنفسك؛ فالملف المستورد إلى NetworkManager إذا انقطع يعيد حركة المرور ببساطة إلى الشبكة العادية. لا توجد معالجة لـ DNS تتجاوز سطر DNS في الملف، والملف الذي لا يحتوي عليه هو التسرّب الذي ينبغي فحصه أولاً عند استكشاف المشكلة. لا يوجد اختيار للخادم: كل ملف يمثل نقطة خروج واحدة، وتغيير نقطة الخروج يعني استخدام ملف آخر. أنشئ الملفات من منطقة الحساب واحتفظ بها خاصة: يحتوي ملف WireGuard على المفتاح الخاص الذي يمثّل هويتك لدى المزوّد.
هذا المسار مناسب لخادم أو جهاز بلا واجهة أو توزيعة لا يدعمها العميل. وعلى الحاسوب المحمول، فضّل العميل؛ فالمفتاح الذي يوفّره هو الشيء الذي لا يستطيع ملف الإعداد توفيره.
عندما لا يعمل
النفق قيد التشغيل، لكن DNS لا يزال يذهب إلى مزوّد الإنترنت لدي
هذا هو تسرّب Linux المعروف. يترك ملف الإعداد الذي لا يضبط DNS نظام systemd-resolved يستخدم محلّل الأسماء الذي سلّمته الشبكة، خارج النفق. نفّذ resolvectl status: ينبغي أن تسرد واجهة النفق محلّل المزوّد وأن تحمل المسار الافتراضي لـ DNS، مع وضع علامة زائد.
أضف سطر DNS إلى الإعداد، أو اضبط DNS على الاتصال في NetworkManager، ثم أعد الاتصال. يضبط عميل المزوّد نفسه هذا الأمر تلقائياً، وهو أحد أسباب تفضيله.
يتوقف كل شيء عن العمل عندما ينقطع النفق، وهذا مزعج
هذا يعني أن مفتاح إيقاف الاتصال يؤدي وظيفته: النفق المنقطع يصبح اتصالاً ميتاً بدلاً من العودة بصمت إلى الشبكة العادية. أعد الاتصال بدلاً من إيقاف المفتاح.
إذا انقطع الاتصال كثيراً على شبكة واحدة ونادراً في أماكن أخرى، فبدّل البروتوكول مرة واحدة وجرّب نقطة خروج أقرب. إذا لم يثبت أي بروتوكول على تلك الشبكة، فالشبكة تحظر حركة VPN، وينتهي الدليل هنا.
يطلب العميل sudo أو كلمة مرور في كل مرة
إنشاء واجهة شبكة عملية تتطلب صلاحيات، والعميل الذي لا يثبّت خدمة في الخلفية مضطر إلى الطلب في كل مرة. معظم العملاء يثبّتون خدمة كهذه — خدمة تعمل بصلاحيات root وتطبيق سطح مكتب يتصل بها — ويعني تكرار الطلب أن الخدمة لا تعمل أو أنها غير مفعّلة.
تحقق من ذلك باستخدام systemctl status واسم الخدمة الوارد في تعليمات المزوّد، وفعّلها لكي تبدأ عند الإقلاع.
تظهر عناوين IPv6 في صفحة الاختبار
ينقل النفق IPv4، بينما لا يزال لدى الجهاز مسار IPv6 خارج النفق، ولذلك فإن أي شيء يفضّل IPv6 يتجاوز VPN. ينبغي للمزوّدين الذين لا يمررون IPv6 عبر النفق تعطيله على الواجهة؛ والعملاء الأفضل يفعلون ذلك.
إذا أنشأت الاتصال من ملف، فعطّل IPv6 على الاتصال في NetworkManager، أو عطّله باستخدام sysctl، ثم اختبر مرة أخرى. النفق الذي يترك عائلة عناوين ثانية مفتوحة هو نفق نصف مكتمل.
الخطوات نفسها، أجهزة أخرى
بقية المنصات
لكل منصة دليلها الإرشادي الخاص بدل تبويب في هذا الدليل. تتفرّق الخطوات بمجرد فتح المثبِّت، والصفحة التي تجيب عن ثلاث منصات دفعة واحدة لا تجيب عن أي منها كما ينبغي.