كيفية إعداد خادم وعميل WireGuard VPN على Ubuntu 20.04

قم بإعداد VPN ذاتية الاستضافة باستخدام Wireguard

أ VPN (شبكة افتراضية خاصة) يسمح للمستخدم بالاتصال بشبكة خاصة عن بعد كما لو كان كمبيوتر المستخدم متصلاً بشكل مباشر بالشبكة الخاصة. تم تطوير التكنولوجيا في البداية للسماح بالوصول عن بُعد إلى الشبكة الداخلية الخاصة للشركة ، للموظفين غير الموجودين بالفعل في موقع الشبكة الداخلية.

يتم نشر خادم VPN في موقع الشبكة الداخلية. هذا الخادم موجود على الشبكة العامة ويمكن للموظف الوصول إليه باستخدام عميل VPN. المصادقة مطلوبة للاتصال بخادم VPN. يتم تأمين الاتصال بين خادم VPN وعميل VPN باستخدام بروتوكول الأنفاق. لاحظ أن هذا الاتصال قد يكون أو لا يكون مشفرًا ، ولكن عادةً ما يكون مشفرًا في معظم بروتوكولات VPN.

استخدام آخر للشبكة الافتراضية الخاصة هو الحصول على إخفاء الهوية عند الوصول إلى الإنترنت أو للتحايل على القيود الجغرافية المفروضة أثناء الوصول إلى بعض المواقع. في مثل هذه الحالات ، فإن الشبكة التي يريد المستخدم الاتصال بها ليست شبكة خاصة ، ولكنها بدلاً من ذلك هي الإنترنت.

تم تطوير العديد من بروتوكولات VPN على مر السنين. تستفيد هذه البروتوكولات من بروتوكولات الأنفاق المختلفة وخوارزميات التشفير للاتصال بين الخادم والعميل.

أحد هذه البروتوكولات ، الذي يكتسب استخدامًا واسعًا مؤخرًا ، هو وايرجارد. Wireguard أخف وأبسط وأكثر أداءً من بروتوكولات VPN التقليدية المعروفة مثل OpenVPN و IPSec. تم تطبيقه بالفعل لنظام التشغيل Windows و Mac OS وعدد كبير من توزيعات Linux. في Linux ، يتم تنفيذه كوحدة kernel. وهي متوفرة في المستودعات الرسمية لـ Ubuntu 20.04.

في هذه المقالة ، سنرى كيفية إعداد خادم وعميل Wireguard VPN في Ubuntu 20.04.

التركيب

بالنسبة لهذه المقالة ، أقوم بإعداد خادم Wireguard على Ubuntu 20.04 Linode و Wireguard Client على جهازي المحلي باستخدام Ubuntu 20.04.

حزمة واقي الأسلاك يقوم بتثبيت كل من خادم Wireguard والعميل. قم بتشغيل الأمر التالي على كل من جهاز الخادم وجهاز العميل.

sudo apt تثبيت wireguard

تكوين الخادم

مفاتيح الأمان

نحتاج إلى إنشاء مجموعة من أزواج المفاتيح العامة / الخاصة من أجل مصادقة وتأمين اتصال Wireguard. يمكن القيام بذلك باستخدام الأوامر التالية:

sudo su cd / etc / wireguard umask 077 wg genkey | نقطة الإنطلاق private_key | wg pubkey> public_key

لاحظ أننا نقوم بجميع مهام التكوين بصفتنا مستخدمًا متميزًا. والسبب هو أن الوصول إلى الدليل / etc / wireguard ممنوع للمستخدمين العاديين ، ولا يمكن الحصول على الوصول إلى الدليل بامتيازات sudo فقط لمستخدم عادي.

بعد ذلك ، قمنا بتعيين قناع إنشاء الملف على 077. هذا يعني أنه كلما تم إنشاء ملف جديد في هذا المجلد بأي عملية ، سيتم إخفاء أذوناته تلقائيًا بالرقم 077. على سبيل المثال. إذا تم إنشاء ملف في هذا المجلد بأذونات 777 ، فسيتم إخفاءه تلقائيًا وتصبح الأذونات فعليًا 700. ويتم ذلك بحيث يكون لمالك الملف فقط جميع الأذونات الخاصة بالملف ، ولا يمتلك أي شخص آخر أذونات.

في السطر التالي ، نقوم بإنشاء زوج المفاتيح العام / الخاص للخادم. يتم حفظها في الملفات مفتاح سري و المفتاح العمومي. لعرض المفاتيح ، قم بتشغيل:

cat public_key cat public_key

انسخ المفتاح الخاص ، فنحن نحتاجه في الخطوة التالية.

ملحوظة: لا تشارك أبدًا مفتاحك الخاص علنًا!

ملف الضبط

دعونا ننشئ ملف تكوين لخادم Wireguard. يمكنك اختيار أي اسم للملف. سنقوم بإنشاء ملف ملف wg0.conf في هذا المثال.

فيم wg0.conf

أضف ما يلي إلى الملف.

[الواجهة] العنوان = 10.20.43.1/24 SaveConfig = صحيح ListenPort = 51190 PrivateKey = PostUp = iptables -A FORWARD -i wg0 -j ACCEPT ؛ iptables -t nat -A POSTROUTING -o -j MASQUERADE ؛ ip6tables -A FORWARD -i wg0 -j قبول ؛ ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT ؛ iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE ؛ ip6tables -D FORWARD -i wg0 -j قبول ؛ ip6tables -t nat -D POSTROUTING -o -j MASQUERADE 

الصق المفتاح الخاص الذي نسخته مسبقًا في السطر 5 في الكود أعلاه.

يتعين علينا تكوين Wireguard على شبكة فرعية (افتراضية) مختلفة من عنوان IP للخادم. هنا ، لقد استخدمت 10.20.43.1 للخادم وسوف أستخدم 10.20.43.2 للعميل. يمكن استخدام أي شبكة فرعية هنا. للحصول على عنوان IP للخادم والواجهة ، قم بتشغيل:

ifconfig

لاحظ عنوان IP الخاص بالخادم. هذا مطلوب أثناء تكوين العميل.

الواجهة التي يستخدمها الخادم ، كما هو موضح في الصورة أعلاه ، هي eth0. يمكن أن يختلف اسم الواجهة بناءً على شبكة المستخدم شبكة wlan0 أو wlp2s0 في حالة اتصال المستخدم بشبكة WiFi باستخدام بطاقة لاسلكية.

استبدل ملف في ابعث و PostDown مع واجهتك ؛ في هذا المثال هو eth0.ابعث و PostDown يتم استخدام التوجيهات لتحديد الأوامر التي يجب تشغيلها عند بدء تشغيل الخادم وتوقفه على التوالي. في مثالنا ، نستخدم الامتداد iptables الأمر لتعيين قواعد IP بحيث يشارك العملاء عنوان IP الخاص بالخادم. ستسقط القواعد بمجرد توقف الخادم.

حفظ وإنهاء الملف. عند استخدام vim ، اضغط على خروج، ثم اكتب : wq و اضغط يدخل للحفظ والخروج.

إذا كنت تستخدم ملف ufw جدار الحماية على الخادم ، نحتاج إلى السماح باتصالات UDP بمنفذ خادم VPN ، 51190.

ufw يسمح 51190 / udp

بدء الخدمة

الآن بعد الانتهاء من التكوين ، يمكننا بدء خدمة Wireguard VPN.

لتمكين تبدأ الخدمة في وقت التمهيد ، قم بتشغيل:

يمكّن systemctl wg-quick @ wg0

لاحظ ذلك هنا wg0 هو اسم ملف التكوين.

للبدأ الخدمة ، قم بتشغيل:

بدء خدمة wg-quick @ wg0

تحقق أن الخدمة قد بدأت بنجاح:

حالة الخدمة wg-quick @ wg0

تحقق من أن الواجهة بدأنا في إنشاء ملف التكوين باستخدام الأمر IP.

ip عرض wg0

تم الآن إعداد وتشغيل خادم Wireguard VPN. دعونا نقوم بتهيئة العميل الآن.

تكوين العميل

تكوين العميل لـ Wireguard يشبه إلى حد ما تكوين الخادم. نقوم بإنشاء المفاتيح للعميل ، ثم نقوم بإنشاء ملف التكوين.

مفاتيح الأمان

لتوليد المفتاح العام / الخاص زوجًا للعميل ، قم بتشغيل:

sudo su cd / etc / wireguard umask 077 wg genkey | نقطة الإنطلاق client_private_key | wg pubkey> client_public_key

يتم الآن إنشاء المفاتيح العامة والخاصة للعميل في الملفات على التوالي client_private_key و client_public_key.

تحقق من أنه تم إنشاؤها باستخدام قط يأمر.

cat client_private_key cat client_public_key

انسخ المفتاح الخاص المعروض حيث نحتاج إلى إضافته إلى ملف التكوين للعميل.

ملف الضبط

قم بإنشاء ملف التكوين مع أي اسم تريده. سنقوم بإنشائه بالاسم wg0- العميل على هذا المثال.

vim wg0-client.conf

أضف التكوين التالي.

[الواجهة] # عنوان IP والمفتاح الخاص لعنوان العميل = 10.20.43.2/24 مفتاح خاص = [نظير] # المفتاح العام وعنوان IP ومنفذ الخادم PublicKey = نقطة النهاية =: 51190 المسموح بها IPs = 0.0.0.0/0 ،: : / 0

أدخل عنوان الشبكة الفرعية للعميل. كما هو موضح سابقًا ، نستخدم 10.20.43.2 للعميل في هذا المثال.

أضف المفتاح الخاص للعميل تم إنشاؤه في الخطوة السابقة في السطر 4 في رمز التكوين أعلاه.

ضمن "Peer" ، نضيف معلومات حول خادم Wireguard VPN نريد الاتصال به.

أدخل المفتاح العام للخادم. دخول عنوان IP للخادم، والتي لاحظناها سابقًا ، وقمنا بتنفيذ التنسيق المعطى مقابل نقطة النهاية. هذا هو المنفذ الذي حددناه في ملف تكوين الخادم والذي بدأت عليه خدمة VPN على الخادم.

يجب إدخال عناوين IP المسموح بها على النحو الوارد (0.0.0.0/0) بحيث يتم دائمًا توجيه أي طلب على IP عام ديناميكي يستخدمه العميل إلى خادم VPN.

حفظ وإنهاء الملف. عند استخدام vim ، اضغط على خروج، ثم اكتب : wq و اضغط يدخل للحفظ والخروج.

قم بتمكين خدمة العميل للتشغيل مع كل حذاء وبدء تشغيله.

يتيح systemctl خدمة wg-quick @ wg-client wg-quick @ wg-client start

تحقق إذا بدأت الخدمة.

خدمة wg-quick @ wg-client status

إضافة نظير إلى الخادم

الآن لدينا خادم VPN والعميل قيد التشغيل. ومع ذلك ، لا يتم إنشاء نفق آمن بين الاثنين إلا إذا قمنا بإنشاء اتصال نظير إلى نظير بين الخادم والعميل.

عد إلى الخادم. أولا، قم بإيقاف خدمة VPN.

خدمة wg-quick @ wg0 stop

بعد ذلك ، افتح ملف التكوين إلى إضافة التكوين للنظير (عميل).

vim /etc/wireguard/wg0.conf

ألحق الأسطر التالية للملف.

[نظير] PublicKey = عناوين IP المسموح بها = 10.20.43.2/32

الآن، ابدأ خدمة VPN مرة أخرى.

بدء خدمة wg-quick @ wg0

هذا هو! هذا هو كل التكوين المطلوب لإعداد خادم وعميل Wireguard VPN. دعنا الآن نختبر VPN الخاص بنا.

اختبار VPN

أولاً ، لنقم بإجراء اختبار ping بسيط من العميل إلى الخادم ، للتأكد من عمل اتصال نفق VPN. قم بتشغيل ما يلي على العميل:

بينغ 10.20.43.1

التالي، افتح مستعرض ويب وافتح أي موقع ويب للتحقق مما إذا كنت قادرًا على الاتصال بالإنترنت من جهاز العميل. يمكنك أيضًا التحقق من اتصالك بالإنترنت من سطر الأوامر باستخدام wget.

wget 

الآن ، قمنا بفحص اتصال النفق والاتصال بالإنترنت. إذا كان كلاهما يعمل ، فنحن بحاجة الآن إلى التأكد من أن كل حركة مرور الإنترنت القادمة إلى العميل تمر عبر الخادم.

لهذا ، نحتاج ببساطة إلى التحقق من عنوان IP الخاص بالعميل كما يراه الإنترنت. طريقة واحدة للقيام بذلك هي الذهاب إلى whatsmyip.org. أو من سطر الأوامر ، يمكننا الاستعلام عن خدمة أخرى مماثلة تسمى معلومات IP ، باستخدام Curl.

قم بتشغيل ما يلي على جهاز العميل

حليقة //ipinfo.io/ip

نعم. إنه عنوان IP العام لـ Linode حيث يتم استضافة خادم VPN. هذه هي الطريقة التي يتم بها تحقيق إخفاء الهوية باستخدام VPN ، حيث يتم الآن رؤية عنوان IP لخادم VPN وليس جهاز الكمبيوتر الخاص بك في جميع أنحاء الإنترنت.

استنتاج

تعد سهولة الإعداد واحدة من أهم مزايا Wireguard على برامج VPN التقليدية مثل OpenVPN ، والتي تحتاج إلى مستوى أعلى من الشبكات ومعرفة التوجيه لإعدادها. ومع ذلك ، هناك نقص في الوثائق الرسمية التفصيلية الخاصة بـ Wireguard مما قد يتسبب في حدوث مشكلات إذا كان إعداد Wireguard الخاص بك يتسبب في حدوث أخطاء أو لا يعمل كما هو متوقع.

ومع ذلك ، يعد Wireguard خيارًا ممتازًا إذا كنت تريد شبكة افتراضية خاصة مستضافة ذاتيًا للاتصال الآمن عبر الإنترنت. لمعرفة المزيد حول Wireguard والبروتوكولات والتقنيات التي تستخدمها ، يمكنك التحقق من الموقع الرسمي.