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

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

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

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

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

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

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

أحد هذه البروتوكولات ، الذي يكتسب استخدامًا واسعًا مؤخرًا ، هو Wireguard . 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بتثبيت كل من Wireguard Server والعميل. قم بتشغيل الأمر التالي على كل من جهاز الخادم وجهاز العميل.

sudo apt install wireguard

تكوين الخادم

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

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

sudo su
cd /etc/wireguard
umask 077
wg genkey | tee private_key | wg pubkey > public_key

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

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

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

cat private_key
cat public_key

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

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

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

ملف الضبط

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

vim wg0.conf

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

[Interface]
Address = 10.20.43.1/24
SaveConfig = true
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 ACCEPT; 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 ACCEPT; ip6tables -t nat -D POSTROUTING -o  -j MASQUERADE

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

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

ifconfig

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

الجزء المميز هو عنوان IP

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

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

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

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

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

ufw allow 51190/udp

بدء الخدمة

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

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

systemctl enable [email protected]

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

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

service [email protected] start

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

service [email protected] status

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

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

ip a show wg0

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

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

تكوين العميل

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

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

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

sudo su
cd /etc/wireguard
umask 077
wg genkey | tee client_private_key | wg pubkey > client_public_key

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

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

cat client_private_key
cat client_public_key

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

ملف الضبط

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

vim wg0-client.conf

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

[Interface]
# IP Address and Private Key of the Client
Address = 10.20.43.2/24
PrivateKey = 

[Peer]
# Public key, IP Address and Port of the Server
PublicKey = 
Endpoint = :51190
AllowedIPs = 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 ، اضغط على Esc ، ثم اكتب :wqواضغط على Enter للحفظ والخروج.

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

systemctl enable [email protected]
service [email protected] start

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

service [email protected] status

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

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

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

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

service [email protected] stop

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

vim /etc/wireguard/wg0.conf

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

[Peer]
PublicKey = 
AllowedIPs = 10.20.43.2/32

الآن ، ابدأ تشغيل خدمة VPN مرة أخرى .

service [email protected] start

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

اختبار VPN

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

ping 10.20.43.1

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

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

wget 

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

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

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

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

curl https://ipinfo.io/ip

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

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

استنتاج

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

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


كيفية تعطيل Ubuntu Dock على Ubuntu 20.04

كيفية تعطيل Ubuntu Dock على Ubuntu 20.04

أحيانًا يكون من الأفضل مغادرة الرصيف والإبحار بعيدًا!

كيفية استخدام CD Command في Linux

كيفية استخدام CD Command في Linux

طريقة سهلة لتغيير الدلائل في Linux من المحطة

كيفية إضافة مفاتيح SSH على أوبونتو 20.04

كيفية إضافة مفاتيح SSH على أوبونتو 20.04

تشرح لك هذه المقالة عملية إضافة مصادقة مفاتيح SSH على خادم Ubuntu 20.04 وتعطيل المصادقة المستندة إلى كلمة المرور.

كيفية تحديث Firefox من Terminal على أجهزة كمبيوتر Ubuntu Linux

كيفية تحديث Firefox من Terminal على أجهزة كمبيوتر Ubuntu Linux

تعرف على كيفية تحديث Firefox من Terminal على كمبيوتر Ubuntu Linux

كيفية تمكين SSH على Ubuntu 20.04

كيفية تمكين SSH على Ubuntu 20.04

الوصول بأمان إلى جهاز Ubuntu الخاص بك من أي مكان

كيفية التحقق مما إذا كان الملف أو الدليل موجودًا في برنامج Bash Shell

كيفية التحقق مما إذا كان الملف أو الدليل موجودًا في برنامج Bash Shell

التحقق من وجود ملف أو دليل من نص برمجي Bash

كيفية تثبيت Google Chrome على Ubuntu 20.04

كيفية تثبيت Google Chrome على Ubuntu 20.04

دليل سريع لتثبيت Google Chrome من سطر الأوامر على Ubuntu 20.04

كيفية إجراء اختبارات السرعة من سطر أوامر Linux باستخدام Speedtest-cli

كيفية إجراء اختبارات السرعة من سطر أوامر Linux باستخدام Speedtest-cli

Speedtest.net هي خدمة لاختبار سرعة اتصالك بالإنترنت. يستخدم خادم speedtest.net قريب للتنزيل

كيفية إنشاء مستخدم Sudo على Ubuntu 20.04 LTS

كيفية إنشاء مستخدم Sudo على Ubuntu 20.04 LTS

امنح امتيازات الجذر لأي مستخدم لديه sudo على Ubuntu 20.04 LTS

كيفية تحديث NodeJS إلى أحدث إصدار في أوبونتو

كيفية تحديث NodeJS إلى أحدث إصدار في أوبونتو

تحديث NodeJS باستخدام APT و NVM.