تحدثنا في مقال “نظام Pi-Hole لوقف الإعلانات والمواقع الغير مرغوب بها” عن طريقة تثبيت خادم DNS خاص بك لحظر الإعلانات والمواقع الغير مرغوب بها. يتميز هذا الخادم بإمكانية تثبيته وتشغيله في منزلك الخاص من خلال جهاز كمبيوتر قديم، أو من خلال جهاز Raspberry pi لأنه رخيص ولا يستهلك الطاقة بشكل كبير.
في كان لديك اتصال ممتاز بالإنترنت في منزلك أو في الشركة التي تعمل بها، أو في حال قمت بتثبيت الخادم بشكل سحابي، يمكنك في هذه الحالة ضبط هذا الخادم ليعمل كخادم VPN بالإضافة لخادم DNS. بهذه الطريقة يمكنك تصفح الإنترنت بشكل مريح، وحماية الاتصالات الخاصة بك في حال كنت متواجد في مكان غير موثوق مثل مقهى، مطار، أو دولة غير دولتك.
تثبيت خادم VPN
بعد أن قمت بتثبيت خادم DNS من خلال المقال السابق، يمكنك المتابعة بتثبيت الـ VPN وهو أيضا يتم من خلال سكربت جاهز للعمل بدون أي تدخل من طرفك. هذا الإسكربت أيضا موجه لأجهزة Raspberry pi، ولكنه يعمل بشكل ممتاز على أي جهاز Debian أو Ubuntu.
بعد الدخول إلى الخادم الخاص بك، يمكنك تنفيذ الأمر التالي لبدأ عملية التثبيت:
curl -L https://install.pivpn.io | bash
بعد تنفيذ الأمر التالي، سوف تصل إلى شاشة تخبرك ما الذي سيحصل:
هنا يجب عليك الضغط على Enter للمتابعة.
هنا ستواجه شاشة مهمه تخبرك أن الخادم لن يعمل بشكل سليم إلا إذا توفر له عنوان IP ثابت. وأنك ستنتقل إلى صفحة إعداد الشبكة. بشكل عام، وفي حال كنت تستخدم خادم سحابي، ليس عليك عمل أي شيء سوى المتابعة. أيضا الشاشة التي تليها سوف تنبهك بأنك لا تستخدم جهاز Raspberry pi وبالتالي سيتم تنبيهك لبعض الأمور التي سوف تحتاج إلى عملها في حال كنت في AWS. من ناحيتي، أن أستخدم Linode وأرى بأن عمل الخوادم لديهم أسهل وأبسط من تعقيدات AWS:
في هذه الصفحة سيُطلب منك اختيار مستخدم غير الجذر ليحمل إعدادات VPN. في حال لم يتوفر مستخدم، سيُطلب منك إنشاء مستخدم جديد:
هنا ستقوم بتحديد البروتوكول المستخدمي في الاتصال. من ناحيتي أُفضل WireGuard، ولكن هناك من يُفضل OpenVPN وسأقوم بالكتابة عن كلاهما. يمكنك هنا اختيار البروتوكول المطلوب والباقي مشابه إلى حد ما في كلاهما:
تفاصيل WireGuard:
أول شاشة يجب أن تختار فيها المنفذ. يمكنك اختيار ما شئت ويمكنك الإبقاء على المنفذ الافتراضي وهو ما قمت أنا بعمله هنا وبعده يمكنك الضغط على Yes للتأكيد على اختيارك:
تفاصيل OpenVPN:
عند اختيار OpenVPN، سيتم إخبارك عن الإعدادات الافتراضية المستخدمة وإذا كنت ترغب في تعديلها. من ناحيتي لم أقم بتغيير أي شيء:
في الصورة التالية يجب عليك اختيار رقم منفذ، من ناحيتي، لم أقم بتغيير الإفتراضي. لذلك ضغطت على Enter ومن ثم وافقت على الإعدادات من خلال الضغط على Yes.
بعد الانتهاء من اختيار البروتوكول المناسب لك، يمكنك متابعة الإعدادات لكلاهما بشكل بدون فرق في الإعدادات. الشاشة التالية تظهر لك في حال قمت بتثبيت PiHole بشكل مسبق وتسألك إن كنت ترغب في الوصل بينهما واستخدام PiHole كخادم DNS لشبكتك الافتراضية للاستفادة من مزاياه في حظر الإعلانات. هنا اخترنا الربط ولديك الحرية بالرفض:
في الشاشة التالية عليك استخدام العنوان الخارجي للشبكة لكي يتم توصيل الخادم به. لاحظ أنك تحتاج إلى عنوان IP ثابت لمنزلك وتحويل المنفذ الخاص بالشبكة إلى خادم VPN في حال قررت أن تقوم بتشغيل الخادم في المنزل. لا تحتاج إلى عمل أي شيء إضافي في حال خادمك في السحاب ولا يحتاج إلى NAT:
هنا يُخبرك البرنامج أنه سيتم توليد مفاتيح النظام لاستخدامها في تشفير الاتصالات:
أو سيخبرك أنه سيتم توليد مفتاح HMAC في حال استخدمت OpenVPN:
في هذه الشاشة يخبرك البرنامج أن الخادم فيه على الأقل منفذ واحد مكشوف على العالم. لذلك ينصحك بتفعيل التحديثات التلقائية للنظام بدون تدخل منك. لاحظ أن ذلك لا يقوم بإعادة تشغيل الخادم وبالتالي من المفضل أن تقوم بإعادة تشغيل الخادم بشكل يدوي كل فترة. يمكنك الضغط على Yes للتفعيل وهو ما قمنا بعمله هنا:
في النهاية يخبرك البرنامج أنه يمكنك تنفيذ الأمر pivpn add لإضافة مستخدم جديد. يمكنك الضغط على Ok للمتابعة، وبعدها قم بالموافقة على إعادة تشغيل الخادم.
تثبيت برمجيات VPN في جهازك
بشكل عام، هناك دعم إفتراضي لها النوع من الشبكات في معظم التوزيعات خصوصا لو كنت تستخدم Gnome أو KDE.
في توزيعات Ubuntu عليك تثبيت برنامج wiregaurd و مدير OpenVPN للشبكات ليعمل معك بشكل صحيح.
في حال أردت تثبيت WireGaurd، عليك تنفيذ الاوامر التالية:
sudo apt install wireguardsudo ln -s /usr/bin/resolvectl /usr/local/bin/resolvconf
الأوامر السابقة تكفي ليعمل معك بشكل ممتاز بدون أي عمل إضافي.
في حال لم يتوفر لديك دعم OpenVPN، يمكنك إستخدام الأمر التالي لتثبيت الدعم على Gnome:
sudo apt-get install openvpn network-manager-openvpn network-manager-openvpn-gnome network-manager-vpnc
أو الأمر التالي لتوفير الدعم على KDE:
sudo apt-get install openvpn network-manager-openvpn network-manager-vpnc
هذا كل ما تحتاج إليه. يمكنك الآن توليد ملفات الاتصال والاستمتاع بخدامات VPN خاصة.
توليد ملفات الاتصال بالشبكة
في هذه المرحلة سوف نقوم بتوليد الملفات اللازمة للاتصال بالشبكة سواء كانت OpenVPN أو WireGaurd.
توليد ملف اتصال WireGuard
عند تشغيل الخادم من جديد، يمكنك تنفيذ الأمر التالي لتوليد ملف اتصال جديد:
pivpn add
عند تنفيذ الأمر السابق، سيطلب منك النظام إعطاء اسم لهذا المستخدم. قم بإدخال الاسم واضغط على Enter لتوليد كل ما تحتاج إليه للاتصال:
الملف سيكون موجود في مجلد configs في مجلد المستخدم الذي قمت بعمله عن تثبيت البرنامج.
توليد ملف OpenVPN
يمكنك تنفيذ الأمر التالي لتوليد ملف اتصال جديد:
pivpn add nopass
الأمر السابق يقوم بتوليد ملف ovpn بدون كلمة مرور. عند تنفيذ الأمر السابق، يجب عليك إدخال اسم مستخدم، وبعدها عدد الأيام التي ستكون شهادة الاتصال سارية المفعول. يمكنك ترك المدة 1080 يوم، وهذا يعني 3 سنوات تقريبا.
الملف سيكون موجود في مجلد ovpns في مجلد المستخدم الذي قمت بعمله عن تثبيت البرنامج.
تفعيل اتصال WireGaurd
تفعيل اتصال من نوع WireGourd أمر سهل جدا. أولا، قم بالذهاب إلى الخادم وقم بعرض محتويات ملف الاتصال الخاص بك. مثلا:
cat /home/linuxarabia/configs/ahamd.conf
بعد عرض محتويات الملف، قم بنسخ كل ما يوجد هناك، ومن ثم قم بلصقه في المسار التالي:
/etc/wireguard/wg0.conf
يجب عليك تحرير الملف بصلاحيات الجذر، لذلك استخدم sudo. بعد ذلك، يمكنك حفظ الملف وتشغيل الشبكة من خلال الأمر التالي:
sudo systemctl start wg-quick@wg0
يمكنك عرض حالة الاتصال من خلال الأمر التالي:
sudo systemctl status wg-quick@wg0
ثم يمكنك إيقاف الاتصال من خلال الأمر التالي:
sudo systemctl stop wg-quick@wg0
تفعيل اتصال OpenVPN
تفعيل اتصال من نوع OpenVPN أمر سهل أيضا ولا يتطلب خبرة كبيرة. أولا، قم بالذهاب إلى الخادم وقم بعرض محتويات ملف الاتصال الخاص بك. مثلا:
cat /home/linuxarabia/ovpns/ahmad.ovpn
بعد عرض محتويات الملف، قم بنسخ كل ما يوجد هناك، ومن ثم قم بلصقه في ملف في مكان آمن من الحذف العرضي. مثلا في مجلد Documents. مثلا:
vi /home/ahmad/Documents/ahmad.ovpn
بعد ذلك، قم بتنفيذ الأمر التالي في الطرفية: (الأمر على سبيل المثال ويجب عليك تغيير المسار بما يلائم جهازك):
sudo nmcli connection import type openvpn file /home/ahmad/Documents/ahmad.ovpn
لتفعيل الاتصال، يجب عليك وبكل بساطة اختيار الاتصال من قائمة الشبكات لديك وتفعيله. على جنوم، الموضوع يبدو كالتالي:
أداء OpenVPN مقابل WireGaurd
يعتبر بروتوكول WireGaurd حديث جدا مقارنه بكل بروتوكول آخر للشبكات الافتراضية، وهو بشكل افتراضي يجب أن يكون أفضل. من ناحية الأمان، ليس هناك فرق حقيقي. ولكن لو أردت الخوض في التفاصيل الدقيقية، OpenVPN يستخدم عدد من بروتوكولات التشفير وهذا يجعله هدف أكبر للمخترقين لأن الكود المستخدم في OpenVPN أكبر بكثير من WireGaurd ولديه عدد اكبر من خوارزميات التشفير. أما WireGaurd فلديه كود صغير جدا وطريقة تشفير جديدة تعتبر أعجوبة في العالم التقني. أما في الحياة الواقعية، فليس هناك ثغرات معروفة في أي من البروتوكولات وكلاهما آمن جدا ولكن تذكر، ليس هناك حماية كاملة وليس هناك 100% في العالم التقني.
أما من ناحية السرعة، فقد قمت بتجربة عملية وهذه كانت تفاصيلها:
1- سرعة التنزيل الحقيقية بدون أي خدمات VPN: سرعة التنزيل 200 ميجا في الثانية، وسرعة التحميل يجب أن تكون 30 ميجا ولكني أحصل على 25 – 30 من حين لآخر.
2- سرعة الاتصال من خلال WireGaurd: سرعة التنزيل 170 ميجا في الثانية وسرعة التحميل 24 ميجا في الثانية. لا يبدو أن الاتصال تأثر بشكل كبير ولم أشعر بأي بطء في الاتصال. ما لاحظته هو أن موقع speedtest.net لم يعمل معي ولذلك استخدمت موقع fast.com. قد تكون هذه مشكلة بسبب Linode حيث يمكنهم حظر الاتصال بهذا الموقع على شبكتهم.
3- سرعة الاتصال من خلال : OpenVPN سرعو التنزيل 85 ميجا في الثانية، أما سرعو التحميل فهي 24 ميجا. هنا أيضا لا يبدو أن الاتصال تأثر بشكل كبير ولم أشعر بأي بطء في الاتصال. ما لاحظته أيضا هو أن موقع speedtest.net لم يعمل معي. بما أن الموقع لم يعمل في كلا الشبكات، أتوقع أن الموضوع مجرد حظر من طرف Linode.
الخاتمة
كان هذا مقال ممتع للكتابة والتجربة وكانت تجربتي الأولى مع WireGaurd والتي من خلالها تعلمت انه بالفعل أفضل ما هو موجود اليوم في الشبكات الافتراضية.
ما رأيك في المقال؟ هل لديك سؤال معين؟ هل أنت معني بعمل شبكة خاصة بك؟