إنشاء شبكة افتراضية خاصة (VPN) على لينكس مع OpenVPN

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

إذا تمكنت فقط من إنشاء VPN الخاص بك بين الكمبيوتر المحمول والكمبيوتر المنزلي.

في الواقع ، هذه العملية أسهل مما تظن. سنناقش اليوم كيف يمكنك استخدام OpenVPN لإنشاء اتصال آمن بين العميل والخادم على جهاز Linux.

openvpn feature tunnel c DzTechs - إنشاء شبكة افتراضية خاصة (VPN) على لينكس مع OpenVPN

ضع في اعتبارك أننا سننشئ تهيئة توجيه وليست أداة توصيل ، والتي يجب أن تكون مناسبة لمعظم حالات الاستخدام. يمكن لمستخدمي نظام Windows متابعة الأمر عن طريق قراءة وثائق OpenVPN ، بدءًا من القسم الخاص بإعداد مرجع التصديق. ستكون الأوامر المستخدمة في Windows مشابهة لتلك الموضحة أدناه.

ماذا تحتاج

ستحتاج إلى جهازي كمبيوتر – أحدهما هو جهاز الخادم بينما الآخر هو العميل. يمكن أن يكون جهاز الملقم عبارة عن سطح مكتب منزلي أو مثيل Linux من DigitalOcean أو Linode. جهاز العميل هو جهاز الكمبيوتر الذي تستخدمه بانتظام. نظرًا لأن هذا البرنامج التعليمي يتم على نظام التشغيل Linux ، يحتاج كلا الجهازين إلى تشغيل نظام التشغيل Linux أيضًا.

ملاحظة: في هذا البرنامج التعليمي ، سوف نستخدم Ubuntu كتوزيعة لنا لكل من جهاز الخادم والعميل.

تثبيت OpenVPN

للبدء ، تحتاج إلى تثبيت OpenVPN و Easy-RSA على الخادم الخاص بك. ثم قم بتثبيت OpenVPN على جهاز العميل الخاص بك.

على Ubuntu يجب عليك تثبيت Easy-RSA من صفحة Github هذه. يتضمن Ubuntu إصدار Easy-RSA 2 في مستودعاته. يقدم ارتباط Github الإصدار 3 من Easy-RSA ، والذي يتبع الأوامر التي سأستخدمها في هذه المقالة.

sudo apt-get install openvpn
git clone https://github.com/OpenVPN/easy-rsa.git

في الدليل الذي قمت بنسخ مستودع Github إليه ، انسخ دليل “easyrsa3” الذي يحتوي عليه في “/ etc / easy-rsa /”.

sudo mkdir /etc/easy-rsa
sudo cp -r ./easyrsa3/* /etc/easy-rsa/

البنية التحتية للمفتاح العام (PKI)

تستخدم OpenVPN البنية التحتية للمفتاح العام (PKI) لتحديد هوية الخوادم والعملاء بحيث يمكن لتلك الكيانات المنفصلة التحدث مع بعضها البعض. يستخدم PKI مرجع مصدق رئيسي (CA) إلى جانب الشهادات الفردية والمفاتيح الخاصة لكل خادم وعميل.

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

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

ذات صلة:  كيفية تثبيت بيئة MATE جنبا إلى جنب مع بيئة Cinnamon في Linux Mint

إنشاء شهادة CA

من أجل تشديد الأمان من المستحسن أن يكون جهاز CA الخاص بك مختلفًا عن الملقم الخاص بك. للإيجاز ، سوف تستخدم هذه المقالة نفس الجهاز لكلتا المهمتين. يجب تغيير إجراءات نسخ الملفات لاستيعاب موقفك – سواء كان ذلك باستخدام scp لنقل الشبكة أو باستخدام مفتاح USB لنقل الملفات يدويًا.

ملاحظة: إذا كنت تستخدم جهاز كمبيوتر منفصل كجهاز المرجع المصدق (CA) ، فستحتاج إلى تثبيت برنامج Easy-RSA على هذا الجهاز.

1. عليك تغيير الأدلة إلى “/ etc / easy-rsa /:”

cd / etc / easy-rsa /

2. إذا لزم الأمر ، انسخ “/etc/easy-rsa/vars.example” إلى “/ etc / easy-rsa / vars” ، ثم افتح vars لتحرير محتوياته:

sudo cp ./vars.example ./vars

sudo nano ./vars

3. أدخل التفاصيل مثل بلدك ، مقاطعتك ، المدينة ، المؤسسة ، والبريد الإلكتروني. أزل الخطوط الموجودة هنا عن طريق إزالة “#” في بداية كل منها.

openvpn vars c DzTechs - إنشاء شبكة افتراضية خاصة (VPN) على لينكس مع OpenVPN
بمجرد الانتهاء من التعديل، قم بالحفظ (Ctrl + O) والخروج (Ctrl + X).
4. قم بتكوين PKI الجديد الخاص بك وقم بتوليد المفتاح الرئيسي لمرجع الشهادة الذي ستستخدمه لتسجيل شهادات الخادم والعميل الفردية:
export EASYRSA=$(pwd)

sudo ./easyrsa init-pki

sudo ./easyrsa build-ca
انسخ ملف ca.crt الذي أنشأته للتو إلى دليل خادم OpenVPN. يجب عليك أيضًا تغيير مالكها ومجموعتها مع Chown:
sudo cp /etc/easy-rsa/pki/ca.crt /etc/openvpn/server/

sudo chown root:root /etc/openvpn/server/ca.cr

إنشاء شهادة الخادم والمفتاح الخاص

عليك التغيير مرة أخرى إلى دليل Easy-RSA وإنشاء شهادة الخادم ومفتاحه الخاص:
cd /etc/easy-rsa

sudo ./easyrsa init-pki

sudo ./easyrsa gen-req ServerName nopass

يمكنك تغيير “ServerName” في الأمر أعلاه إلى أي اسم تريده. تأكد من عكس هذا التغيير عند نسخ المفتاح الجديد إلى دليل خادم OpenVPN:

sudo cp /etc/easy-rsa/pki/private/ServerName.key / etc / openvpn / server /

طريقة تبادل مفاتيح

تستخدم OpenVPN طريقة تبادل مفاتيح Diffie-Hellman (DH) لتبادل مفاتيح التشفير بشكل آمن عبر الشبكة. ستقوم بإنشاء ملف معلمات DH باستخدام الأمر التالي:

sudo openssl dhparam -out /etc/openvpn/server/dh.pem 2048

يعرض الرقم النهائي ، 2048 ، في هذا الأمر عدد البتات المستخدمة في إنشاء الملف. على سبيل المثال ، يمكنك استخدام 4096 ، ولكن الأمر سيستغرق وقتًا أطول في إنشاء الملف ولن يؤدي إلى تحسين الأمان إلى حد كبير. الافتراضي هو 2048 ، وهذه القيمة كافية لمعظم حالات الاستخدام.

مصادقة الرسائل المستندة إلى التجزئة

يستخدم OpenVPN أيضًا تسجيل مصادقة الرسائل المستندة إلى التجزئة (HMAC) للحماية من الثغرات الأمنية في مصادقة رسائل SSL / TLS. قم بإنشاء الملف باستخدام هذا الأمر:

sudo openvpn --genkey --secret /etc/openvpn/server/ta.key

ملفات العميل

في هذه المرحلة ، تكون قد قمت بإنشاء عدد من الملفات لخادمك. حان الوقت الآن لإنشاء ملفات لعملائك. يمكنك تكرار هذه العملية عدة مرات لأكبر عدد من العملاء حسب احتياجك. يمكنك إنشاء ملفات العميل بأمان على أي جهاز كمبيوتر مثبت عليه Easy-RSA.

أدخل دليل Easy-RSA وقم بتهيئة PKI مرة أخرى إذا لم تكن قد قمت بذلك بالفعل:

cd /etc/easy-rsa

sudo ./easyrsa init-pki

قم بإنشاء مفتاح العميل والشهادة. تغيير الدلائل إذا قمت بتخطي الخطوة السابقة.

cd /etc/easy-rsa

sudo ./easyrsa gen-req ClientName nopass

إذا كررت العملية ، فلن تحتاج إلى تهيئة PKI لكل عميل جديد. فقط تأكد من تغيير “ClientName” ليكون فريدًا في كل مرة.

ذات صلة:  كيفية تركيب وتحميل Google Drive في نظام Ubuntu

تسجيل الخادم وشهادات العميل

يجب أن تقوم CA الآن بتسجيل شهادات الخادم والعميل الخاصة بك.

إذا نظرت في ملف “/ etc / easy-rsa / pki / reqs /” ، يجب أن تشاهد جميع ملفات الطلب (.req) تم إنشاء Easy-RSA في أوامر genrc-rech السابقة من easyrsa.

openvpn reqs c DzTechs - إنشاء شبكة افتراضية خاصة (VPN) على لينكس مع OpenVPN

في لقطة الشاشة هذه يوجد ملفين .req اثنين فقط. سيختلف رقمك إذا قمت بإجراء أكثر من عميل في الخطوة السابقة.

إذا كنت تستخدم جهاز CA منفصل ، فيجب عليك الآن نقل ملفات .req هذه إلى CA لتسجيلها. بمجرد اكتمال ذلك ، قم بالتغيير إلى دليل Easy-RSA وقم بتسجيل ملفاتك باستخدام الأوامر التالية ، مع التأكد من عكس الموقع المناسب لكل عنوان .req واسم كل خادم وعميل.

cd /etc/easy-rsa
sudo ./easyrsa import-req /etc/easy-rsa/pki/reqs/ServerName.req Server1
sudo ./easyrsa import-req /etc/easy-rsa/pki/reqs/ClientName.req Client1
sudo ./easyrsa sign-req server Server1
sudo ./easyrsa sign-req client Client1

لاحظ أنك ستحتاج إلى تزويد Easy-RSA باسم مختلف لخادمك وشهادات العميل. سيتم استخدام ServerName.req هنا ، على سبيل المثال ، لإنشاء Server1.crt.

يجب عليك الآن العثور على ملفين جديدين – “/etc/easy-rsa/pki/issued/Server1.crt” و “/etc/easy-rsa/pki/issued/Client1.crt” – سيتم نقلهما إلى كل من الجهازين (أنظر في القسم التالي من هذه المقالة). يمكنك حذف أي ملفات .req تبقى.

المرور على طول ملفات .CRT

الآن الشهادات الموقعة (كل .crt) جاهزة للعمل لأصحابها. قم بنقل ملف الخادم إلى موقع OpenVPN الخاص به وقم بإنشاء دليل جديد لشهادات العميل:

sudo mv /etc/easy-rsa/pki/issued/Server1.crt /etc/openvpn/server/

sudo chown root:root /etc/openvpn/server/Server1.crt

sudo mkdir /etc/easy-rsa/pki/signed

sudo mv /etc/easy-rsa/pki/issued/Client1.crt /etc/easy-rsa/pki/signed/

يمنحك إنشاء مجلد “… pki / signed /” هنا موقعًا مصنّفًا لوضع شهادات متعددة للعميل.

الخادم المشترك وملفات العميل

الآن يجب أن يكون لديك خمسة ملفات في الدليل “/ etc / openvpn / server /”: ca.crt و dh.pem و Server1.crt و ServerName.key و ta.key.

ستحتاج إلى اثنين من تلك الملفات نفسها في مجلد عميل OpenVPN على جهاز العميل. عليك نسخها باستخدام scp أو قرص فلاش حسب الاقتضاء. انسخ كل من “/etc/openvpn/server/ca.crt” و “/etc/openvpn/server/ta.key” إلى “/ etc / openvpn / client /.”

تأكد من نسخ شهادة العميل ومفتاح هذا الموقع نفسه. انسخ “/etc/easy-rsa/pki/signed/Client1.crt” و “/etc/easy-rsa/pki/private/ClientName.key” إلى العميل الخاص بك “/ etc / openvpn / client /”. كرر هذه العملية لأي عملاء إضافيين قد تكون أنشأتهم.

لأي عميل ، يجب أن يكون لديك الآن أربعة ملفات في “/ etc / openvpn / client:” Client1.crt و ClientName.key و ca.crt و ta.key.

الخادم وملفات تكوين العميل

خطوتك الأخيرة قبل بدء VPN هي تحرير ملفات التهيئة للخادم والعميل. أولاً ، حدد موقع ملفات “server.conf” الافتراضية وملف “client.conf”. من المحتمل أن يكونوا في أحد هذه المواقع:

“/usr/share/openvpn/examples”

"/ usr / share / doc / openvpn / examples / sample-config-files /" (توجد إعدادات Ubuntu هنا)

ملاحظة: في Ubuntu ، ستحتاج إلى فك ملف "server.conf.gz". استخدم gunzip -d ./server.conf.gz للحصول على ملف server.conf من الحزمة المضغوطة.

انسخ كل ملف تهيئة إلى دليل “/ etc / openvpn / server /” و / etc / openvpn / client / الخاص بكل منهما.

ذات صلة:  أفضل توزيعات Linux لتثبيتها على محرك USB وتشغيلها على أي كمبيوتر

في server.conf ، قم بإجراء التغييرات التالية. تأكد من أن أسماء ومواقع ca.crt و Server1.crt و ServerName.key و dh.pem مسردة في ملف التهيئة الخاص بك. قد تحتاج إلى استخدام المسارات الكاملة – مثل السطر الذي يقرأ “cert /etc/openvpn/server/Server1.crt”.

openvpn serverconf1 c DzTechs - إنشاء شبكة افتراضية خاصة (VPN) على لينكس مع OpenVPN

قم بتغيير السطر tls-auth … ليتم قراءته tls-crypt ta.key. مرة أخرى ، قد يكون من الضروري وجود مسار كامل.

openvpn serverconf2 c DzTechs - إنشاء شبكة افتراضية خاصة (VPN) على لينكس مع OpenVPN

(قم بإزالة “؛”) من سطر”user nobody” و “group nobody”.

openvpn serverconf3 c DzTechs - إنشاء شبكة افتراضية خاصة (VPN) على لينكس مع OpenVPN

بالنسبة لعميلك ، ستجري تغييرات مماثلة. بعد إنشاء ملف التهيئة ، عكس أسماء ومواقع ca.crt و Client1.crt و ClientName.key و ta.key (مع نفس الخطوة من tls-auth … إلى tls-crypt …) ، أدخل الاسم أو عنوان IP ومنفذ الخادم الخاص بك.

openvpn clientconf1 c DzTechs - إنشاء شبكة افتراضية خاصة (VPN) على لينكس مع OpenVPN

وقت التواصل

الآن يمكنك بدء خادمك وعميلك. هذه مسألة بسيطة إذا ذهب كل شيء أعلاه كما هو مخطط له.

ابدأ الخادم مع:

openvpn /etc/openvpn/server/server.conf

والعميل مع:

openvpn /etc/openvpn/client/client.conf

سيظهر الإنشاء الناجح للشبكة الظاهرية الخاصة (VPN) بظهور عند العميل قراءة “تم الانتهاء من تسلسل التهيئة” في نهاية مخرجاته. ستجد أيضًا نوعًا جديدًا من الاتصال في واجهات الشبكة المتاحة لديك.

openvpn ipaddrshow c DzTechs - إنشاء شبكة افتراضية خاصة (VPN) على لينكس مع OpenVPN

تعرض لقطة الشاشة هذه واجهة “tun0”. هذا ما قدمه خادم OpenVPN. يمكنك رؤية عنوانه كـ 10.8.0.1 و ping ذلك العنوان من العميل للتحقق من اتصال ناجح.

openvpn ping c DzTechs - إنشاء شبكة افتراضية خاصة (VPN) على لينكس مع OpenVPN

توجيه حركة مرور الإنترنت من خلال الخادم

في هذه المرحلة ، ستحتاج على الأرجح إلى الوصول إلى الإنترنت عبر خادمك من العميل البعيد. لإجراء ذلك ، ستحتاج أولاً إلى تغيير ملف تهيئة الخادم. أضف السطر “push-gateway def1” إلى ملف تهيئة الخادم الخاص بك.

echo "push \" redirect-gateway def1 \ "" | sudo tee -a /etc/openvpn/server/server.conf

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

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

إذا لم تكن قد قمت بتغيير سطر “server 10.8.0.0 255.255.255.0” في ملف server.conf ، يجب أن يعمل عنوان IP في ذلك الأمر. ستحتاج إلى تغيير “eth0” لتتطابق مع واجهة ethernet لخادمك. يمكنك أن ترى من لقطات الشاشة السابقة التي يستخدمها جهازي “enp19s0”.

بعد ذلك ، يمكنك دفع إعدادات DNS إلى العميل. قد يتم دفع أي عنوان يمكن أن يصل إليه العميل. يمكنك استخدام هذا الأمر كنقطة بداية:

echo "push \"dhcp-option DNS 10.8.0.1\"" | sudo tee -a /etc/openvpn/server/server.conf

أخيرًا ، يمكنك تمكين إعادة توجيه الحزمة على الخادم كما يلي:

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

يجب أن تكون الآن قادرًا على استخدام العميل للوصول إلى الإنترنت من خلال VPN.

الخلاصة

أعلم أن هذا كان طريقًا طويلًا. نأمل أن تكون قد نجحت في إنشاء شبكة افتراضية خاصة (VPN) والاتصال بالإنترنت بطريقة آمنة.

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

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

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. AcceptRead More