كتاب لينكس في العمل

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

مقتطف "10.1. إنشاء نفق OpenVPN"

لقد تحدثت بالفعل كثيرًا عن التشفير في هذا الكتاب. يمكن لـ SSH وSCP حماية البيانات المنقولة عبر الاتصالات عن بعد (الفصل 3)، ويمكن لتشفير الملفات حماية البيانات أثناء تخزينها على الخادم (الفصل 8)، ويمكن لشهادات TLS/SSL حماية البيانات المنقولة بين المواقع ومتصفحات العميل (الفصل 9) . ولكن في بعض الأحيان تحتاج بياناتك إلى الحماية عبر نطاق أوسع من الاتصالات. على سبيل المثال، ربما يعمل بعض أعضاء فريقك على الطريق أثناء الاتصال بشبكة Wi-Fi عبر نقاط الاتصال العامة. من المؤكد أنك لا ينبغي أن تفترض أن جميع نقاط الوصول هذه آمنة، ولكن موظفيك يحتاجون إلى طريقة للاتصال بموارد الشركة — وهذا هو المكان الذي يمكن أن تساعد فيه شبكة VPN.

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

باستخدام هذه الشبكة الموسعة، يمكن للمسؤولين أداء عملهم على خوادمهم من أي مكان. ولكن الأهم من ذلك هو أن الشركة التي تمتلك موارد منتشرة عبر مواقع متعددة يمكنها أن تجعلها كلها مرئية ومتاحة لجميع المجموعات التي تحتاج إليها، أينما كانوا (الشكل 10.1).

النفق في حد ذاته لا يضمن الأمن. ولكن يمكن تضمين أحد معايير التشفير في بنية الشبكة، مما يزيد بشكل كبير من مستوى الأمان. تستخدم الأنفاق التي تم إنشاؤها باستخدام حزمة OpenVPN مفتوحة المصدر نفس تشفير TLS/SSL الذي قرأت عنه بالفعل. OpenVPN ليس خيار الأنفاق الوحيد المتاح، ولكنه أحد أشهر الخيارات. ويعتبر أسرع قليلاً وأكثر أمانًا من بروتوكول نفق الطبقة الثانية البديل الذي يستخدم تشفير IPsec.

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

كتاب لينكس في العمل

10.1.1. تكوين خادم OpenVPN

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

كتاب لينكس في العمل
باتباع هذا الأسلوب وإعطاء الأسماء المناسبة لكل جهاز من الأجهزة التي تعمل بها، يمكنك بسهولة تتبع مكان تواجدك.

بعد استخدام اسم المضيف، قد تواجه مشكلة مزعجة غير قادر على حل رسائل Host OpenVPN-Server عند تنفيذ الأوامر اللاحقة. من المفترض أن يؤدي تحديث الملف /etc/hosts باسم المضيف الجديد المناسب إلى حل المشكلة.

تحضير الخادم الخاص بك لـ OpenVPN

لتثبيت OpenVPN على الخادم الخاص بك، تحتاج إلى حزمتين: openvpn وeasy-rsa (لإدارة عملية إنشاء مفتاح التشفير). يجب على مستخدمي CentOS أولًا تثبيت مستودع إصدار epel إذا لزم الأمر، كما فعلت في الفصل الثاني. لتتمكن من اختبار الوصول إلى تطبيق الخادم، يمكنك أيضًا تثبيت خادم الويب Apache (Apache2 على Ubuntu وhttpd على CentOS).

أثناء قيامك بإعداد الخادم الخاص بك، أوصي بتنشيط جدار الحماية الذي يحظر جميع المنافذ باستثناء 22 (SSH) و1194 (المنفذ الافتراضي لـ OpenVPN). يوضح هذا المثال كيفية عمل ufw على Ubuntu، لكنني متأكد من أنك لا تزال تتذكر برنامج جدار الحماية CentOS من الفصل التاسع:

# ufw enable
# ufw allow 22
# ufw allow 1194

لتمكين التوجيه الداخلي بين واجهات الشبكة على الخادم، تحتاج إلى إلغاء التعليق على سطر واحد (net.ipv4.ip_forward = 1) في الملف /etc/sysctl.conf. سيسمح هذا بإعادة توجيه العملاء البعيدين حسب الحاجة بمجرد اتصالهم. لتفعيل الخيار الجديد، قم بتشغيل sysctl -p:

# nano /etc/sysctl.conf
# sysctl -p

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

  1. قم بإنشاء مجموعة من مفاتيح تشفير البنية التحتية للمفتاح العام (PKI) على الخادم باستخدام البرامج النصية المتوفرة مع حزمة easy-rsa. بشكل أساسي، يعمل خادم OpenVPN أيضًا كمرجع مصدق خاص به (CA).
  2. إعداد المفاتيح المناسبة للعميل
  3. قم بتكوين ملف server.conf للخادم
  4. قم بإعداد عميل OpenVPN الخاص بك
  5. تحقق من VPN الخاص بك

توليد مفاتيح التشفير

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

كتاب لينكس في العمل
عندما قمت بتثبيت OpenVPN، تم إنشاء الدليل /etc/openvpn/ تلقائيًا، ولكن لا يوجد به أي شيء حتى الآن. تأتي حزم openvpn وeasy-rsa مع أمثلة لملفات القوالب التي يمكنك استخدامها كأساس للتكوين الخاص بك. لبدء عملية الاعتماد، انسخ دليل قالب easy-rsa من /usr/share/ إلى /etc/openvpn وقم بالتغيير إلى دليل easy-rsa/:

# cp -r /usr/share/easy-rsa/ /etc/openvpn
$ cd /etc/openvpn/easy-rsa

سيحتوي دليل easy-rsa الآن على عدد لا بأس به من النصوص البرمجية. في الجدول 10.1 يسرد الأدوات التي ستستخدمها لإنشاء المفاتيح.

كتاب لينكس في العمل

تتطلب العمليات المذكورة أعلاه امتيازات الجذر، لذلك عليك أن تصبح جذرًا عبر sudo su.

الملف الأول الذي ستعمل معه يسمى vars ويحتوي على متغيرات البيئة التي يستخدمها easy-rsa عند إنشاء المفاتيح. تحتاج إلى تحرير الملف لاستخدام القيم الخاصة بك بدلاً من القيم الافتراضية الموجودة بالفعل. هذا هو الشكل الذي سيبدو عليه ملفي (القائمة 10.1).

القائمة 10.1. الأجزاء الرئيسية من الملف /etc/openvpn/easy-rsa/vars

export KEY_COUNTRY="CA"
export KEY_PROVINCE="ON"
export KEY_CITY="Toronto"
export KEY_ORG="Bootstrap IT"
export KEY_EMAIL="[email protected]"
export KEY_OU="IT"

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

تأكد من إعادة تشغيل الملف باستخدام غلاف جديد لإكمال العملية غير المكتملة. عند الانتهاء من ذلك، سيطالبك البرنامج النصي بتشغيل برنامج نصي آخر، تنظيف الكل، لإزالة أي محتوى في الدليل /etc/openvpn/easy-rsa/keys/:

كتاب لينكس في العمل
وبطبيعة الحال، فإن الخطوة التالية هي تشغيل البرنامج النصي Clean-All، متبوعًا بـ build-ca، الذي يستخدم البرنامج النصي pkitool لإنشاء شهادة الجذر. سيُطلب منك تأكيد إعدادات الهوية المقدمة بواسطة vars:

# ./clean-all
# ./build-ca
Generating a 2048 bit RSA private key

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

# ./build-key-server server
[...]
Certificate is to be certified until Aug 15 23:52:34 2027 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

يستخدم OpenVPN المعلمات التي تم إنشاؤها بواسطة خوارزمية Diffie-Hellman (باستخدام build-dh) للتفاوض على مصادقة الاتصالات الجديدة. لا يلزم أن يكون الملف الذي تم إنشاؤه هنا سريًا، ولكن يجب إنشاؤه باستخدام البرنامج النصي build-dh لمفاتيح RSA النشطة حاليًا. إذا قمت بإنشاء مفاتيح RSA جديدة في المستقبل، فستحتاج أيضًا إلى تحديث ملف Diffie-Hellman:

# ./build-dh

ستنتهي الآن مفاتيح الخادم الخاصة بك في الدليل /etc/openvpn/easy-rsa/keys/، لكن OpenVPN لا يعرف ذلك. افتراضيًا، سيبحث OpenVPN عن المفاتيح في /etc/openvpn/، لذا انسخها:

# cp /etc/openvpn/easy-rsa/keys/server* /etc/openvpn
# cp /etc/openvpn/easy-rsa/keys/dh2048.pem /etc/openvpn
# cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn

إعداد مفاتيح تشفير العميل

كما رأيت بالفعل، يستخدم تشفير TLS أزواجًا من المفاتيح المتطابقة: أحدهما مثبت على الخادم والآخر مثبت على العميل البعيد. هذا يعني أنك ستحتاج إلى مفاتيح العميل. صديقنا القديم pkitool هو بالضبط ما تحتاجه لهذا الغرض. في هذا المثال، عندما نقوم بتشغيل البرنامج في الدليل /etc/openvpn/easy-rsa/، نقوم بتمرير وسيطة العميل لإنشاء ملفات تسمى Client.crt وclient.key:

# ./pkitool client

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

ولكن يمكن لأي شخص القص واللصق. بدلاً من ذلك، فكر كمسؤول لأنك لن تتمكن دائمًا من الوصول إلى واجهة المستخدم الرسومية حيث تكون عمليات القص/اللصق ممكنة. انسخ الملفات إلى الدليل الرئيسي للمستخدم الخاص بك (بحيث يمكن لعملية scp عن بعد الوصول إليها)، ثم استخدم chown لتغيير ملكية الملفات من الجذر إلى مستخدم عادي غير جذر بحيث يمكن تنفيذ إجراء scp عن بعد. تأكد من أن جميع ملفاتك مثبتة حاليًا ويمكن الوصول إليها. سوف تقوم بنقلها إلى العميل بعد قليل:

# cp /etc/openvpn/easy-rsa/keys/client.key /home/ubuntu/
# cp /etc/openvpn/easy-rsa/keys/ca.crt /home/ubuntu/
# cp /etc/openvpn/easy-rsa/keys/client.crt /home/ubuntu/
# chown ubuntu:ubuntu /home/ubuntu/client.key
# chown ubuntu:ubuntu /home/ubuntu/client.crt
# chown ubuntu:ubuntu /home/ubuntu/ca.crt

مع وجود مجموعة كاملة من مفاتيح التشفير الجاهزة للاستخدام، يتعين عليك إخبار الخادم بالطريقة التي تريد بها إنشاء شبكة VPN. ويتم ذلك باستخدام ملف server.conf.

تقليل عدد ضغطات المفاتيح

هل هناك الكثير من الكتابة؟ سيساعد التوسيع باستخدام الأقواس في تقليل هذه الأوامر الستة إلى أمرين. أنا متأكد من أنه يمكنك دراسة هذين المثالين وفهم ما يحدث. والأهم من ذلك، أنك ستتمكن من فهم كيفية تطبيق هذه المبادئ على العمليات التي تتضمن عشرات أو حتى مئات العناصر:

# cp /etc/openvpn/easy-rsa/keys/{ca.crt,client.{key,crt}} /home/ubuntu/
# chown ubuntu:ubuntu /home/ubuntu/{ca.crt,client.{key,crt}}

إعداد ملف server.conf

كيف يمكنك معرفة الشكل الذي يجب أن يبدو عليه ملف server.conf؟ هل تتذكر قالب دليل easy-rsa الذي نسخته من /usr/share/؟ عندما قمت بتثبيت OpenVPN، بقي لديك ملف قالب تكوين مضغوط يمكنك نسخه إلى /etc/openvpn/. سأبني على حقيقة أن القالب قد تمت أرشفته وأقدم لك أداة مفيدة: zcat.

أنت تعرف بالفعل كيفية طباعة المحتوى النصي لملف على الشاشة باستخدام الأمر cat، ولكن ماذا لو تم ضغط الملف باستخدام gzip؟ يمكنك دائمًا فك ضغط الملف ومن ثم سيخرجه cat بسعادة، ولكن هذه خطوة أو خطوتين أكثر من اللازم. بدلاً من ذلك، كما كنت قد خمنت، يمكنك إصدار الأمر zcat لتحميل النص الذي تم فك حزمته في الذاكرة في خطوة واحدة. في المثال التالي، بدلاً من طباعة النص على الشاشة، ستقوم بإعادة توجيهه إلى ملف جديد يسمى server.conf:

# zcat 
  /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz 
  > /etc/openvpn/server.conf
$ cd /etc/openvpn

دعونا نضع جانبًا الوثائق الشاملة والمفيدة التي تأتي مع الملف ونرى كيف قد يبدو عند الانتهاء من التحرير. لاحظ أن الفاصلة المنقوطة (؛) تخبر OpenVPN بعدم قراءة السطر التالي أو تنفيذه (القائمة 10.2).

كتاب لينكس في العمل
دعنا نذهب من خلال بعض هذه الإعدادات.

  • افتراضيًا، يعمل OpenVPN على المنفذ 1194. ويمكنك تغيير هذا، على سبيل المثال، لإخفاء أنشطتك بشكل أكبر أو تجنب التعارضات مع الأنفاق النشطة الأخرى. وبما أن 1194 يتطلب الحد الأدنى من التنسيق مع العملاء، فمن الأفضل القيام بذلك بهذه الطريقة.
  • يستخدم OpenVPN إما بروتوكول التحكم في الإرسال (TCP) أو بروتوكول مخطط بيانات المستخدم (UDP) لنقل البيانات. قد يكون TCP أبطأ قليلاً، ولكنه أكثر موثوقية ومن المرجح أن تفهمه التطبيقات التي تعمل على طرفي النفق.
  • يمكنك تحديد ضبط التطوير عندما تريد إنشاء نفق IP أبسط وأكثر كفاءة والذي يحمل محتوى البيانات ولا شيء آخر. من ناحية أخرى، إذا كنت بحاجة إلى توصيل واجهات شبكة متعددة (والشبكات التي تمثلها)، وإنشاء جسر إيثرنت، فسيتعين عليك اختيار dev Tap. إذا كنت لا تفهم ما يعنيه كل هذا، استخدم الوسيطة tun.
  • الأسطر الأربعة التالية تعطي OpenVPN أسماء ملفات المصادقة الثلاثة الموجودة على الخادم وملف خيارات dh2048 الذي قمت بإنشائه مسبقًا.
  • يقوم خط الخادم بتعيين النطاق وقناع الشبكة الفرعية الذي سيتم استخدامه لتعيين عناوين IP للعملاء عند تسجيل الدخول.
  • تسمح معلمة الدفع الاختيارية "route 10.0.3.0 255.255.255.0" للعملاء البعيدين بالوصول إلى الشبكات الفرعية الخاصة خلف الخادم. يتطلب إجراء هذا العمل أيضًا إعداد الشبكة على الخادم نفسه حتى تعرف الشبكة الفرعية الخاصة عن شبكة OpenVPN الفرعية (10.8.0.0).
  • يسمح لك خط المضيف المحلي 80 لمشاركة المنفذ بإعادة توجيه حركة مرور العميل القادمة على المنفذ 1194 إلى خادم ويب محلي يستمع على المنفذ 80. (سيكون هذا مفيدًا إذا كنت ستستخدم خادم الويب لاختبار VPN الخاص بك.) هذا يعمل فقط ثم عند تحديد بروتوكول TCP.
  • يجب تمكين أسطر المستخدم none والمجموعة nogroup عن طريق إزالة الفواصل المنقوطة (;). إن إجبار العملاء البعيدين على العمل كأحد أو بدون مجموعة يضمن عدم امتياز الجلسات على الخادم.
  • يحدد السجل أن إدخالات السجل الحالية ستحل محل الإدخالات القديمة في كل مرة يتم فيها تشغيل OpenVPN، بينما يقوم إلحاق السجل بإلحاق إدخالات جديدة بملف السجل الموجود. تتم كتابة ملف openvpn.log نفسه في الدليل /etc/openvpn/.

بالإضافة إلى ذلك، غالبًا ما تتم إضافة قيمة عميل إلى عميل إلى ملف التكوين حتى يتمكن العديد من العملاء من رؤية بعضهم البعض بالإضافة إلى خادم OpenVPN. إذا كنت راضيًا عن التكوين الخاص بك، فيمكنك تشغيل خادم OpenVPN:

# systemctl start openvpn

نظرًا للطبيعة المتغيرة للعلاقة بين OpenVPN وsystemd، قد تكون الصيغة التالية مطلوبة أحيانًا لبدء خدمة: systemctl start openvpn@server.

تشغيل ip addr لسرد واجهات شبكة الخادم الخاص بك يجب أن يؤدي الآن إلى إخراج رابط إلى واجهة جديدة تسمى tun0. سيقوم OpenVPN بإنشائه لخدمة العملاء القادمين:

$ ip addr
[...]
4: tun0: mtu 1500 qdisc [...]
      link/none
      inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
          valid_lft forever preferred_lft forever

قد تحتاج إلى إعادة تشغيل الخادم قبل أن يبدأ كل شيء في العمل بشكل كامل. المحطة التالية هي جهاز الكمبيوتر العميل.

10.1.2. تكوين عميل OpenVPN

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

في هذا القسم، سأركز على الإعداد اليدوي لنوع ما من أجهزة كمبيوتر Linux للعمل كعميل OpenVPN. لكن هذه ليست الطريقة الوحيدة التي تتاح بها هذه الفرصة. يدعم OpenVPN تطبيقات العميل التي يمكن تثبيتها واستخدامها على أجهزة الكمبيوتر المكتبية والمحمولة التي تعمل بنظام التشغيل Windows أو macOS، بالإضافة إلى الهواتف الذكية والأجهزة اللوحية التي تعمل بنظامي Android وiOS. راجع openvpn.net للحصول على التفاصيل.

يجب تثبيت حزمة OpenVPN على جهاز العميل كما تم تثبيتها على الخادم، على الرغم من عدم الحاجة إلى easy-rsa هنا نظرًا لأن المفاتيح التي تستخدمها موجودة بالفعل. تحتاج إلى نسخ ملف قالب Client.conf إلى الدليل /etc/openvpn/ الذي قمت بإنشائه للتو. لن يتم ضغط الملف هذه المرة، وبالتالي فإن الأمر cp العادي سيقوم بالمهمة على ما يرام:

# apt install openvpn
# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf 
  /etc/openvpn/

ستكون معظم الإعدادات في ملف Client.conf واضحة بذاتها: يجب أن تتطابق مع القيم الموجودة على الخادم. كما ترون من ملف المثال التالي، فإن المعلمة الفريدة هي 192.168.1.23 1194 عن بعد، والتي تخبر العميل بعنوان IP الخاص بالخادم. مرة أخرى، تأكد من أن هذا هو عنوان الخادم الخاص بك. يجب عليك أيضًا إجبار جهاز الكمبيوتر العميل على التحقق من صحة شهادة الخادم لمنع هجوم الوسيط المحتمل. إحدى الطرق للقيام بذلك هي إضافة خادم Remote-cert-tls للخط (القائمة 10.3).

كتاب لينكس في العمل
يمكنك الآن الانتقال إلى الدليل /etc/openvpn/ واستخراج مفاتيح الشهادات من الخادم. استبدل عنوان IP الخاص بالخادم أو اسم المجال في المثال بالقيم الخاصة بك:

كتاب لينكس في العمل
لن يحدث أي شيء مثير على الأرجح حتى تقوم بتشغيل OpenVPN على العميل. وبما أنك تحتاج إلى تمرير عدة وسيطات، فستفعل ذلك من سطر الأوامر. تخبر وسيطة --tls-client OpenVPN أنك ستعمل كعميل وتتصل عبر تشفير TLS، ويشير --config إلى ملف التكوين الخاص بك:

# openvpn --tls-client --config /etc/openvpn/client.conf

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

  • اقرأ بعناية مخرجات عملية OpenVPN على العميل. غالبًا ما يحتوي على نصائح قيمة حول ما لا يمكن فعله بالضبط ولماذا.
  • تحقق من رسائل الخطأ في ملفات openvpn.log وopenvpn-status.log في الدليل /etc/openvpn/ على الخادم.
  • تحقق من سجلات النظام على الخادم والعميل بحثًا عن الرسائل ذات الصلة بـ OpenVPN والمحددة التوقيت. (journalctl -ce سيعرض أحدث الإدخالات.)
  • تأكد من أن لديك اتصال شبكة نشط بين الخادم والعميل (المزيد حول هذا في الفصل 14).

نبذة عن الكاتب

ديفيد كلينتون - مسؤول النظام والمعلم والكاتب. لقد قام بإدارة وكتب وإنشاء مواد تعليمية للعديد من التخصصات التقنية المهمة، بما في ذلك أنظمة Linux، والحوسبة السحابية (خاصة AWS)، وتقنيات الحاويات مثل Docker. قام بتأليف كتاب "تعلم خدمات الويب من أمازون في شهر من وجبات الغداء" (مانينغ، 2017). يمكن العثور على العديد من دوراته التدريبية عبر الفيديو على موقع Pluralsight.com، وتتوفر روابط إلى كتبه الأخرى (حول إدارة Linux والمحاكاة الافتراضية للخادم) على الموقع bootstrap-it.com.

»لمزيد من المعلومات حول الكتاب ، يرجى زيارة موقع الناشر
» جدول المحتويات
» مقتطفات

ل Khabrozhiteli خصم 25٪ على الكوبون - لينكس
عند الدفع مقابل النسخة الورقية من الكتاب ، يتم إرسال كتاب إلكتروني إلى البريد الإلكتروني.

المصدر: www.habr.com

إضافة تعليق