اذهب إلى المحتوى

البحث في الموقع

المحتوى عن 'vpn'.

  • ابحث بالكلمات المفتاحية

    أضف وسومًا وافصل بينها بفواصل ","
  • ابحث باسم الكاتب

نوع المحتوى


التصنيفات

  • الإدارة والقيادة
  • التخطيط وسير العمل
  • التمويل
  • فريق العمل
  • دراسة حالات
  • التعامل مع العملاء
  • التعهيد الخارجي
  • السلوك التنظيمي في المؤسسات
  • عالم الأعمال
  • التجارة والتجارة الإلكترونية
  • نصائح وإرشادات
  • مقالات ريادة أعمال عامة

التصنيفات

  • مقالات برمجة عامة
  • مقالات برمجة متقدمة
  • PHP
    • Laravel
    • ووردبريس
  • جافاسكربت
    • لغة TypeScript
    • Node.js
    • React
    • Vue.js
    • Angular
    • jQuery
    • Cordova
  • HTML
  • CSS
    • Sass
    • إطار عمل Bootstrap
  • SQL
  • لغة C#‎
    • ‎.NET
    • منصة Xamarin
  • لغة C++‎
  • لغة C
  • بايثون
    • Flask
    • Django
  • لغة روبي
    • إطار العمل Ruby on Rails
  • لغة Go
  • لغة جافا
  • لغة Kotlin
  • لغة Rust
  • برمجة أندرويد
  • لغة R
  • الذكاء الاصطناعي
  • صناعة الألعاب
  • سير العمل
    • Git
  • الأنظمة والأنظمة المدمجة

التصنيفات

  • تصميم تجربة المستخدم UX
  • تصميم واجهة المستخدم UI
  • الرسوميات
    • إنكسكيب
    • أدوبي إليستريتور
  • التصميم الجرافيكي
    • أدوبي فوتوشوب
    • أدوبي إن ديزاين
    • جيمب GIMP
    • كريتا Krita
  • التصميم ثلاثي الأبعاد
    • 3Ds Max
    • Blender
  • نصائح وإرشادات
  • مقالات تصميم عامة

التصنيفات

  • مقالات DevOps عامة
  • خوادم
    • الويب HTTP
    • البريد الإلكتروني
    • قواعد البيانات
    • DNS
    • Samba
  • الحوسبة السحابية
    • Docker
  • إدارة الإعدادات والنشر
    • Chef
    • Puppet
    • Ansible
  • لينكس
    • ريدهات (Red Hat)
  • خواديم ويندوز
  • FreeBSD
  • حماية
    • الجدران النارية
    • VPN
    • SSH
  • شبكات
    • سيسكو (Cisco)

التصنيفات

  • التسويق بالأداء
    • أدوات تحليل الزوار
  • تهيئة محركات البحث SEO
  • الشبكات الاجتماعية
  • التسويق بالبريد الالكتروني
  • التسويق الضمني
  • استسراع النمو
  • المبيعات
  • تجارب ونصائح
  • مبادئ علم التسويق

التصنيفات

  • مقالات عمل حر عامة
  • إدارة مالية
  • الإنتاجية
  • تجارب
  • مشاريع جانبية
  • التعامل مع العملاء
  • الحفاظ على الصحة
  • التسويق الذاتي
  • العمل الحر المهني
    • العمل بالترجمة
    • العمل كمساعد افتراضي
    • العمل بكتابة المحتوى

التصنيفات

  • الإنتاجية وسير العمل
    • مايكروسوفت أوفيس
    • ليبر أوفيس
    • جوجل درايف
    • شيربوينت
    • Evernote
    • Trello
  • تطبيقات الويب
    • ووردبريس
    • ماجنتو
    • بريستاشوب
    • أوبن كارت
    • دروبال
  • الترجمة بمساعدة الحاسوب
    • omegaT
    • memoQ
    • Trados
    • Memsource
  • برامج تخطيط موارد المؤسسات ERP
    • تطبيقات أودو odoo
  • أنظمة تشغيل الحواسيب والهواتف
    • ويندوز
    • لينكس
  • مقالات عامة

التصنيفات

  • آخر التحديثات

أسئلة وأجوبة

  • الأقسام
    • أسئلة البرمجة
    • أسئلة ريادة الأعمال
    • أسئلة العمل الحر
    • أسئلة التسويق والمبيعات
    • أسئلة التصميم
    • أسئلة DevOps
    • أسئلة البرامج والتطبيقات

التصنيفات

  • كتب ريادة الأعمال
  • كتب العمل الحر
  • كتب تسويق ومبيعات
  • كتب برمجة
  • كتب تصميم
  • كتب DevOps

ابحث في

ابحث عن


تاريخ الإنشاء

  • بداية

    نهاية


آخر تحديث

  • بداية

    نهاية


رشح النتائج حسب

تاريخ الانضمام

  • بداية

    نهاية


المجموعة


النبذة الشخصية

تم العثور على 6 نتائج

  1. يزداد كل يوم عدد المشاريع البرمجيّة المبنيّة بواسطة فرق تعمل من مناطق جغرافيّة مختلفة، وعلى الرغم من مميزات هذه الطريقة، إلا أن هذه الفرق تحتاج في بعض الحالات لربط حواسيبها مع بعضها البعض عبر الإنترنت والتعامل معها على أنها في نفس المكان، فعلى سبيل المثال، قد تستخدم أنظمة الموزّعة مثل Kubernetes أو تبني تطبيقًا معقدًا ذا خدمات متعدّدة وفي بعض الأحيان، سترّفع من الإنتاجية لو كان يمكنك التعامل مع الأجهزة على أن كل واحدة منها بجانب الأخرى لكي لا تتعرّض لخطر تعريض الخدمات غير جاهزة إلى الأنترنت، ويمكنك تحقيق هذا النموذج عن طريق شبكات المعرّفة بالبرمجيات Software-Defined Networking (أي SDN) التي تعتبر تكنولوجيا جديدة تسمح بإنشاء شبكة حيويّة مبنيّة بشكل كامل على البرمجيات. سنستخدم في هذا الدرس ZeroTier One وهو تطبيق مفتوح المصدر يستخدم آخر تكنولوجيات SDN للسماح للمستخدمين بإنشاء شبكات محميّة وقابلة للإدارة والتعامل مع الأجهزة المتصلة على أنها في نفس المكان الفيزيائي. يوفّر لك تطبيق ZeroTier طرفيّة (console) للويب لإدارة الشبكة وتطبيقات الأطراف (endpoint) للعملاء، فهي تكنولوجيات مشفّرة ند للند، أي أنها بخلاف حلول VPN التقليديّة، فلا تحتاج عند الإتصالات المرور إلى خادم مركزي أو موجّه، فالرسائل ترسل مباشرةً من جهاز إلى آخر ونتيجة لذلك فهي فعالة جدا وتضمن الحد الأدنى من وقت الاستجابة. من المميزات الأخرى لهذا التطبيق هو سهولة عملية النشر والإعداد ووضوح عملية الصيانة، ويسمح بالتسجيل المركزي وإدارة العقد المأذون لها عن طريق طرفيّة الويب. في هذا الدرس، ستربط عميل وخادم معًا في شبكة نقطة-إلى-نقطة (point-to-point) بسيطة، وبما أن الشبكات المعرّفة بالبرمجيات لا تستخدم تصميم العميل/الخادم التقليدي، فلا يوجد خادم VPN مركزي للتثبيت والإعداد، فيبسّط هذا نشر الأداة وإضافة أي عقد إضافيّة. وبمجرّد تأسيس الاتصال، ستحصل على فرصة استخدام قدرات VPN ZeroTier عن طريق استخدام بعض وظائف لينكس الذكيّة للسماح لحركة الحزم بمغادرة شبكة ZeroTier من خادمك وإرشاد العميل لإرسال حركة حزمه إلى ذلك الاتجاه. المتطلبات الأساسيّة قبل البدء، سنحتاج إلى هذه المتطلبات: خادم أبونتو 18.04، وستحتاج على هذا الخادم، مستخدم عادي مع صلاحيات sudo والتي يمكنك إعدادها عن طريق درس إعداد خادم أبنتو 18.04. حساب على ZeroTier One والذي يمكنك إعداده عن طريق الذهاب إلى My ZeroTier، النسخة المجانيّة من هذه الخدمة تفي بالغرض في هذا الدرس. حاسوب محلي للانضمام إلى SDN كعميل. في الأمثلة في هذا الدرس، ستجد أن كل من الخادم والحاسوب المحلي يعملان على نظام لينكس أوبنتو لكن يمكنك استخدام أي نظام تشغيل موجود على صفحة ZeroTier. الآن، أنت مستعد لإعداد شبكة معرّفة بالبرمجيات للخادم والجهاز المحلي. الخطوة الأولى - إنشاء شبكة معرفة بالبرمجيات باستخدام ZeroTier One توفّر منصة ZeroTier النقطة المركزيّة للتحكم بالشبكة المعرّفة بالبرمجيات الخاصة بك، ومن هناك يمكنك تخويل ومنع العملاء ويمكنك اختيار مخطّط العنونة وإنشاء معرّف الشبكة الذي ستستخدمه في توجيه عملائك في مرحلة الإعداد. سجّل دخولك على حساب ZeroTier، ثم أضغط على Networks في أعلى الشاشة، ومن ثم على Create. سيظهر لك اسم شبكة مولّد بشكل آلي، اضغط عليه لرؤية شاشة إعدادات الشبكة، تذكّر معّرف الشبكة Network ID الملوّن بالأصفر لأننا سنحتاجه في وقت لاحق. إذا أردت، يمكنك تغيير اسم الشبكة إلى اسم آخر أو إضافة تعليق، وسيُحفظ أي تغيير ويطبّق بشكل آلي. بعد ذلك اختر أي نطاق عناوين IPv4 سيتعامل معه SDN، على الجانب الأيمن من الشاشة في المساحة المسماة IPv4 Auto-Assign، اختر نطاق عناوين التي ستستخدمُه العقد الخاصة بك، بالنسبة لهذا الدرس، يمكنك اختيار أي مجال، ولكنك تأكد من اختيار Auto-Assign from Range. تأكد من بقاء Access Control في الجانب الأيسر على قيمة Certificate ‏(Private Network)، يضمن هذا أنه يمكن للأجهزة المخوّلة فقط الاتصال بشبكتك، وليس أي شخص لديه معرّف الشبكة الخاص بك. ستبدو الإعدادات كالتالي عند الإنتهاء منها: في هذه المرحلة، أنهيّت أساس شبكة معرّفة بالبرمجيات، في الخطوة القادمة، سنثبّت برنامج ZeroTier على خادمك وأجهزة العميل للسماح لهم بالاتصال بـ SDN الخاص بك. الخطوة الثانية - تثبيت عميل ZeroTier One على خادمك والحاسوب المحلي بما أن ZeroTier One يعتبر برنامجًا جديدًا، فهو غير موجود في مستودعات برامج أوبنتو، ولهذا السبب، يوفّر ZeroTier سكربت التثبيت والذي سيُستخدم لتثبيت البرنامج و يحتوي على سكربت توقيع-GPG، أي سيتأكد من أن الشيفرة البرمجيّة التي ستثبتها منشورة بواسطة ZeroTier. curl -s 'https://pgp.mit.edu/pks/lookup?op=get&search=0x1657198823E52A61' | gpg --import && if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi يملك هذا السكربت أربعة أجزاء أساسية وهذا تفسير كل جزء منها: curl -s 'https://pgp.mit.edu/pks/lookup?op=get&search=0x1657198823E52A61' سيستدعي هذا الجزء مفتاح ZeroTier العام من `MIT. gpg --import يضيف هذا القسم مفتاح العام لـ ZeroTier إلى سلسلة المفاتيح المحلية للتخويلات للوثوق في الحزم التي ترغب في تثبيتها. الجزء التالي من الأمر سيُنفّذ فقط إذا انتهى استدعاء GPG بنجاح. if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" يمكنك ترجمة هذا القسم إلى : إذا كان سكربت التثبيت الموقّع بالتشفير منزّل من ZeroTier.com ومّر من GPG ولن يعترض عليه على انه غير موقّع من ZeroTier، اعرض هذه المعلومة على الشاشة. sudo bash; fi يأخذ هذا القسم السكربت المتحقق منه في ويٌنفّذه قبل الانتهاء. تحذير: لا تنزّل شيء من الانترنت وتربطه ببرنامج آخر إلا لو تأكدت منه من مصدر موثوق. يمكنك فحص الشيفرة المصدرية لبرنامج ZeroTier على صفحة GitHub الخاصة بالمشروع إذا رغبت في ذلك. استخدم طرفيّة SSH للاتصال بخادمك المنشئ حديثّا وشغّل الأمر السابق كمستخدم عادي تأكد أنك لا تشغّل هذا الأمر بصلاحيات الجذر، لأن السكربت سيطلب بشكل تلقائي كلمة المرور الخاصة بك لرفع مستوى الصلاحيات، وتذكر إبقاء طرفيّة ZeroTier مفتوح في متصفحك حتى تتمكّن من التعامل معه عند الضرورة. بمجرّد أن ينتهي السكربت من العمل، ستجد سطرين مشابهين للسطرين التاليين، سجّل عنوان ZeroTier (بدون الأقواس المعقوفة) واسم النظام الذي ولّد هذا العنوان لأنك ستحتاجهم فيما بعد: *** Waiting for identity generation... *** Success! You are ZeroTier address [ 916af8664d ]. أعد هذه الخطوات على حاسوبك المحلي إذا كنت تستخدم نظام أوبنتو أو اتبع الخطوات الموجودة على موقع ZeroTier إذا كنت تستخدم نظامًا آخرًا. ومرّة أخرى احفظ عنوان ZeroTier والجهاز الذي يولّد هذا العنوان، لأنك ستحتاج إلى هذه المعلومات في الخطوة التالية من الدرس عندما تضم الخادم والعميل إلى الشبكة. الخطوة الثالثة - الانضمام إلى شبكة ZeroTier الخاصة بك بعد تشغيل برنامج ZeroTier على كل من الخادم والعميل، أنت الآن مستعد لتوصيلهم إلى الشبكة التي أنشأتها في طرفيّة ويب ZeroTier. استخدم الأمر التالي لتوجيه العميل الخاص بك لطلب الوصول إلى شبكة ZeroTier عن طريق المنصة الخاصة بهم، سيُرفض الطلب الأول للعميل وسيبقى معلّقًا، لكننا سنصلح ذلك بعد لحظات. تأكد من استبدال NetworkID بمعرّف الشبكة الذي سجلناه سابقًا في نافذة إعداد الشبكة. sudo zerotier-cli join NetworkID ستكون النتيجة كالتالي: 200 join OK ستحصل على رسالة 200 join OK لتأكيد أن خدمة ZeroTier قد اشتغلت على خادمك، وإذا لم تحصل على هذه الرسالة، تأكد من معرّف الشبكة الذي أدخلته. بما أنك لم تنشئ شبكة عامة يمكن لأي شخص في العالم الإنضمام إليها، ستحتاج الآن إلى تخويل عملائك، اذهب إلى طرفيّة ويب ZeroTier وستجد في الأسفل قسم Members، ستجد المدخلات مع علامة Online، بنفس العناوين التي أدخلتها سابقًا. في العمود الأول Auth?‎، ضع إشارة على المربع لتخويلهم للانضمام إلى الشبكة، سيخصص متحكم ZeroTier عنوان IP للخادم وللعميل من النطاق الذي اخترته سابقا لاستخدامهم في المرة القادمة عند استدعاء SDN. يحتاج تخصيص عناوين IP بعض الوقت، في أثناء انتظار انتهاء العملية، يمكنك توفير Short Name و Description للعقد في قسم Members. وبهذا، ربطت النظامين إلى شبكة المعرّف بالبرمجيات الخاصة بك. حتى الآن تعرفنا على بعض أساسيات لوحة تحكم ZeroTier، ولقد استخدمنا واجهة سطر الأوامر لتنزيل وتثبيت ZeroTier، ومن ثم ربط كل من الخادم والعميل لتلك الشبكة، وبعد ذلك، ستتأكد من تطبيق كل شيء بشكل جيّد عن طريق أداء اختبار اتصال. الخطوة الرابعة - التحقق من الاتصال في هذه المرحلة، من المهم التحقق من أن كِلا الجهازين يمكنهما التواصل مع بعضهم البعض، فهنالك امكانية أنه لا يمكن التواصل فيما بينهم حتى لو ادعوا أنهم انضموا إلى الشبكة. ومن خلال التحقق من الاتصال الآن، لا تحتاج إلى القلق بشأن مشكلات الترابط الأساسيّة التي قد تسبب مشكلة في وقت لاحق. من الطرق السهلة لإيجاد عنوان IP الخاص بـ ZeroTier لكل جهاز هو النظر إلى قسم Members في طرفيّة ويب ZeroTier، ربما ستحتاج إلى تحديث الصفحة بعد التخويل للخادم والعميل قبل ظهور عناوين IP الخاصة بهم، وبدلًا من ذلك، توجد طريقة أخرى لفعل هذا وذلك عن طريق استخدام سطر أوامر لينكس لإيجاد هذه العناوين، استخدم الأمر التالي على كِلا الجهازين، عنوان IP الأول الذي يظهر في القائمة هو الذي سنستخدمه، في المثال أدناه، العنوان هو 203.0.113.0. ip addr sh zt0 | grep 'inet' ستكون المخرجات كالتالي: inet 203.0.113.0/24 brd 203.0.255.255 scope global zt0 inet6 fc63:b4a9:3507:6649:9d52::1/40 scope global inet6 fe80::28e4:7eff:fe38:8318/64 scope link لتجربة الاتصال بين الأجهزة، استخدم الأمر ping من أحد الأجهزة متبوع باسم عنوان IP الآخر، فعلى سبيل المثال، على جهاز العميل: ping your_server_ip وعلى الخادم: ping your_client_ip إذا عادت نتيجة من الجهاز الآخر (كما هو موضّح في المخرجات أسفله)، فإن كلا العقدين يتواصلان عبر SDN بنجاح. PING 203.0.113.0 (203.0.113.0) 56(84) bytes of data. 64 bytes from 203.0.113.0: icmp_seq=1 ttl=64 time=0.054 ms 64 bytes from 203.0.113.0: icmp_seq=2 ttl=64 time=0.046 ms 64 bytes from 203.0.113.0: icmp_seq=3 ttl=64 time=0.043 ms يمكنك إضافة أي عدد من الأجهزة إلى هذه الإعدادات عن طريق إعادة تثبيت ZeroTier وضمهم كما وضحنا في الأعلى. تذكر أن هذه الأجهزة لا تحتاج إلى أن تكون قريبة من بعضها البعض بأي طريقة. والآن، بعد أن تأكدت من أن الخادم والعميل يمكنهم التواصل مع بعضهم البعض، واصل القراءة لتتعلم كيف يمكنك ضبط الشبكة لتوفير بوابة خروج (exit gateway) وبناء VPN خاص بك. الخطوة الخامسة - تفعيل قدرات VPN الخاصة بـ ZeroTier كما ذكرنا في المقدمة، يمكنك استخدام ZeroTier كأداة VPN، إذا كنت لا تخطط لاستخدام ZeroTier كحل VPN، فلا تحتاج إلى اتباع هذه الخطوة ويمكنك القفز مباشرةً إلى الخطوة السادسة. إن استخدام VPN يخفي مصدر اتصالاتك مع المواقع عبر الانترنت، ويسمح لك بتجاوز القيود التي قد تكون موجودة في الشبكة التي تستخدمها، فأنت بالنسبة للإنترنت، تتصفحه عن طريق عنوان IP العام للخادم. ولكي تستخدم ZeroTier كأداة VPN، ستحتاج إلى القيام بمزيد من التغييرات لخادمك وإعدادات العميل. تفعيل ترجمة عنوان الشبكة وإعادة توجيه عنوان IP ترجمة عنوان الشبكة (Network Address Translation) والذي يعرف بـ "NAT"، هي طريقة تمكّن الموجّه (router) من قبول الحزم في واجهة واحدة موسومة بعنوان IP المرسل ومن ثم تبديل ذلك العنوان بعنوان الموجّه. يحفظ سجل هذا التبادل في ذاكرة الموجّه بحيث عند عودة الحزم في الاتجاه المعاكس، يمكن للموجّه ترجمة عنوان IP مرّة أخرى إلى عنوانه الأصلي. يستخدم NAT في العادة للسماح لعدة حواسيب للعمل باستخدام عنوان IP واحد ظاهر للعموم، والذي هو مفيد بالنسبة لخدمة VPN، ومثال على NAT، الموجه المنزلي الذي يقدمه لك مزوّد خدمة الإنترنت لتتصل جميع الأجهزة في منزلك بالإنترنت. فيشترك حاسوبك وهاتفك وأجهزتك اللوحية في نفس عنوان IP لشبكة الأنترنت، لأن الموجّه يستخدم NAT. عن رغم من أن الموجه هو من يقوم بـ NAT، فيمكن للخادم فعل ذلك أيضًا، وعن طريق هذه الخطوة، ستستفيد من هذه الوظيفة في خادم ZeroTier لتفعيل قدرات VPN. إن عملية إعادة توجيه عنوان IP ‏(IP forwarding) هي وظيفة يقوم بها الموجّه أو الخادم لتوجيه حركة الحزم من واجهة إلى أخرى إذا كانت عناوين IP في مناطق مختلفة. إذا كان الموجّه متّصل بشبكتين، فيسمح إعادة توجيه عنوان IP بتوجيه الحزم فيما بينهم. يبدو هذا سهلًا، لكن قد تواجه صعوبات في تطبيقه، أما في هذا الدرس، فمجرّد تعديل بضعة ملفات إعداد. بتفعيل إعادة توجيه IP، ستصل حركة الحزم للـ VPN من عميلك في شبكة ZeroTier إلى واجهة ZeroTier للخادم، وبدون هذه الإعدادات، ستحذف نواة لينكس (افتراضيًا) أي حزم تصل لواجهة ليست لها، وهذا هو سلوكها الافتراضي، لأنه في العادة أي حزم تصل إلى واجهة لديها عنوان وصول شبكة أخرى قد تكون بسبب خطأ من الموجه في الشبكة. اعتبر إعادة توجيه عنوان IP على أنه إعلام نواة لينكس أنه يمكن إعادة توجيه الحزم بين الواجهات، فالوضع الافتراضي هو 0 أي مغلق، والذي ستحوله إلى 1 أي مفعّل. شغّل الأمر التالي لرؤية الإعدادات الحالية: sudo sysctl net.ipv4.ip_forward ستبدو المخرجات كالتالي: net.ipv4.ip_forward = 0 لتفعيل إعادة توجيه عنوان IP، عدّل على ملف ‎/etc/sysctl.conf في خادمك وأضف السطر المطلوب، يسمح هذا الملف للمدراء بتجاوز إعدادات النواة الافتراضية وسيظّل يعمل دائما حتى بعد إعادة التشغيل لذلك لا تقلق بشأن إعداده مرّة أخرى. استخدم nano أو محرر النصوص المفضّل لديك لإضافة السطر التالي إلى نهاية الملف: sudo nano /etc/sysctl.conf ثم أضف السطر التالي: . . . net.ipv4.ip_forward = 1 اغلق الملف بعد حفظه ثم شغّل الأمر التالي لإعلام النواة بالتغييرات. sudo sysctl -p سيتبني الخادم أي تغييرات في الإعدادات من الملف وسيطبقها فورا دون الحاجة إلى إعادة التشغيل، شغل نفس الأمر الذي كتبناه سابقا وستجد أن إعادة توجيه IP مفعّل. sudo sysctl net.ipv4.ip_forward ستكون المخرجات كالتالي: net.ipv4.ip_forward = 1 والآن، بعد تفعيل إعادة توجيه عناوين IP، سنضع بعض القواعد لإعادة توجيه بسيطة للخادم، بما أن نواة لينكس تملك القدرة على توجيه الشبكة بداخلها، فكل ما عليك فعله هو إضافة بعض القواعد لاخبار الجدار الناري الداخلي والموجّه أن حركة الحزم الجديدة مقبولة وأين سيرسلها. لإضافة هذه القواعد من سطر الأوامر، ستحتاج أولًا إلى معرفة أسماء التي أعطاها أوبنتو لكل من واجهة ZeroTier وواجهة إثرنت Ethernet للإنترنت العادي، سيكونان في العادة zt0 و eth0 لكن ليس دائمًا. لإيجاد أسماء هذه الواجهات، استخدم الأمر ip link show، هذه الأداة هي جزء من iproute2 وهي مجموعة من أدوات مساحة المستخدم والتي تأتي مثبتة في أبنتو بشكل افتراضي: ip link show في مخرجات هذا الأمر، ستجد أسماء الواجهة بجانب الأرقام التي تعرّف الواجهة في القائمة، إذا وجدّت أسماء مختلفة عن الموجودة في المثال، فاستخدمها في بقيّة الدرس: 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 72:2d:7e:6f:5e:08 brd ff:ff:ff:ff:ff:ff 3: zt0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2800 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000 link/ether be:82:8f:f3:b4:cd brd ff:ff:ff:ff:ff:ff وبعد ذلك استخدم iptables لتفعيل ترجمة عناوين الشبكة (Network-Address-Translation) وعمليّة تنكر IP ‏(IP masquerading): sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE اسمح بتوجيه حركة الحزم وراقب الاتصالات النشطة: sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT بعد ذلك، اسمح بتوجيه حركة الحزم من zt0 إلى eth0، والقاعدة المعاكسة لهذه غير مطلوبة بما أنك ستفترض أن العميل يتصل دائمًا من هذا الخادم، وليس من طريق آخر: sudo iptables -A FORWARD -i zt0 -o eth0 -j ACCEPT من المهم تذكّر أن قواعد iptables التي وضعتها لهذا الخادم لا تبقى عند إعادة التشغيل، ستحتاج إلى حفظ هذه القواعد لإعادتها في حالة إعادة تشغيل الخادم، شغّل الأوامر في الأسفل وسترى كيف يمكنك بشكل مختصر حفظ قواعد IPv4 الحاليّة (IPv6 غير مطلوبة في الوقت الحالي): sudo apt-get install iptables-persistent sudo netfilter-persistent save بعد تنفيذ الأمر sudo netfilter-persistent save من الأفضل إعادة تشغيل الخادم للتأكد من أن القواعد قد حفظت بشكل صحيح، وأسهل طريقة للتأكد من ذلك هو عن طريق تشغيل sudo iptables-save والذي سيعرض الإعداد الموجود حاليًا في ذاكرة إلى الطرفية. إذا رأيت قواعد مشابهة للقواعد في الأسفل بغض النظر عن التنكر، إعادة التوجيه IP وواجهة zt0، فإنها حفظت بشكل صحيح. sudo iptables-save المخرجات: # Generated by iptables-save v1.6.0 on Tue Apr 17 21:43:08 2018 . . . -A POSTROUTING -o eth0 -j MASQUERADE COMMIT . . . -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i zt0 -o eth0 -j ACCEPT COMMIT . . . بعد تطبيق هذه القواعد على الخادم، يمكنك الآن نقل الحزم بين شبكة ZeroTier والانترنت العام، ومع ذلك، لن يعمل VPN إلا لو أُعلمت شبكة ZeroTier نفسها أن الخادم جاهز لاستخدامه كبوابة خروج (gateway). تفعيل خادمك لإدارة التوجيه العمومي (Global Route) من أجل أن يتمكن خادمك من معالجة حركة الحزم من أي عميل، يجب أن تتأكد من معرفة العملاء الآخرين في شبكة ZeroTier كيف يرسلون حركة الحزم له، وذلك عن طريق إعداد توجيه عمومي (Global Route) في طرفيّة ZeroTier، يعرّف الأشخاص المختصين في شبكات الحاسوب بالتوجيه الافتراضي (Default Route)، وتعني أين سيرسل كل عميل حركة الحزم الافتراضية، على سبيل المثال، منع توجيه حركة الحزم لمناطق أخرى محددّة. اذهب إلى أعلى يمين صفحة شبكات ZeroTier وأضف موجّه جديد بمعاملات التالية، يمكنك إيجاد عنوان IP ZeroTier لخادمك في قسم Members من صفحة إعدادات شبكة ZeroTier، وفي حقل network/bits، أضف 0.0.0.0/0 وفي حقل (LAN)، أدخل عنوان IP خادم ZeroTier. بعد اضافة هذه التفاصيل، اضغط على رمز "+" وسترى ظهور قاعدة جديدة أسفل القاعدة الموجودة، وسترى كرة برتقالية للإعلام بأنه توجيه عمومي. لم يتبقى سوى إعداد العملاء قبل أن يعمل VPN. إعداد عملاء لينكس ملاحظة: الأوامر الموجودة في هذا القسم تطبّق فقط على عملاء لينكس، بالنسبة إلى تعليمات إعداد عملاء ويندوز وmacOS فستجدها في القسم القادم. إذا كان العميل يعمل بنظام لينكس، فستحتاج إلى القيام بتغييرات يدوية في ملف ‎/etc/sysctl.conf . هذه الإعدادات مطلوبة لتغيير معلومات النواة حول مسار العودة المقبول من حركة حزم العميل، وبسبب الطريقة التي أُعدّ به ZeroTier VPN، فحركة الحزم القادمة من خادمك إلى عميلك قد تظهر أنها تأتي من عنوان شبكة مختلف عن الذي أرسلت إليه، وبشكل افتراضي، سترى نواة لينكس أنها غير صالحة وستحذفها، لذلك من الضروري تغيير هذا السلوك. افتح ملف ‎/etc/sysctl.conf على جهاز العميل: sudo nano /etc/sysctl.conf وأضف السطر التالي: . . . net.ipv4.conf.all.rp_filter=2 أغلق الملف بعد حفظه وشغّل الأمر التالي لتطبيق التغييرات: sudo sysctl -p بعد ذلك، اخبر برنامج عميل ZeroTier أن الشبكة مسموح لها بحمل حركة الحزم الافتراضيّة، أي أنه سيعدّل على توجيه العميل، ويجب تفعيلها بشكل يدوي لأن الأمر حساس، سيعرض هذا الأمر هيكل الإعدادات، تأكد من أن allowDefault=1 في الأعلى: sudo zerotier-cli set NetworkID allowDefault=1 إذا أردت في أي وقت ايقاف استخدام ZeroTier كـ VPN مع إبقاء حركة الحزم داخله، أعد قيمة allowDefault إلى 0: sudo zerotier-cli set NetworkID allowDefault=0 في كل مرة تعيد تشغيل جهاز العميل، ستعود قيمة allowDefault=1 إلى 0 فتذكّر إعادة تنفيذها من أجل تفعيل وظيفة VPN. تعمل خدمة ZeroTier بشكل افتراضي عند التشغيل لكل من عميل لينكس والخادم، وإذا لم ترغب بهذا، فيمكنك إيقاف تشغيلها عند اقلاع الحاسوب عن طريق الأمر التالي: sudo systemctl disable zerotier-one إذا أردت استخدام نظام تشغيل آخر على شبكة ZeroTier فأقرأ القسم التالي، وخلاف لذلك انتقل إلى القسم الذي بعده. إعداد عملاء لا يعملون بنظام لينكس لا يقتصر عمل برنامج عميل ZeroTier على نظام لينكس فقط، فيمكن دعم حتى الهواتف الذكية، فالبرنامج متوفّر لأنظمة ويندوز وmacOS وأندرويد وiOS و حتى أنظمة التشغيل المتخصصة كنظام QNAP و Synology و WesternDigital NAS. لضم عملاء يعملون بأنظمة macOS وويندوز إلى الشبكة، شغّل أداة ZeroTier (والتي ثبتها في الخطوة 1) ومن ثم أدخل NetworkID في الحقل قبل أن تضغط على Join. تذكر بأن تعود إلى طرفيّة ZeroTier لاختيار زر Allow لتخويل النظام الجديد إلى شبكتك. تأكد من وضع اشارة على المربع المسمى Route all traffic through ZeroTier، وإذا لم تفعل ذلك، فالعملاء سيرتبطون بشبكة ZeroTier لكن لن يتمكنوا من ارسال حركة حزم الإنترنت عبرها. استخدم أداة للتأكد من عنوان IP مثل ICanHazIP للتأكد من أن الحزم تظهر إلى الإنترنت من خلال عنوان IP الخادم، وللتأكد من ذلك، أضف عنوان URL التالي إلى شريط عنوان متصفحك، وسيظهر لك هذا الموقع عنوان IP الذي يراه الخادم (وبقيّة الانترنت) للوصول إلى الموقع: http://icanhazip.com. وبانتهاء هذه الخطوات، يمكنك بدء استخدام VPN الخاص بك كما تريد، القسم الاختياري التالي سيغطي ميّزة قواعد التدفق (flow rules) الموجودة في ZeroTier SDN، لكنها ليست مطلوبة لعمل وظيفة VPN. الخطوة السادسة - إدارة التدفق (اختياري) واحدة من فوائد الشبكة المعرّفة بالبرمجيات هي التحكم المركزي، فواجهة مستخدم الويب هي المتحكم المركزي لـ ZeroTier والتي تترأس كامل خدمة ZeroTier SDN، ومن هذه الواجهة، يمكن كتابة قواعد تعرف باسم قواعد التدفّق والتي تحدّد ما يمكن لحركة الحزم في الشبكة فعله أو لا، فعلى سبيل المثال، يمكنك حظر منافذ معيّنة في الشبكة، وتقييد الأجهزة التي يمكنها التحدث لبعضها وحتى إعادة توجيه حركة الحزم. هذه القدرة مهمة للغاية ويسري مفعولها بشكل فوري تقريبًا، لأن أي تغييرات على جدول التدفّق ترسل إلى أعضاء الشبكة ويسري مفعولها بعد لحظات. لتعديل قواعد التدفّق، إذهب إلى واجهة مستخدم ويب ZeroTier، واضغط على تبويب Networking، وانزل قليلا إلى الأسفل حتى ترى مربع يسمى Flow Rules (والذي سيتوسع)، ويفتح هذا حقل نصي حيث يمكنك إضافة القواعد التي ترغب بها. ستجد كتيّب كامل مع طرفيّة ZeroTier في المربع الذي أسفل مربع ادخال Flow Rules ويسمى Rules Engine Help. وإليك بعض الأمثلة لقواعد ستساعدك على اكتشاف هذه الوظيفة. لحظر أي حركة حزم ملزمة لخادم DNS جوجل 8.8.8.8، أضف هذه القاعدة: drop ipdest 8.8.8.8/32 ; لإعادة توجيه أي حركة حزم ملزمة لخادم DNS جوجل العامل إلى إحدى عقد ZeroTier، أضف القاعدة التالية، يمكن أن يكون هذا بمثابة اختبارًا ممتازًا لتجاوز عمليات بحث (lookups) DNS: redirect NetworkID ipdest 8.8.8.8/32 ; إذا كان لشبكتك متطلبات حماية خاصة، يمكنك إزالة أي نشاط على منافذ FTP و Telnet و HTTP غير المشفّر عن طريق اضافة هذه القاعدة: drop dport 80,23,21,20 ; عندما تنتهي من إضافة قواعد التدفّق، اضغط على زر Save Changes وسيسجّل ZeroTier التغييرات. خاتمة تعلمّت في هذا الدرس بعض من أساسيات شبكات المعرّفة بالبرمجيات، ووفر لك ZeroTier بعض اللمحات حول فائدة هذه التكنولوجيا وعلى الرغم من تثبيت VPN قد يتعارض مع أدوات أخرى قد استخدمتها في الماضي، لكن سيكون سهولة إضافة عملاء جدد سببًا مقنعًا لاستخدام التكنولوجيا في مكان آخر. لتلخيص الأمر، لقد تعلمت كيفية استخدام ZeroTier كموفّر SDN، بالإضافة إلى إعداد وربط العقد إلى الشبكة، ولقد علمك عنصر VPN كيف يعمل التوجيه وكيف تعمل الشبكة، وسيسمح لك هذا الدرس باستخدام تكنولوجيا التحكم بالتدفّق. والآن بعد أن أضفنا شبكة نقطة-إلى-نقطة، يمكنك جمعها مع تكنولوجيا أخرى مثل مشاركة الملفات، وإذا كان لديك NAS أو خادم ملفات في البيت فيمكنك ربطه بـ ZeroTier واستخدامه. إذا أردت مشاركته مع أصدقائك، فيمكنك أن تفسّر لهم كيف ينضمون إلى شبكة ZeroTier الخاصة بك. ترجمة -وبتصرف- للمقال Getting Started with Software-Defined Networking and Creating a VPN with ZeroTier One لصاحبه Sam Cater
  2. هل تريد الوصول إلى شبكة الإنترنت بشكلٍ آمن ومحمي من هاتفك الذكي أو حاسوبك المحمول عندما تقوم بالاتصال بشبكاتٍ غير موثوقة مثل الشبكات اللاسلكية العمومية لفندق أو مقهى؟ تسمح لك الشبكة الافتراضية الخاصّة (Virtual Private Network - VPN) بتصفّح الإنترنت بالشبكات غير الموثوقة بشكلٍ آمن ومجهول كما لو كنتَ على شبكةٍ آمنة وموثوقة. يتم تمرير تدفّق البيانات (traffic) من خادومك إلى وجهته ومن ثمّ يعود إليك حاملًا البيانات. يسمح لك هذا الإعداد عندما يتم ربطه مع [اتصال HTTPS] (https://en.wikipedia.org/wiki/HTTP_Secure) أن تقوم بتأمين عمليات تسجيل الدخول وعمليات الدفع وغيرها من العمليات التي تقوم بها عند تصفّحك للإنترنت. يمكنك تخطّي الحجب الذي يفرضه مزوّد الخدمة على مواقع معيّنة مثلًا وتخطّي تقييدات المنطقة الجغرافية لمواقع معيّنة، كما يمكنك تحصين موقعك وتدفّق HTTP الصادر من جهازك من الشبكات غير المحمية. OpenVPN هو عبارة عن شبكة افتراضية خاصّة لطبقة حِزَم البيانات الآمنة مفتوحة المصدر (SSL) ويقبل تشكيلةً واسعة من الإعدادات والتخصيصات. في هذا الدرس، سنقوم بإعداد خادوم OpenVPN على خادومنا ومن ثمّ نقوم بإعداده ليقبل الوصول إليه من نظام ويندوز، Mac OS X، iOS و Android. سنبقي خطوات التثبيت والإعداد أسهل ما يمكن في هذا الدرس. المتطلّباتالمتطلّبات الوحيدة اللازمة هي امتلاك خادوم يعمل بتوزيعة Ubuntu 14.04. يجب أن تمتلك الوصول إلى حساب المستخدم الجذر لإكمال هذا الدرس. إضافي: بعد إكمال هذا الدرس، سيكون من الجيد إنشاء حساب مستخدمٍ عادي بصلاحيات sudo لعمل صيانةٍ عامّة على خادومك في حال احتجتها مستقبلًا.الخطوة الأولى: تثبيت وإعداد بيئة خادوم OpenVPNإعداد OpenVPNقبل أن نقوم بتثبيت أيّ حزم، يجب أن نقوم بتحديث قوائم مستودعات توزيعة أوبونتو أولًا: apt-get updateومن ثمّ، يمكننا تثبيت OpenVPN و Easy-RSA: apt-get install openvpn easy-rsaيجب أن يتم استخراج ملفّ عيّنة إعدادات OpenVPN إلى المسار /etc/openvpn لكي نتمكّن من إضافته إلى عملية التثبيت الخاصّة بنا. يمكن القيام بهذا عبر الأمر: gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.confبمجرّد أن يتم استخراجه، افتح ملفّ server.conf في محرر نصوص. في هذا الدرس سنستخدم Vim ولكن يمكنك استخدم أيّ محرر نصوص تريده: vim /etc/openvpn/server.confهناك العديد من التغييرات التي يجب علينا تطبيقها على هذا الملفّ. سترى قسمًا يبدو هكذا: # Diffie hellman parameters. # Generate your own with: # openssl dhparam -out dh1024.pem 1024 # Substitute 2048 for 1024 if you are using # 2048 bit keys. dh dh1024.pemقم بتغيير dh1024.pem إلى: dh2048.pemسيقوم هذا بمضاعفة طول مفتاح RSA المُستخدم عندما يتم إنشاء مفاتيح الخادوم والعميل. ما نزال في ملفّ server.conf، والآن ابحث عن هذا القسم: # If enabled, this directive will configure # all clients to redirect their default # network gateway through the VPN, causing # all IP traffic such as web browsing and # and DNS lookups to go through the VPN # (The OpenVPN server machine may need to NAT # or bridge the TUN/TAP interface to the internet # in order for this to work properly). ;push "redirect-gateway def1 bypass-dhcp"قم بإلغاء تعليق السطر التالي (أزل إشارة # أو ; من قبله): ;push "redirect-gateway def1 bypass-dhcp" لكي يتمكّن خادوم OpenVPN الخاصّ بنا من تمرير التدفّق المطلوب من المستخدمين والعملاء إلى وجهته المطلوبة. يجب أن يبدو السطر هكذا بعد التعديل: push "redirect-gateway def1 bypass-dhcp"الآن ابحث عن هذا القسم: # Certain Windows-specific network settings # can be pushed to clients, such as DNS # or WINS server addresses. CAVEAT: # http://openvpn.net/faq.html#dhcpcaveats # The addresses below refer to the public # DNS servers provided by opendns.com. ;push "dhcp-option DNS 208.67.222.222" ;push "dhcp-option DNS 208.67.220.220"قم بإلغاء تعليق السطرين push "dhcp-option DNS 208.67.222.222" و push "dhcp-option DNS 208.67.220.220" . يجب أن يبدوا على هذا الشكل: push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220"يقوم هذا بإخبار الخادوم بأن يقوم بدفع OpenVPN ليتصل بالعملاء (clients) ليعطيهم عنوان الـDNS المخصص. يقوم هذا الأمر بحماية المستخدم من خروج طلبات DNS خارج اتصال الـVPN. وعلى كلّ حال، من المهم أن تقوم بتحديد عناوين الـDNS المطلوبة التي تريد استخدامها على كلّ جهازٍ من أجهزة العملاء. رغم أنّ OpenVPN يستخدم خدمة OpenDNS افتراضيًا إلّا أنّه يمكنك استخدامه أيّ خدمات DNS تريدها. القسم الأخير الذي يجب تغييره في ملفّ server.conf هو: # You can uncomment this out on # non-Windows systems. ;user nobody ;group nogroupقم بإلغاء تعليق كلٍّ من السطرين user nobody و group nobody. يجب أن يبدوا هكذا: user nobody group nogroupافتراضيًا، يقوم OpenVPN بالعمل باستخدام المستخدم الجذر (root) حيث يمتلك هذا الأخير وصولًا كاملًا إلى النظام. سنقوم عوضًا عن هذا بجعل OpenVPN يستخدم المستخدم nobody والمجموعة nobody. هذا المستخدم لا يمتلك صلاحيات ولا أيّ إمكانياتٍ للولوج، ويتم استخدامه عادةً لتشغيل التطبيقات غير الموثوقة مثل خواديم واجهات الويب. يمكنك الآن حفظ تغييراتك والخروج من VIM. توجيه حِزَم البياناتهذا الأمر هو عبارة عن خاصية sysctl تقوم بإخبار نواة الخادوم أن تقوم بتوجيه التدفّق من أجهزة العملاء إلى الإنترنت. إن لم يتم هذا الأمر، فإنّ التدفّق سيتوقف في الخادوم. يمكنك تفعيل توجيه حِزَم البيانات أثناء وقت التشغيل باستخدام الأمر التالي: echo 1 > /proc/sys/net/ipv4/ip_forwardنحتاج أن نقوم بجعل هذا الأمر دائمًا بحيث يبقى الخادوم يقوم بتوجيه التدفّق حتى بعد إعادة تشغيل الخادوم: vim /etc/sysctl.confفي بداية ملفّ sysctl ستجد: # Uncomment the next line to enable packet forwarding for IPv4 #net.ipv4.ip_forward=1قم بإلغاء تعليق net.ipv4.ip_forward. يجب أن يبدو ذاك السطر هكذا: # Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1احفظ تغييراتك واخرج. الجدار الناري غير المعقّد (ufw)ufw هو واجهة أمامية (front-end) لـiptables. إعداد ufw ليس صعبًا. وهو مُضمّن بشكلٍ افتراضي في Ubuntu 14.04، لذا يجب علين فقط إنشاء بضع قواعد (rules) وتعديل بعض الإعدادات ليعمل، ومن ثمّ سنقوم بتشغيله. للمزيد من المعلومات حول ufw يمكنك مراجعة كيفية إعداد جدارٍ ناري باستخدام UFW على خادوم أوبونتو ودبيان السحابي. أولًا قم بضبط ufw بحيث يسمح باتصال SSH. أدخل اﻷمر التالي: ufw allow sshسنستخدم OpenVPN عبر UDP في هذا الدرس، لذا يجب أن يسمح UFW بتدفّق UDP عبر المنفذ 1194: ufw allow 1194/udpيجب ضبط سياسة التوجيه في UFW كذلك. يمكنك القيام هذا عبر تعديل ملفّ إعدادات UFW الرئيسي: vim /etc/default/ufwابحث عن DEFAULTFORWARDPOLICY="DROP". يجب تغيير محتوى هذا السطر من DROP إلى ACCEPT. يجب أن يبدو السطر هكذا عندما تنتهي منه: DEFAULT_FORWARD_POLICY="ACCEPT"ثمّ سنقوم بإضافة بعض قواعد UFW الإضافية لترجمة عناوين الشبكة وتذكّر عناوين الـIP الخاصّة بالعملاء الحاليين: vim /etc/ufw/before.rulesقم بجعل بداية ملفّ before.rules الخاصّ بك تبدو هكذا كما بالمثال أدناه. القسم بعد START OPENVPN RULES وقبل END OPENVPN RULES هو ما يجب إضافته: # # rules.before # # Rules that should be run before the ufw command line added rules. Custom # rules should be added to one of these chains: # ufw-before-input # ufw-before-output # ufw-before-forward # # START OPENVPN RULES # NAT table rules *nat :POSTROUTING ACCEPT [0:0] # Allow traffic from OpenVPN client to eth0 -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE COMMIT # END OPENVPN RULES # Don't delete these required lines, otherwise there will be errors *filterبعدما تمّ تطبيق هذه التغييرات على UFW، يمكننا الآن تفعيله. أدخل اﻷمر التالي في سطر الأوامر: ufw enableوسيتم طباعة الخرج التالي: Command may disrupt existing ssh connections. Proceed with operation (y|n)?للتحقق من حالة قواعد الجدار الناري طبّق: ufw statusوالخرج يجب أن يكون: Status: active To Action From -- ------ ---- 22 ALLOW Anywhere 1194/udp ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6) 1194/udp (v6) ALLOW Anywhere (v6)الخطوة الثانية: إنشاء استيثاق الشهادات و شهادة موقّعة من الخادوم ومفتاح لهايستخدم OpenVPN الشهادات ليقوم بتشفير التدفّق. إعداد وبناء استيثاق الشهاداتالآن هو وقت إعداد استيثاق الشهادات الخاصّ بنا (Certificate Authority - CA) وإنشاء شهادة ومفتاح لخادوم الـOpenVPN. يدعم OpenVPN الاستيثاق ثنائي الاتجاه (bidirectional authentication) باستخدام الشهادات، مما يعني أنّه يجب على العميل أن يقوم باستيثاق شهادة الخادوم ويجب على الخادوم أن يقوم باستيثاق شهادة العميل قبل أن يتم إنشاء الاتصال المشترك بينهما. سنستخدم سكربتات Easy RSA التي نسخناها مبكّرًا للقيام بهذا. أولًا، انسخ سكربتات Easy RSA إلى مكانها: cp -r /usr/share/easy-rsa/ /etc/openvpnثمّ قم بعمل مجلّد لتخزين المفاتيح: mkdir /etc/openvpn/easy-rsa/keysتمتلك Easy-RSA ملفّ متغيّرات يمكننا تعديله لإنشاء شهاداتٍ خاصّة بشخصنا، شركاتنا أو أيّ شيءٍ آخر نريده. يتم نسخ هذه المعلومات إلى الشهادات والمفاتيح، وستساعد هذه المعلومات على التعرّف على المفاتيح لاحقًا: vim /etc/openvpn/easy-rsa/varsالمتغيّرات بين علامتيّ تنصيص (") يجب أن تقوم بتغييرها بناءً على إعداداتك: export KEY_COUNTRY="US" export KEY_PROVINCE="TX" export KEY_CITY="Dallas" export KEY_ORG="My Company Name" export KEY_EMAIL="sammy@example.com" export KEY_OU="MYOrganizationalUnit"في نفس الملفّ vars، قم أيضًا بتعديل السطر الظاهر أدناه، سنستخدم server كاسم المفتاح. إذا أردت استخدام اسمٍ آخر، فسيجب عليك أيضًا تحديث ملفّات إعدادات OpenVPN التي تقوم بالإشارة إلى server.key و server.crt: export KEY_NAME="server"نحتاج إلى إنشاء مُعامِلات Diffie-Hellman; قد يأخذ هذا الأمر بضع دقائق: openssl dhparam -out /etc/openvpn/dh2048.pem 2048الآن فلنغيّر المسارات بحيث نعمل في المسارات الذي نقلنا سكربتات Easy-RSA إليه من قبل في الخطوة الثانية: cd /etc/openvpn/easy-rsaقم بتحليل ملفّ (PKI (Public Key Infrastructure. انتبه إلى النقطة (.) و المسافة (space) قبل الأمر vars/. حيثُ أنّ هذا الأمر قد يغيّر المسار الحالي كلّيًا (المصدر): . ./varsخرج الأمر أعلاه ظاهرٌ أدناه. بما أننا لم نقم بإنشاء أيّ شيء في مجلّد keys بعد، فإنّ رسالة التحذير ليست شيئًا لنقلق حوله الآن: NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keysالآن سنقوم بتنظيف مسار عملنا الحالي من أيّ ملفّات عيّنة مفاتيح أو مفاتيح قديمة لكي تبقى المفاتيح الجديدة بالمسار فقط: ./clean-allسيبني هذا الأمر الأخير استيثاق الشهادات (CA) عبر استدعاء طرفيّة OpenSSL التفاعلية. سيسألك الخرج أن تقوم بتأكيد اسم المتغيرات الفريدة التي أدخلناها من قبل في ملفّ متغيّرات Easy-RSA (اسم البلد، المنظمة.. إلخ): ./build-caاضغط مفتاح Enter ببساطة لتتنقل عبر كلّ طرفية. إذا كان هناك شيءٌ يجب تغييره، فيمكنك القيام بذلك عبر سطر الأوامر. إنشاء شهادة ومفتاح للخادومما زلنا نعمل من المسار /etc/openvpn/easy-rsa ، الآن قم بإدخال الأمر التالي لبناء مفتاح الخادوم. حيث سترى أنّ server هو قيمة المتغيّر export KEY_NAME الذي أعددناه في ملفّ vars الخاصّ بـEasy-RSA من قبل بالخطوة الثانية: ./build-key-server serverيظهر خرج مشابه كالذي يظهر عندما طبّقنا ./build-ca ، ويمكنك مجددًا الضغط على مفتاح Enter لتأكيد كلّ سطرٍ من الأسماء الفريدة. على كلّ حال، هذه المرّة هناك إدخالان إضافيان: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:يجب أن يتم تركهما كلاهما فارغين، لذا فقط اضغط Enter للمتابعة. هناك سؤالان إضافيان في النهاية، وهما يتطلبان إجابة ( y ) إيجابية فقط: Sign the certificate? [y/n] 1 out of 1 certificate requests certified, commit? [y/n]يجب أن يكتمل السؤال الأخير أعلاه بالتالي: Write out database with 1 new entries Data Base Updatedنقل شهادات الخادوم والمفاتيحيتوقّع OpenVPN أن يرى استيثاق شهادات الخادوم، الشهادات والمفاتيح في /etc/openvpn . فلننسخها إلى الموقع الصحيح: cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key,ca.crt} /etc/openvpnيمكنك التحقق من نجاح العملية عبر: ls /etc/openvpnيجب أن ترى ملفّات الشهادات والمفاتيح الخاصّة بالخادوم. في هذه النقطة، أصبح خادوم OpenVPN جاهزًا للانطلاق. شغّله وتحقق من حالته باستخدام: service openvpn start service openvpn statusيجب أن يقوم أمر التحقق من الحالة بإرجاع الخرج التالي لك: VPN 'server' is runningتهانينا! أصبح خادوم OpenVPN الخاصّ بك عاملًا! إذا كانت رسالة الحالة تقول لك أنّ خادوم الـOpenVPN لا يعمل، فتحقق من ملفّ /var/log/syslog وابحث عن أخطاء مثل: Options error: --key fails with 'server.key': No such file or directoryوالتي تقوم أنّ ملفّ server.key لم يتم نسخه إلى المسار etc/openvpn/ بشكلٍ صحيح، مما يتوجب عليك إعادة نسخه مجددًا. الخطوة الثالثة: إنشاء الشهادات والمفاتيح الخاصّة بالعملاءلقد قمنا بتثبيت وإعداد خادوم OpenVPN، أنشأنا استيثاق الشهادات وشهادة ومفتاح الخادوم. في هذه الخطوة الآن، سنستخدم استيثاق شهادات الخادوم لنقوم بإنشاء الشهادات والمفاتيح الخاصّة بجهاز كلّ عميلٍ سيتصل بالخادوم على حدى. سيتم تثبيت هذه الملفّات لاحقًا إلى أجهزة العملاء كالهواتف الذكية والأجهزة المحمولة. بناء المفاتيح والشهاداتمن المناسب أن يمتلك كلّ عميلٍ يتصل بالخادوم شهادته ومفتاحه الخاصّين به. هذا الأمر مفضّل على إنشاء شهادة واحدة ومفتاح واحد وتوزيعهما على جميع أجهزة العملاء لأغراض تتعلق بالأمان. ملاحظة: افتراضيًا، لا يسمح OpenVPN بالاتصالات المتزامنة بنفس الوقت إلى الخادوم من أكثر من جهازٍ عميل باستخدام نفس الشهادة والمفتاح (انظر duplicate-cn في etc/openvpn/server.conf/). لإنشاء شهادات استيثاق منفصلة لكلّ جهاز عميل تنوي السماح له بالاتصال بخادوم الـOpenVPN، يجب عليك إكمال هذه الخطوة لكلّ جهاز، ولكن يمكنك تغيير الاسم client1 أدناه إلى شيءٍ مختلف مثل client2 أو iphone2. بفضل استخدام شهادةٍ منفصلة لكلّ جهاز عميل، يمكن لاحقًا منعهم بشكلٍ منفصل من الوصول إلى الخادوم إذا ما تمّ الاحتياج لذلك. سنستخدم client1 في الأمثلة الموجودة في هذا الدرس كاسم الجهاز العميل. كما فعلنا مع مفتاح الخادوم، فسنقوم الآن ببناء واحد لمثال client1. يجب أن تكون ما زلت تعمل في /etc/openvpn/easy-rsa: ./build-key client1مجددًا، سيتم سؤالك عمّا إذا كنتَ تريد تغيير أو تأكيد متغيّرات الأسماء الفريدة والحقول الإضافية التي تركناها فارغة من قبل. اضغط Enter لاختيار الخيارات الافتراضية: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:وكما في السابق، سيسألك مرتين عن تأكيد بعض الخيارات، اكتب y: Sign the certificate? [y/n] 1 out of 1 certificate requests certified, commit? [y/n]إذا نجحت عملية بناء المفتاح فسيظهر التالي: Write out database with 1 new entries Data Base Updatedيجب على ملفّ عيّنة إعدادات العميل أن يتم نسخه إلى مجلّد Easy-RSA أيضًا. سنستخدمه كقالب يمكن تحميله إلى أجهزة العملاء ليتم تعديله. أثناء عملية النسخ، سنقوم بتغيير اسم ملفّ العيّنة من client.conf إلى client.ovpn لأنّ امتداد ملفّ .ovpn هو ما تتوقع أجهزة العملاء أن تراه باسم الملفّ وليس .conf: cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/easy-rsa/keys/client.ovpnيمكنك تكرار هذا القسم مجددًا لكلّ عميلٍ تريد السماح له بالوصول، ولا تنسى استبدال client1 باسم الجهاز الجديد. نقل الشهادات والمفاتيح إلى أجهزة العميلخلاصة ما طبقّناه أعلاه هو أننا أنشأنا شهادات ومفاتيح العملاء، وأننا قمنا بتخزينها على خادوم OpenVPN في المسار /etc/openvpn/easy-rsa/keys . نحتاج القيام بنقل شهادة العميل، المفتاح وقالب الملفّ الشخصي لكلّ عميلٍ نريد السماح له بالوصول إلى مجلّد محلّي على جهاز الحاسوب الخاصّ بنا أو أيّ جهاز عميل آخر. في هذا المثال، يتطلّب جهاز العميل client1 الشهادات والمفاتيح الخاصّة به والموجودة في المسارات: * /etc/openvpn/easy-rsa/keys/client1.crt * /etc/openvpn/easy-rsa/keys/client1.keyتكون ملفّات ca.crt و client.ovpn هي نفسها لجميع أجهزة العملاء مهما اختلفت. قمّ بتحميل هذه الملفّات أيضًا; لاحظ أنّ ملف ca.crt هو في مسارٍ مختلف عن الملفّات الأخرى: etc/openvpn/easy-rsa/keys/client.ovpn/etc/openvpn/ca.crt/بينما ستعتمد التطبيقات المُستخدمة لإكمال هذه المهمّة على اختيارك ونوع نظام التشغيل الخاصّ بك، فإنّك بحاجة إلى تطبيق يستخدم STFP (بروتوكول نقل الملفّات عبر SSH) أو SCP (النسخ الآمن) للوصول إلى الملفّات الموجودة في خلفية الخادوم. سينقل هذا ملفّات الاستيثاق الخاصّة بخادومك عبر اتصالٍ مشفّر. إليك مثالًا لأمر SCP باستخدام مثالنا من client1. إنّه يقوم بوضع الملفّ client1.key إلى المجلّد Downloads الموجود على حاسوبنا المحلّي: scp root@your-server-ip:/etc/openvpn/easy-rsa/keys/client1.key Downloads/إليك بضع أدوات ودروس يمكنك استخدامها لنقل الملفّات بشكلٍ آمن من الخادوم إلى الحاسوب المحلّي: WinSCPكيفية استخدام SFTP لنقل الملفّات بشكلٍ آمن من خادومٍ بعيد.كيفية استخدام FileZilla لنقل وإدارة الملفّات بشكلٍ آمن.في نهاية هذا القسم، تأكّد أنّ هذه الملفّات الأربعة أصبحت موجودة على جهاز المحلّي مهما كان نوعه: client1.crtclient1.keyclient.ovpnca.crtالخطوة الرابعة: إنشاء ملفٍّ شخصيٍ موحّد لجهاز العميلهناك العديد من الطرق المُستخدمة لإدارة ملفّات العملاء ولكن أسهلها يستخدم ملفّا شخصيًا موحّدًا. يتم إنشاء هذا الملفّ عبر تعديل قالب ملفّ client.ovpn ليتضمّن استيثاق شهادات الخادوم، شهادة العميل والمفتاح الخاصّ به. بمجرّد إضافته، فسيجب حينها فقط استيراد ملفّ client.ovpn إلى تطبيقات OpenVPN على أجهزة العميل. سنقوم بإنشاء ملفٍّ شخصيٍ وحيد لجهازنا المدعو client1 على الحاسوب المحلّي الذي قمنا بتحميل جميع الملفّات إليه. يمكن لهذا الحاسوب المحلّي بنفسه أن يكون جهازًا عميلًا أو مجرّد منطقة عمل مؤقّتة لدمج ملفّات الاستيثاق. يجب أن يتم نسخ قالب ملفّ client.ovpn وإعادة تسميته. كيفية قيامك بهذا الأمر ستعتمد على نظام التشغيل الخاصّة بجهازك المحلّي. ملاحظة: لا يجب على اسم ملفّ client.ovpn الخاصّ بك المنسوخ الجديد أن يكون مطابقًا لاسم جهاز العميل. تطبيق العميل لـOpenVPN سيستخدم اسم الملفّ كمُعرّف لاتصال VPN نفسه، حيث يجب عليك نسخ ملفّ client.ovpn إلى أيّ اسمٍ جديد تريد استخدامه على نظام التشغيل الخاصّ بك. كمثال: work.ovpn سيتم التعرّف عليه كـwork و school.ovpn سيتم التعرّف عليه كـschool. في هذا الدرس، سنقوم بتسمية اتصال VPN كـ HsoubAcademy ولذلك فسيكون اسم الملفّ هو HsoubAcademy.ovpn من الآن فصاعدًا. بمجرّد تسمية الملفّ الجديد المنسوخ، يجب علينا حينها فتح ملفّ HsoubAcademy.ovpn في محرر نصوص. أول نقطة سيقع عليها انتباهك هي مكان عنوان الـIP الخاصّ بخادومك. بالقرب من بداية الملفّ، قم بتغيير my-server-1 إلى عنوان IP الخاصّ بخادومك: # The hostname/IP and port of the server. # You can have multiple remote entries # to load balance between the servers. remote my-server-1 1194الآن، ابحث عن القسم الظاهر أدناه وقم بإلغاء تعليق user nobody و group nobody، كما فعلنا مع ملفّ server.conf في الخطوة الأولى. ملاحظة: هذا لا ينطبق على ويندوز لذا يمكنك تجاوزه. يجب أن يبدو هكذا عندما تنتهي: # Downgrade privileges after initialization (non-Windows only) user nobody group nogroupالقسم الظاهر أدناه يحتاج أن نقوم فيه بتعليق السطور الثلاثة الأخيرة لكي نتمكّن من تضمين الشهادة والمفتاح مباشرةً في ملفّ HsoubAcademy.ovpn، يجب أن يبدو هكذا: # SSL/TLS parms. # . . . #ca ca.crt #cert client.crt #key client.keyلدمج الملفّات المنفصلة إلى ملفٍّ شخصي واحدٍ موحّد، يجب أن يتم وضع محتويات الملفّات ca.crt, client1.crt, و client1.key مباشرةً في ملفّ .ovpn باستخدام هيكلة XML. يجب بالنهاية أن يبدو شكلها كالتالي: <ca> (أدخل محتويات ca.crt هنا) </ca> <cert> (أدخل محتويات client1.crt هنا) </cert> <key> (أدخل محتويات client1.key هنا) </key>عندما تنتهي، يجب أن تبدو نهاية الملفّ كالتالي: <ca> -----BEGIN CERTIFICATE----- . . . -----END CERTIFICATE----- </ca> <cert> Certificate: . . . -----END CERTIFICATE----- . . . -----END CERTIFICATE----- </cert> <key> -----BEGIN PRIVATE KEY----- . . . -----END PRIVATE KEY----- </key>يمتلك ملفّ client1.crt معلوماتٍ إضافية في داخله; لا بأس بتضمين الملفّ بأكمله. احفظ التغييرات واخرج. أصبح لدينا الآن ملفّ واحد موحّد لضبط جهازنا المحلّي client1. الخطوة الخامسة: تثبيت ملفّ العميلالآن سنناقش تثبيت ملفّ VPN على Windows, OS X, iOS, و Android. لا يعتمد أيٌّ من إرشادات هذه الأنظمة على الآخر لذا يمكنك التجاوز إلى الذي يطابق نظامك التشغيلي الحالي فقط. تذكّر أنّ الاتصال سيتم تسميته بحساب اسم ملفّ .ovpn الذي استخدمته. في مثالنا قمنا بتسمية الملفّ كـ HsoubAcademy.ovpn ولذلك سيكون اسم الاتصال هو HsoubAcademy. Windowsالتثبيتيمكن العثور على تطبيق عميل OpenVPN لنظام ويندوز من صفحة التحميلات الخاصّة بـOpenVPN. اختر المُثبّت المناسب لإصدارك من ويندوز. ملاحظة: يتطلّب OpenVPN الصلاحيات الإدارية ليتم تثبيته. بعد تثبيته، انسخ الملفّ HsoubAcademy.ovpn إلى: C:\Program Files\OpenVPN\configعندما تقوم بتشغيل OpenVPN، فسيقوم تلقائيًا برؤية الملفّ وجعله متاحًا. يجب أن يتم تشغيل OpenVPN بصلاحيات المسؤول في كلّ مرّة يتم تشغيله، حتى ولو كان يتم تشغيله على حسابات المستخدمين. لفعل هذا دون الحاجة إلى الضغط على زرّ الفأرة الأيمن واختيار التشغيل كمسؤول في كلّ مرّة تقوم باستعمال الـVPN، يمكنك ضبط هذا الأمر ولكنك ستحتاج إلى القيام به من حساب بصلاحياتٍ إدارية. هذا يعني أيضًا أنّه سيجب على المستخدمين إدخال كلمة مرور المستخدم المدير لاستخدام OpenVPN. على الناحية الأخرى، لن يتمكن المستخدمون من استخدام OpenVPN بشكلٍ صحيح دون أن يتم تشغيله على جهاز العميل بصلاحياتٍ إدارية، لذا فإنّ الصلاحيات الإدارة مطلوبة. لجعل تطبيق OpenVPN يتم تشغيله دومًا كمدير، اضغط بزرّ الفأرة الأيمن على أيقونة الاختصار الخاصّة به واذهب إلى خصائص. في نهاية لسان التوافقية، اضغط على الزرّ لتغيير الإعدادات لجميع المستخدمين. في النافذة الجديدة، اختر تشغيل هذا البرنامج كمدير. الاتصالفي كلّ مرّة تقوم بتشغيل واجهة OpenVPN الرسومية، سيسألك ويندوز عمّا إذا كنتَ تريد السماح للبرنامج بتطبيق التغييرات على نظامك. اضغط على موافق. تشغيل تطبيق عميل OpenVPN سيقوم فقط بوضع الأيقونة في تنبيهات النظام ويمكن الاتصال أو قطع الاتصال بخادوم OpenVPN عند الحاجة; وهو لا يقوم حقيقةً بالاتصال بـ VPN. بمجرّد بدء OpenVPN، قم بإنشاء اتصال عبر الذهاب إلى تنبيهات النظام والضغط بزرّ الفأرة الأيمن على أيقونة OpenVPN. هذا سيفتح لك قائمةً فرعية. اختر HsoubAcademy من أعلى القائمة (والذي هو عبارة عن HsoubAcademy.ovpn) واختر اتصال. سيتم فتح نافذة حالة جديدة تعرض لك الخرج أثناء تأسيس الاتصال، وسيتم طباعة رسالة بمجرّد اكتمال العملية. يمكنك إلغاء الاتصال من VPN بنفس الطريقة: اذهب إلى تنبيهات النظام وانقر بزرّ الفأرة الأيمن على أيقونة OpenVPN واختر قطع الاتصال. OS XالتثبيتTunnelblick هو تطبيق عميل OpenVPN مجاني ومفتوح المصدر لنظام MAC OS X. يمكنك تحميله من صفحة تحميلات Tunnelblick. انقر نقرتين على ملفّ .dmg المحمّل وتابع إرشادات التثبيت. إلى نهاية عملية التثبيت، سيسألك Tunnelblick عمّا إذا كنتَ تمتلك أيّ ملفّات إعدادات. الأسهل حاليًا هو اختيار لا وترك Tunnelblick ليتابع التثبيت. ابحث نافذة Finder وانقر على ملفّ HsoubAcademy.ovpn وسيتم تشغيل Tunnelblick باستخدام ذلك الملفّ، الصلاحيات الإدارية مطلوبة. الاتصالشغّل Tunnelblick عبر النقر مرّتين على مجلّد أيقونة التطبيقات. بمجرّد تشغيل Tunnelblick، سيكون هناك أيقونة Tunnelblick على شريط القائمة في أعلى يمين الشاشة للتحكّم بالاتصالات. اضغط على الأيقونة ومن ثمّ عنصر قائمة اتصال لبدء اتصالٍ جديد واختر HsoubAcademy. iOSالتثبيتمن متجر تطبيقات iTunes، ابحث وثبّت تطبيق OpenVPN Connect، والذي هو تطبيق عميل OpenVPN الرسمي لـiOS. لنقل ملفّ .ovpn الخاصّ بك إلى هاتفك، قم بتوصيله مباشرةً إلى حاسوب. إكمال النقل مع iTunes سيكون خارجيًا هنا. افتح iTunes من على الحاسوب واضغط على iPhone > apps. انتقل إلى الأسفل إلى قسم مشاركة الملفّات وانقر على تطبيق OpenVPN. النافذة الموجودة على اليمين، OpenVPN Documents هي لمشاركة الملفّات. اسحب ملفّ .ovpn وأفلته إلى النافذة أدناه. الآن شغّل تطبيق OpenVPN على iPhone. سيكون هناك إشعار أنّه هناك ملفّ جديد ليتم استيراده. انقر على إشارة الزائد الخضراء ليتمّ ذلك: الاتصالأصبح OpenVPN الآن جاهزًا للاستخدام مع الملفّ الجديد. ابدأ الاتصال عبر النقر على زرّ Connect وجعله On. ويمكنك قطع الاتصال عبر جعله Off. ملاحظة: لا يمكن استخدام محوّل VPN الموجود تحت الإعدادات للاتصال بـVPN. إذا حاولت، فسيصلك إشعار باستخدام تطبيق OpenVPN فقط. Androidالتثبيتافتح متجر Google Play. ابحث عن تطبيق Android OpenVPN Connect وثبّته، إنّه تطبيق OpenVPN الرسمي لأندرويد. يمكن نقل ملفّ .ovpn إلى الهاتف عبر إيصال جهاز الأندرويد الخاصّ بك إلى الحاسوب عبر USB ونقل الملفّ. بشكلٍ مغاير، إذا كنتَ تمتلك قارئ بطاقات SD، فيمكنك إزالة بطاقة SD من الجهاز، نسخ الملفّ إليها ومن ثمّ إدراجها مجددًا إلى جهاز الأندرويد. ابدأ تطبيق OpenVPN وانقر على القائمة للاستيراد: ثمّ تنقّل إلى موقع الملفّ المحفوظ (لقطة الشاشة تستخدم /sdcard/Download/) واختر الملفّ. وسيقوم التطبيق بإخبارك أنّ الملفّ تمّ استيراده: الاتصالللاتصال، قم ببساطة بالضغط على زرّ الاتصال الموجود أمامك. سيتم سؤالك عمّا إذا كنتَ تثق بالتطبيق، اضغط على موافق وتابع. لإلغاء الاتصال، انقر على زرّ قطع الاتصال بالتطبيق. الخطوة السادسة: اختبار اتصالك بـ VPNبمجرّد تثبيت كلّ شيء، يمكن لفحصٍ سريع أن يؤكّد لك أنّك تستعمل VPN الآن أو لا. أولًا قبل استخدام أيّ VPN، اذهب إلى موقع DNSLeakTest. سيعطيك الموقع عنوان الـIP الخاصّ بك عبر مزوّد الإنترنت لديك وستظهر أنت كما تبدو لبقية العالم. للتحقق من إعدادات DNS الخاصّ بك عبر نفس الموقع، انقر على Extended Test وسيخبرك عن خواديم DNS التي تستعملها. الآن، قم بالاتصال بخادوم OpenVPN الموجود على خادومك وحدّث الصفحة. وشاهد عنوان الـIP الجديد المختلف كليًا عن السابق. هذا سيكون هو عنوان الـIP الظاهر للعالم عند تصفّحك لمواقعهم. مجددًا، انقر على Extended Test وسيخبرك عن خواديم DNS التي تستعملها وسيؤكد لك أنّك تستخدم الآن خواديم الـDNS المُعدّة من قبل OpenVPN. تهانينا! يمكنك الآن التنقّل بأمان في الإنترنت وحماية خصوصيتك، موقعك وبياناتك من المراقبة والمُخترقين. ترجمة -وبتصرّف- للمقال: How To Set Up an OpenVPN Server on Ubuntu 14.04.
  3. تتوفّر على توزيعات لينكس برامج تحظُر إنشاء كلمات سر يسهُل تخمينها؛ فالوصول إلى الكثير من بيانات المستخدم وبرامجه يتطلّب تجاوز مرحلة إدخال كلمة السرّ ، الأمر الذي يجعل من كلمات السر نقطة حرجة في سبيل تأمين النظام والمستخدم على حدّ السواء ويجب بالتالي الحرص دائما على أن تكون محدَّثة. توجد الكثير من طرق تعمية البيانات ولكلّ منها خصوصيّاته. تستخدم أغلب توزيعات لينكس خوارزميّة تعمية تُسمّى معيار تعميّة البيانات Data Encryption Standard, DES لتعميّة كلمات السّر. تُخزّن كلمات السرّ المعمّاة في ملف etc/passwd/ أو etc/shadow/. عندما يحاول المستخدم الولوج إلى النظام فإن كلمة السّر التي يُدخِلها تُعمَّى ثم تقارن بحقل كلمة السّر المعمّاة في الملف، فإن حصل تطابق فهذا يعني أنها نفس كلمة السّر وبالتالي يُسمح له بالولوج. تستخدم أغلب توزيعات لينكس نسخة من DES لا تعمل إلا في اتجاه واحد؛ بمعنى أنه يمكن استخدامها لتعميّة كلمة سر ولكن لا يمكن استخدامها لفك تعميّة كلمات السر في ملفّي etc/passwd/ وetc/shadow/. يمكن لبرامج هجمات القوة العمياء Brute force attacks مثل John the Ripper وCrack تخمين كلمات السر التي لا تحترم حدًّا أدنى من العشوائية؛ وبإمكان مديري النّظم استخدامها لصالحهم في طريقة استباقية بتنفيذها على كلمات سرّ مستخدميهم للعثور على كلمات السّر غير الآمنة ثم الطلب من هؤلاء تغييرها إلى أخرى آمَن. التعمية بالمفاتيح العمومية تستخدم التعمية بالمفاتيح العمومية Public-Key Cryptography مفتاحا (سلسلة محارف) للتعمية وآخر لفكّها، على عكس طرق تعمية أخرى تستخدم نفس المفتاح للمهمتيْن. يهدف استخدام مفتاح خاصّ للتعميّة (المفتاح العموميّ) وآخر لفكّها (المفتاح الخصوصيّ) إلى تجاوز ضرورة تأمين نقل المفتاح الوحيد أثناء تبادل الرسائل المعمّاة. يتوفّر المفتاح العمومي لكلّ شخص للجميع دون استثناء بينما يقى المفتاح الخصوصي سرًّا خاصًّا به. مثلا، عندما يريد محمّد إرسال بريد معمّى إلى عمر فإنه يستخدم المفتاح العموميّ لعمر لتعمية البريد، عند وصول البريد إلى عمر فإنه يستخدم مفتاحه الخصوصي الذي لا يعرفه غيره لفك تعميّة الرسالة والاطّلاع عليها. بهذه الطريقة لن يعرف فحوى الرسالة غيرهما، محمّد لأنه كتب الأصل غير المعمَّى، وعمر لأنه الوحيد الذي يمكنه فك تعميتها. برنامج PGP يتبنّى برنامج PGP (اختصار لـ Pretty Good Privacy) مبدأ التعمية بالمفاتيح العمومية ويمكن استخدامه لتوقيع البيانات وتعميّتها: التوقيع للتأكد من المصدر والحؤول دون انتحال الشخصيّة، والتعمية للحفاظ على خصوصية البيانات. يجب الانتباه قبل استخدام البرنامج إلى التقييدات القانونية في استخدامه. يُحظَر في بعض الدوّل توجيه رسائل بتعميّة قويّة إلى خارج البلد. بروتوكول TLS يُستخدَم بروتوكول TLS (والإصدار السابق منه SSL) كثيرا لتأمين الاتصالات في شبكة حواسيب. يهدف البروتوكول إلى الحفاظ على خصوصية البيانات المنقولة عبر الاتصال بتعميتها، الاستيثاق من هويّات المتخاطبين باستخدام تعمية بالمفاتيح العمومية والتأكد من سلامة البيانات عن طريق جمع تحقق Checksum لكلّ حزمة بيانات. التنفيذ الأكثر شهرة على أنظمة لينكس لهذا المعيار هو مكتبة OpenSSL التي تدعم خوارزميات تعمية من بينها DES، Blowfish وIDEA. بروتوكول HTTPS وهو تطوير لبروتوكول HTTP بتضمينه داخل اتّصال يؤمّنه بروتوكول TLS (أو SSL). الأغراض الأساسية من استخدام HTTPS على مواقع الويب هي الاستيثاق، حماية الخصوصية والتحقق من سلامة البيانات المتبادلة. بروتوكول S/MIME يأتي الاسم اختصارا لـ Secure Multipurpose Internet Mail Extension (امتداد البريد الإلكتروني الآمن متعدّد الأغراض)، وهو معيار مفتوح يعتمد على التعميّة بالمفاتيح العمومية لتأمين البريد الإلكتروني وغيره من أنواع المراسلات على الشبكة. الشبكات الخاصة الافتراضية Virtual Private Network توجد تنفيذات عدّة لمعيار بروتوكول الإنترنت الآمن على لينكس. معيار IPSEC (اختصار لـ Internet Protocol Security؛ أمان بروتوكول الإنترنت) هو مجهود تقف خلفه قوة مهمات هندسة الإنتنرت IETF ويهدف إلى إنشاء اتصالات معمّاة على مستوى الشبكة (الطبقة الثالثة) وتوفير سبُل للتحقق من سلامة البيانات، التحكم في الوصول، الاستيثاق والسريّة. من الأمثلة على تطبيقات هذا البروتوكول في لينكس LibreSwan الذي يسمح للمستخدم ببناء نفق اتصالات آمن عبر شبكات غير موثوقة. يُعمَّى كل ما يمر إلى الشبكة غير الموثوقة قبل إرساله ليعمل الطرف الآخر عند استلامه على فك التعمية، تنتُج عن هذه العملية شبكة خاصّة افتراضية Virtual Private Network, VPN والتي هي شبكة اتصالات خاصّة على الرغم من أن الأجهزة فيها تتصل عن طريق شبكة غير موثوقة. لا تقتصر طُرُق إنشاء شبكات خاصة افتراضية في لينكس على IPSEC، بل توجد برامج خاصّة لهذا الغرض مثل OpenVPN التي تستخدم كثيرا مكتبات OpenSSL. بروتوكول SSH توجد عدّة حزم برمجية على لينكس لاستخدام SSH أبرزها OpenSSH. صُمِّم بروتوكول SSH ليحلّ مكان بروتوكولات الاتصال عن بعد غير الآمنة مثل rlogin، rsh وrexecالتي كانت ترسل البيانات دون احتياطات أمنية تُذكر. تعتمد حزمة برامج OpenSSH على التعمية بالمفاتيح العمومية لتعميّة الاتصالات بين مضيفين Hosts، وللاستيثاق من المستخدمين. كما يمكن استخدامها للولوج إلى خادوم بعيد أو لنسخ البيانات بين مضيفين مع الحماية من هجمات رجل في الوسط Man in the middle وهجمات أخرى. وحدات الاستيثاق سريعة التفعيل Pluggable Authentication Modules تأتي الإصدارات الحديثة من توزيعات لينكس محمّلة بآلية استيثاق موحدة تُسمّى Pluggable Authentication Modules, PAM تسمح للتطبيقات التي تعمل في فضاء المستخدم بتغيير متطلبات الاستيثاق الخاصّة بها وطريقته حسب الحاجة. يمكن باستخدام هذه الآلية من بين أمور أخرى: تحديد أمكنة وأوقات معيّنة لمستخدمين لا يمكنهم الولوج خارجها إلى النظام. تعيين سقف لاستخدام الموارد لكل مستخدِم. استعمال خوارزميات تعميّة أخرى غير DES لجعل فك التعمية بهجمات القوة العمياء أصعب. تفعيل كلمات السّر في ملف shadow حسب الحاجة. ملف Shadow لتأمين كلمات سر المستخدمين تستخدم الإصدارات الحديثة من توزيعات لينكس ملف etc/shadow/ لجعل كلمات سر المستخدم المعمّاة في مأمن من بقية المستخدمين على نفس النظام. كانت كلمات السر المعمّاة تخزّن في الإصدارات القديمة داخل ملف etc/passwd/ مبدئيا، ويمكن لجميع المستخدمين رؤيتها وبالتالي تنفيذ هجمات القوة العمياء عليها لمحاولة فك تعميتها. يعني اللجوء إلى ملف etc/shadow/ أن المستخدمين الإداريين فقط هم من يمكنهم رؤية كلمات السّر المعمّاة. التأكد من أمان كلمات مرور المستخدمين يحتاج مدير النظام أحيانا إلى التأكد من أن كلمات مرور المستخدمين جيّدة كفاية، لكي لا تكون بابا قد يؤدي فتحه إلى مشاكل أمنية أخرى، تُستخدم برامج مثل Jone the Ripper وCrack لهذا الغرض. تقوم فكرة هذه البرامج على توليد كلمات مرور معمّاة إما حسب نمط معرَّف مسبقا أو بالاعتماد على قاموس ألفاظ ثم مقارنتها بكلمات المرور المعمّاة الخاصّة بالمستخدمين، فإن وُجد تطابق عُرِفت كلمة السر. الجدير بالذكر أن مثل هذه البرامج تأخذ الكثير من الوقت وموارد الجهاز للعمل؛ وكلما كانت كلمات السّر معقدة كل ما كانت المهمة أصعب. في سيناريو هجمة حقيقية سيحتاج المخترق أولا إلى الحصول على ملف كلمات سر المستخدمين وهو أمر يحتاج لثغرات أمنية قد لا تكون موجودة؛ إلا أن الحيطة واجبة على الدوام. ترجمة - وبتصرّف - لمقال Encryption Methods in Linux لصاحبه M.el Khamlichi. حقوق الصورة البارزة: Designed by Freepik.
  4. تطرّقنا في الدّرس السّابق إلى ضبط بسيط جدًا لـ VPN، يمكن للعميل الوصول إلى الخدمات على خادوم VPN عبر نفق مشفَّر؛ إذا أردت الوصول إلى المزيد من الخواديم أو أي شيء آخر على الشبكات الأخرى، فأعطِ العملاء بعض تعليمات التوجيه؛ على سبيل المثال، لو كان بالإمكان تلخيص شبكة شركتك بالنطاق 192.168.0.0/16؛ فيمكنك إعطاء هذا التوجيه إلى العملاء، لكن عليك أيضًا تغيير التوجيه لطريقة العودة، أي أن خادومك عليه أن يعرف طريقة العودة إلى شبكة عميل VPN. أو ربما تريد أن تعطي البوابة الافتراضية إلى جميع عملائك وترسل جميع البيانات الشبكية إلى بوابة VPN أولًا، ومن هناك إلى الجدار الناري للشركة ثم إلى الإنترنت؛ يوضح لك هذا القسم بعض الخيارات المتاحة أمامك. ضبط VPN موجه على الخادوم سيسمح إعطاء التوجيهات للعميل له بالوصول إلى شبكات فرعية أخرى خلف الخادوم؛ تذكر أن هذه الشبكات الفرعية يجب أن تعرف أن عليها إعادة توجيه الرزم التابعة لنطاق عناوين عميل OpenVPN ‏(10.8.0.0/24) إلى خادوم OpenVPN. push "route 10.0.0.0 255.0.0.0" ستضبط التعليمة السابقة جميع العملاء كي يعيدوا توجيه بوابة الشبكة الافتراضية عبر VPN، مما يؤدي إلى مرور جميع بيانات الشبكة كتصفح الويب أو طلبات DNS عبر VPN (خادوم OpenVPN أو الجدار الناري المركزي عندك الذي يحتاج إلى تمرير بطاقة TUN/TAP إلى الإنترنت لكي يعمل ذلك عملًا صحيحًا). اضبط نمط الخادوم ووفر شبكة VPN فرعية لكي يسحب OpenVPN عناوين العملاء منها؛ سيأخذ الخادوم العنوان 10.8.0.1 لنفسه، والبقية ستتوفر للعملاء؛ وكل عميل سيقدر على الوصول إلى الخادوم عبر 10.8.0.1. ضع تعليقًا قبل هذا السطر إذا كنت تستخدم جسر إيثرنت (ethernet bridging): server 10.8.0.0 255.255.255.0 حافظ على سجل لارتباطات عناوين IP للعملاء في هذا الملف؛ إذا توقف OpenVPN عن العمل أو أعيد تشغيله، فإن العملاء الذي سيعيدون إنشاء الاتصال سيُسنَد لهم نفس عنوان IP المُسنَد لهم سابقًا. ifconfig-pool-persist ipp.txt أضف خواديم DNS إلى العميل: push "dhcp-option DNS 10.0.0.2" push "dhcp-option DNS 10.1.0.2" اسمح بالتواصل من العميل إلى العميل: client-to-client تفعيل الضغط على خط VPN: comp-lzo تؤدي التعليمة keepalive بإرسال شبيهة برسائل ping مرارًا وتكرارًا عبر الخط الذي يصل بين الجانبين، لذلك سيعلم كل جانب متى ينقطع الاتصال عن الجانب الآخر؛ السطر الآتي سيرسل ping كل 1 ثانية، بافتراض أن الند البعيد سيكون متوقفًا إذا لم يَرِد رد على الرسالة خلال مدة 3 ثواني: keepalive 1 3 فكرةٌ جيدةٌ هي تقليص امتيازات عفريت OpenVPN بعد التهيئة: user nobody group nogroup يتضمن OpenVPN 2.0 خاصية تسمح لخادوم OpenVPN بالحصول الآمن على اسم مستخدم وكلمة مرور من العميل المتصل، ويستخدم هذه المعلومات كأساس للاستيثاق بالعميل؛ لاستخدام طريقة الاستيثاق هذه، أولًا أضف تعليمة auth-user-pass إلى ضبط العميل؛ التي ستوجه عميل OpenVPN لطلب اسم مستخدم وكلمة مرور، وتمريرها إلى الخادوم عبر قناة TLS آمنة. # client config! auth-user-pass هذا سيخبر خادوم OpenVPN أن يتحقق من اسم المستخدم وكلمة المرور المُدخَلة من العملاء باستخدام واحدة PAM لتسجيل الدخول؛ وهذا يفيد في حالة كان عندك آلية مركزية للاستيثاق مثل Kerberos. plugin /usr/lib/openvpn/openvpn-auth-pam.so login ضبط متقدم لخدمة VPN جسرية على الخادوم يمكن إعداد OpenVPN لكي يعمل بنمط VPN جسري (bridged VPN) أو موجَّه (routed VPN)؛ أحيانًا يُشار لذلك بخدمة VPN تعمل بالطبقة الثانية أو الثالثة من OSI؛ في VPN جسري، جميع الإطارات (frames) الشبكية تكون من الطبقة الثانية (layer-2)، أي جميع إطارات إيثرنت تُرسَل إلى شركاء VPN‏ (VPN partners)؛ بينما تُرسَل الرزم الشبكية من الطبقة الثالثة فقط إلى شركاء VPN‏ (VPN Partners)؛ في النمط الجسري، ستُرسَل جميع البيانات الشبكية بما التي تكون شبيهة بشبكة LAN مثل طلبات DHCP، و طلبات ARP ...إلخ إلى شركاء VPN، لكن في النمط الموجه، سيتم تجاهل تلك الرزم. تحضير ضبط بطاقة شبكية لإنشاء جسر على الخادوم تأكد من أن لديك الحزمة bridge-utils: sudo apt-get install bridge-utils قبل أن تضبط OpenVPN في النمط الجسري، عليك تغيير ضبط بطاقات الشبكة؛ لنفترض أن لدى خادومك بطاقة اسمها eth0 موصولة إلى الإنترنت، وبطاقة باسم eth1 موصولة إلى شبكة LAN التي تريد إنشاء جسر لها؛ سيبدو ملف ‎/etc/network/interfaces كما يلي: auto eth0 iface eth0 inet static address 1.2.3.4 netmask 255.255.255.248 default 1.2.3.1 auto eth1 iface eth1 inet static address 10.0.0.4 netmask 255.255.255.0 هذا ضبط بسيط للبطاقة ويجب أن يُعدَّل لكي يغيَّر إلى النمط الجسري حيث تتحول البطاقة eth1 إلى بطاقة br0 الجديدة؛ بالإضافة إلى أننا ضبطنا br0 لتكون البطاقة الجسرية للبطاقة eth1؛ علينا التأكد أن البطاقة eth1 دومًا في نمط تمرير الحزم: auto eth0 iface eth0 inet static address 1.2.3.4 netmask 255.255.255.248 default 1.2.3.1 auto eth1 iface eth1 inet manual up ip link set $IFACE up promisc on auto br0 iface br0 inet static address 10.0.0.4 netmask 255.255.255.0 bridge_ports eth1 يجب أن تشغِّل الآن تلك البطاقة؛ تحضَّر لأن هذا قد لا يعمل كما هو متوقع، وستفقد التحكم عن بعد؛ تأكد أنك تستطيع حل المشاكل بالوصول إلى الجهاز محليًا. sudo ifdown eth1 && sudo ifup -a إعداد ضبط الخادوم للجسر عدِّل الملف ‎/etc/openvpn/server.conf، مغيّرًا ما يلي من الخيارات إلى: ;dev tun dev tap up "/etc/openvpn/up.sh br0 eth1" ;server 10.8.0.0 255.255.255.0 server-bridge 10.0.0.4 255.255.255.0 10.0.0.128 10.0.0.254 ثم أنشِئ سكربتًا مساعدًا لإضافة البطاقة tap إلى الجسر، وللتأكد من أن eth1 في وضع تمرير الحزم؛ أنشِئ الملف ‎/etc/openvpn/up.sh: #!/bin/sh BR=$1 ETHDEV=$2 TAPDEV=$3 /sbin/ip link set "$TAPDEV" up /sbin/ip link set "$ETHDEV" promisc on /sbin/brctl addif $BR $TAPDEV ثم اجعل السكربت تنفيذًا: sudo chmod 755 /etc/openvpn/up.sh بعد ضبط الخادوم، عليك إعادة تشغيل خدمة openvpn بإدخال الأمر: sudo service openvpn restart ضبط العميل أولًا، ثبِّت openvpn على العميل: sudo apt-get install openvpn ثم بعد أن يكون الخادوم مضبوطًا، وشهادات العميل منسوخةً إلى ‎/etc/openvpn؛ فأنشِئ ملف ضبط للعميل بنسخ المثال، وذلك بإدخال الأمر الآتي في طرفية جهاز العميل: sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf \ /etc/openvpn عدِّل الملف ‎/etc/openvpn/client.conf مغيّرًا الخيارات الآتية: dev tap ;dev tun ca ca.crt cert client1.crt key client1.key في النهاية، أعد تشغيل openvpn: sudo service openvpn restart يجب الآن أن تستطيع الوصول إلى شبكة LAN البعيدة عبر VPN. نسخ عميل OpenVPN الواجهة الرسومية لإدارة الشبكة في لينكس تأتي أغلبية توزيعات لينُكس بما فيها توزيعة أوبنتو للأجهزة المكتبية على برمجية «مدير الشبكة»، الذي هو واجهة رسومية جميلة لإدارة خيارات الشبكة؛ يمكنك أيضًا إدارة اتصالات VPN منها؛ تأكد أن لديك الحزمة network-manager-openvpn مثبتةً، ستلاحظ هنا أن تثبيتها سيثبِّت حزمًا أخرى مطلوبة: sudo apt-get install network-manager-openvpn لإعلام برمجية «مدير الشبكة» بتثبيت الحزم الجديدة، عليك إعادة تشغيله: restart network-manager network-manager start/running, process 3078 في واجهة مدير الشبكة، اختر لسان VPN واضغط على زر "إضافة"، ثم اختر OpenVPN كنوع خدمة VPN ثم اضغط على «إنشاء»، في النافذة التالية أضف اسم خادوم OpenVPN «كبوابة»، واختر «النوع» إلى «شهادات (TLS)» ثم وجِّه «شهادة المستخدم» إلى شهادتك، و «شهادة CA» إلى سلطة الشهادات التي تعتمدها، و «المفتاح الخاص» إلى ملف مفتاحك الخاص، استخدم الزر «خيارات متقدمة» لتفعيل الضغط أو غيره من الخيارات الخاصة التي ضبطتها على الخادوم؛ جرِّب الآن إنشاء اتصال عبر VPN. برمجية Tunnelblick للاتصال بخدمة OpenVPN مع واجهة رسومية لأنظمة ماك OS X إن Tunnelblick هو نسخة ممتازة حرة مفتوحة المصدر لواجهة رسومية لعميل OpenVPN لنظام ماك؛ نزِّل آخر نسخة من المثبِّت من الموقع الرسمي وثبتِّها؛ ثم ضع ملف الضبط client.ovpn مع الشهادات والمفاتيح سويةً في ‎ ‎/Users/username/Library/Application Support/Tunnelblick/Configurations/‎ ثم شغِّل Tunnelblick من مجلد «التطبيقات» لديك. # sample client.ovpn for Tunnelblick client remote blue.example.com port 1194 proto udp dev tun dev-type tun ns-cert-type server reneg-sec 86400 auth-user-pass auth-nocache auth-retry interact comp-lzo yes verb 3 ca ca.crt cert client.crt key client.key واجهة رسومية لعميل OpenVPN لويندوز نزِّل وثبِّت آخر نسخة من عميل OpenVPN لويندوز؛ يمكنك تثبيت واجهة رسومية اختيارية باسم OpenVPN Windows GUI؛ ثم عليك تشغيل خدمة OpenVPN، وذلك بالذهاب إلى «ابدأ - جهاز الكومبيوتر - إدارة - الخدمات» و «التطبيقات - الخدمات»، ثم اعثر على خدمة OpenVPN وشغِّلها، ثم اضبط نمط التشغيل إلى «تلقائي»؛ وعندما تشغِّل OpenVPN MI GUI لأول مرة، فعليك تشغيله كمدير؛ وذلك بالنقر عليه بالزر الأيمن وانتقاء الخيار المناسب. سيتوجب عليك كتابة ملف ضبط OpenVPN إلى ملف نصي ووضعه في C:\Program Files\OpenVPN\config\client.ovpn مع شهادة CA؛ وعليك وضع شهادة المستخدم في مجلد المنزل للمستخدم كما في المثال الآتي: # C:\Program Files\OpenVPN\config\client.ovpn client remote server.example.com port 1194 proto udp dev tun dev-type tun ns-cert-type server reneg-sec 86400 auth-user-pass auth-retry interact comp-lzo yes verb 3 ca ca.crt cert "C:\\Users\\username\\My Documents\\openvpn\\client.crt" key "C:\\Users\\username\\My Documents\\openvpn\\client.key" management 127.0.0.1 1194 management-hold management-query-passwords auth-retry interact ; Set the name of the Windows TAP network interface device here dev-node MyTAP وإذا لم ترد الاستيثاق من المستخدم أو كنت تريد تشغيل الخدمة دون تفاعله، فأضف تعليقًا قبل الخيارات الآتية: auth-user-pass auth-retry interact management 127.0.0.1 1194 management-hold management-query-passwords استخدام OpenVPN مع OpenWRT يوصف OpenWRT أنه توزيعة لينُكس للأجهزة المدمجة مثل موجهات WLAN؛ هنالك بعض الأنواع من تلك الموجهات التي أُعدَّت لتشغيل OpenWRT؛ بالاعتماد على الذاكرة المتوفرة في الموجه لديك، ربما تتمكن من تشغيل برمجيات مثل OpenVPN ويمكنك بناء موجه لمكتب فرعي مع إمكانية الاتصال عبر VPN إلى المكتب الرئيسي. سجِّل دخولك إلى OpenWRT وثبِّت OpenVPN: opkg update opkg install openvpn تفقَّد الملف ‎/etc/config/openvpn وضع ضبط العميل هناك؛ وانسخ الشهادة والمفاتيح إلى ‎/etc/openvpn: config openvpn client1 option enable 1 option client 1 # option dev tap option dev tun option proto udp option ca /etc/openvpn/ca.crt option cert /etc/openvpn/client.crt option key /etc/openvpn/client.key option comp_lzo 1 أعد تشغيل OpenVPN: service openvpn restart عليك أن ترى إذا كان عليك تعديل إعدادات الجدار الناري والتوجيه في موجهك. مصادر راجع موقع OpenVPN لمزيد من المعلومات. راجع كتاب «OpenVPN hardening security guide». أيضًا، الكتاب المنشور من Pakt باسم «OpenVPN: Building And Integration Virtual Private Networks» هو مرجع جيد. ترجمة -وبتصرف- للمقال Ubuntu Server Guide: OpenVPN.
  5. إن OpenVPN هو حلّ لإنشاء شبكات وهمية خاصة (Virtual Private Networks اختصارًا VPN) موجودٌ في مستودعات أوبنتو؛ هو خدمة مرنة وعملية وآمنة، وينتمي إلى عائلة SSL/TLS VPN (التي تختلف عن IPSec VPN)؛ يشرح هذا الدرس تثبيت وضبط OpenVPN لإنشاء شبكة وهمية خاصة. OpenVPN إذا كنت تريد أكثر من مجرد مفاتيح مُشارَكة مسبقًا؛ فيجعل OpenVPN من السهل إعداد واستخدام بينة تحتية للمفتاح العمومي (Public Key Infrastructure اختصارًا PKI) لاستخدام شهادات SSL/TLS للاستيثاق ومبادلة المفاتيح بين خادوم VPN والعملاء؛ يمكن أن يُستخدَم OpenVPN في نمط موَجِّه أو جسر VPN‏ (routed or bridged VPN) ويمكن أن يُضبَط ليستخدم TCP أو UDP؛ ويمكن ضبط رقم المنفذ أيضًا، لكن رقم المنفذ 1194 هو الرقم الرسمي لهذه الخدمة؛ عملاء VPN موجودون تقريبًا في جميع توزيعات لينُكس، ونظام ماك OS X؛ وويندوز والموجهات (routers) التي تعتمد على OpenWRT. تثبيت الخادوم لتثبيت برمجية OpenVPN، أدخِل الأمر الآتي في الطرفية: sudo apt-get install openvpn إعداد البنية التحتية للمفتاح العمومي أول خطوة لضبط OpenVPN هي إنشاء بنية تحتية للمفتاح العمومي (PKI)؛ التي تحتوي على: شهادة منفصلة (تُسمى أيضًا مفتاح عمومي) وشهادة خاصة للخادوم ولكل عميل. شهادة سلطة شهادات (CA) رئيسية التي يمكن أن تُستخدَم لتوقيع شهادات كلٍّ من الخادوم والعملاء. يدعم OpenVPN الاستيثاق ثنائي الاتجاه بناءً على الشهادات، وهذا يعني أن على العميل الاستيثاق من شهادة الخادوم، وعلى الخادوم الاستيثاق من شهادة العميل قبل أن تُنشَأ ثقةٌ مشتركةٌ بينهما. على الخادوم والعميل الاستيثاق من بعضها أولًا عبر التحقق من أن الشهادة موقعة من سلطة الشهادات الرئيسية، ثم باختبار المعلومات في ترويسة الشهادة المستوثق منها؛ مثل اسم الشهادة الشائع أو نوع الشهادة (عميل أو خادوم). إعداد سلطة الشهادات لضبط سلطة شهادات خاصة بك وتوليد شهادات ومفاتيح لخادوم OpenVPN ولبعض العملاء، عليك أولًا نسخ المجلد easy-rsa إلى ‎/etc/openvpn؛ وهذا سيؤكد أن أي تغييرات إلى السكربتات لن تضيع عند تحديث الحزمة؛ أدخِل ما يلي في الطرفية: mkdir /etc/openvpn/easy-rsa/ cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/ الآن عدِّل الملف ‎/etc/openvpn/easy-rsa/vars مغيّرًا ما يلي ليناسب بيئتك: export KEY_COUNTRY="US" export KEY_PROVINCE="NC" export KEY_CITY="Winston-Salem" export KEY_ORG="Example Company" export KEY_EMAIL="steve@example.com" export KEY_CN=MyVPN export KEY_NAME=MyVPN export KEY_OU=MyVPN أدخِل ما يلي لتوليد شهادة سلطة شهادات رئيسية ومفتاح: cd /etc/openvpn/easy-rsa/ source vars ./clean-all ./build-ca شهادات الخادوم عليك توليد شهادة ومفتاح خاص للخادوم: ./build-key-server myservername وكما في الخطوة السابقة، أغلبية المعاملات يمكن أن تبقى على قيمتها الافتراضية؛ هنالك سؤالان يجب أن تجيب عليهما بالقبول هما: "‎Sign the certificate? [y/n]" و "‎‏‎1 out of 1 certificate requests ‎certified, commit? [y/n]‎". يجب توليد معاملات Diffie Hellman لخادوم OpenVPN: ./build-dh جميع الشهادات والمفاتيح ستولد في المجلد الفرعيkeys‎‎‎/؛ ومن العادات الشائعة بين المدراء نسخها إلى ‎/etc/openvpn: cd keys/ cp myservername.crt myservername.key ca.crt dh2048.pem /etc/openvpn/ شهادات العميل سيحتاج عميل VPN إلى شهادة أيضًا لكي يُعرِّف نفسه إلى الخادوم؛ عليك عادةً إنشاء شهادة منفصلة لكل عميل؛ أدخِل ما يلي في الطرفية لإنشاء شهادة: cd /etc/openvpn/easy-rsa/ source vars ./build-key client1 انسخ الملفات الآتية إلى العميل باستخدام طريقة آمنة: /etc/openvpn/ca.crt /etc/openvpn/easy-rsa/keys/client1.crt /etc/openvpn/easy-rsa/keys/client1.key ولأن شهادات ومفاتيح العميل مطلوبة فقط على حاسوب العميل، فعليك حذفهم من الخادوم. ضبط بسيط للخادوم ستحصل عند تثبيت OpenVPN على أمثلة عن ملفات الضبط: ls -l /usr/share/doc/openvpn/examples/sample-config-files/ total 68 -rw-r--r-- 1 root root 3427 2011-07-04 15:09 client.conf -rw-r--r-- 1 root root 4141 2011-07-04 15:09 server.conf.gz ابدأ بنسخ وفك ضغط server.conf.gz إلى ‎/etc/openvpn/server.conf. sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz \ /etc/openvpn/ sudo gzip -d /etc/openvpn/server.conf.gz عدِّل ملف ‎/etc/openvpn/server.conf للتأكد من أن الأسطر الآتية تشير إلى الشهادات والمفاتيح التي أنشأتها في القسم السابق: ca ca.crt cert myservername.crt key myservername.key dh dh2048.pem عدِّل الملف ‎/etc/sysctl.conf وأزل التعليق عن السطر الآتي لتفعيل تمرير IP: #net.ipv4.ip_forward=1 ثم أعد تحميل sysctl: sudo sysctl -p /etc/sysctl.conf هذا هو الحد الأدنى الذي تحتاج لضبط خادوم OpenVPN؛ يمكنك استخدام جميع الإعدادات الافتراضية في ملف server.conf؛ الآن شغِّل الخادوم، وستجد رسائل التسجيل والخطأ موجودةً في ملف syslog: sudo service openvpn start * Starting virtual private network daemon(s)... * Autostarting VPN 'server' [ OK ] تأكد الآن من أن OpenVPN قد أنشَأ البطاقة tun0: sudo ifconfig tun0 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 [...] ضبط بسيط للعميل هنالك عدِّة نسخ من عملاء OpenVPN بواجهة أو بدون واجهة رسومية؛ يمكنك القراءة المزيد عن العملاء في قسمٍ آخر؛ لكننا الآن سنستخدم عميل OpenVPN في أوبنتو الذي هو نفس الملف التنفيذي للخادوم؛ لذلك عليك تثبيت الحزمة openvpn مرةً أخرى في جهاز العميل: sudo apt-get install openvpn سننسخ هذه المرة ملف مثال الضبط client.conf إلى ‎/etc/openvpn/‎: sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf \ /etc/openvpn/ انسخ مفاتيح العميل والشهادة الصادرين من سلطة الشهادات التي أنشَأتها في قسمٍ سابق، وعدِّل ‎/etc/openvpn/client.conf للتأكد من أن الأسطر الآتية تُشير إلى تلك الملفات؛ يمكنك حذف المسار إذا كانت تلك الملفات موجودةً في ‎/etc/openvpn: ca ca.crt cert client1.crt key client1.key وعليك تحديد اسم أو عنوان خادوم OpenVPN واحد على الأقل؛ تأكد أن الكلمة المحجوزة client موجودةٌ في ملف الضبط، لأن هذا ما سيُفعِّل نمط العميل: client remote vpnserver.example.com 1194 شغِّل الآن عميل OpenVPN: sudo service openvpn start * Starting virtual private network daemon(s)... * Autostarting VPN 'client' [ OK ] وتأكد من إنشاء البطاقة الشبكية tun0: sudo ifconfig tun0 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.8.0.6 P-t-P:10.8.0.5 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 وتأكد إن كان بإمكانك عمل ping لخادوم OpenVPN: ping 10.8.0.1 PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data. 64 bytes from 10.8.0.1: icmp_req=1 ttl=64 time=0.920 ms ملاحظة: يستخدم خادوم OpenVPN أول عنوان IP قابل للاستخدام في شبكة العميل ويكون هذا العنوان هو الوحيد المستجيب للأداة ping؛ على سبيل المثال، لو ضُبِط قناع ‎/24 لشبكة العميل، فسيستخدم العنوان ‎.1؛ عنوان PTP (الند للند، أو peer to peer) الذي تراه في ناتج ifconfig أعلاه لا يجيب عادةً على طلبات ping. تأكد من جداول التوجيه عندك: sudo netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 10.8.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 10.8.0.1 10.8.0.5 255.255.255.255 UGH 0 0 0 tun0 192.168.42.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 192.168.42.1 0.0.0.0 UG 0 0 0 eth0 أول خطوة في استكشاف الأخطاء إذا لم يعمل ما سبق لك، فعليك أن تفعل ما يلي: تحقق من سجل syslog عندك، أي grep -i vpn /var/log/syslog. هل يستطيع العميل الاتصال إلى الخادوم؟ ربما يحجب الجدار الناري وصوله؟ تأكد من سجل syslog على الخادوم. يجب أن يستخدم الخادوم والعميل نفس البروتوكول والمنفذ، مثلًا UDP بمنفذ 1194؛ راجع خيارَيّ الضبط proto و port. يجب أن يستخدم الخادوم والعميل نفس إعدادات الضبط الخاصة بالضغط، راجع خيار الضبط comp-lzo. يجب أن يستخدم الخادوم والعميل نفس الضبط المتعلق بنمط التوجيه والجسور. ترجمة -وبتصرف- للمقال Ubuntu Server Guide: OpenVPN.
  6. يشرح هذا المقال كيفية استخدام Tinc، وهي أداة مفتوحة المصدر، لإنشاء شبكات خاصة افتراضية Virtual Private Network, VPN آمنة تستخدمها الخواديم والأجهزة للتواصل كما لو أنها في شبكة محليّة. يوضح المقال أيضا كيفية استخدام Tinc لإعداد نفق tunnel آمن نحو شبكة خاصة. سنستخدم خواديم Ubuntu 14.04 إلا أن الإعدادات صالحة للتطبيق والتكييف على أنظمة أخرى. يتضمن Tinc ميزات تجعله مفيدا؛ منها التعمية Encryption، الضغط Compression الاختياري للبيانات، التوجيه Routing التلقائي للشبكة (تُوجَّه حركة البيانات مباشرة إلى الخواديم المتصلة إن أمكن ذلك) واليسر في قابلية التمدد. تفرق هذه الميزات بين أداة Tinc وحلول الشبكات الخاصة الافتراضية الأخرى مثل OpenVPN وتجعلها مناسبة لإنشاء شبكة خاصة افتراضية مكوّنة من شبكات صغيرة موزَّعة على مناطق جغرافية متباعدة. تعمل أداة Tinc على نظم تشغيل مختلفة بما فيها لينوكس، وندوز و Mac OS X. المتطلباتيتطلب هذا المقال صلاحيات إدارية للوصول إلى ثلاثة خواديم Ubuntu 14.04 على الأقل. توجد تعليمات هذا الإعداد في الدرس التالي (الخطوات 3 و4): الإعداد الابتدائي لخادوم أوبنتو 14.04. إن كنت تريد استخدام الخطوات المشروحة في هذا الدرس في بيئة عملك فيجب عليك التخطيط للكيفية التي تريد لكل خادوم أن يتصل عن طريقها بالخواديم الأخرى، وتكييف الأمثلة المقدَّمة مع احتياجاتك الخاصة. تأكد عند تكييف الخطوات مع إعداداتك الخاصة من تغيير القيم إلى تلك الخاصة بك. لاتباع هذا الدرس دون تغيير يجب إنشاء خادومين خاصّين افتراضيين ضمن نفس مركز البيانات مع وضعهما في نفس الشبكة المحلية، وإنشاء خادوم آخر ضمن مركز بيانات منفصل. سنعد خادومين في مركز بيانات NYC2 وواحد في مركز بيانات AMS1 بالأسماء التالية: externalnyc: يجب أن تتصل جميع الأجهزة ضمن الشبكة الافتراضية بهذا الخادوم وتحافظ على الاتصال حتى تعمل الشبكة الافتراضية بطريقة صحيحة. يمكن أن تضبَط خواديم أخرى بطريقة مشابهة لضمان التكرار.internalnyc: يتصل بالخادوم externalnyc باستخدام واجهة الشبكة المحلية.ams1: يتصل بexternalnyc عبر الإنترنت.الهدففي المخطَّط أدناه توضيح للشبكة الخاصة الافتراضية التي نريد إعدادها والموصوفة في فقرة المتطلبات أعلاه: يمثل الأخضر شبكتنا الخاصة الافتراضية، البني شبكة الإنترنت والبرتقالي الشبكة المحلية. تستطيع الخواديم الثلاثة التخاطب عبر الشبكة الخاصة الافتراضية، على الرغم من أن ams1 غير متصل بالشبكة المحلية. نبدأ بتثبيت Tinc. تثبيت Tincثبت tinc على كل خادوم تود إلحاقه بالشبكة الخاصة الافتراضية. نبدأ بتحديث فهرس الحزم: sudo apt-get updateثم تثبيت حزمة tinc: sudo apt-get install tincننتقل بعد التثبيت إلى الإعداد. إعداد Tincيستخدم Tinc “اسم شبكة” netname للتفريق بين شبكات خاصة افتراضية عدّة في حالة وجودها. يُنصَح باستخدام أسماء شبكات حتى ولو لم تكن تخطط لإعداد شبكات خاصة افتراضية عدّة. سنسمي شبكتنا الاخاصة الافتراضية hsoub. يتطلب كل واحد من الخواديم التي ستكون جزءا من الشبكة الخاصة الافتراضية العناصر الثلاثة التالية: ملفات الإعداد: مثل tinc-up، tinc-down وtinc.conf.زوجا من المفاتيح (عمومي وخصوصي) للتعمية والاستيثاق.ملفات إعداد المستضيف: تتضمن المفاتيح العمومية وإعدادات أخرى للشبكة الخاصة الافتراضيةنبدأ بإعداد الجهاز الأول من شبكتنا الخاصة الافتراضية وهي externalnyc. إعداد externalnycأنشئ هيكل مجلّد الإعداد الخاص بالشبكة الخاصة الافتراضية hsoub على الخادوم externalnyc: sudo mkdir -p /etc/tinc/hsoub/hostsافتح ملف tinc للتعديل عليه: sudo nano /etc/tinc/hsoub/tinc.confأضف الأسطر التالية: Name = externalnyc AddressFamily = ipv4 Interface = tun0تعد التعليمات جهازا باسم externalnyc بواجهة شبكة تسمى tun0 تستخدم الإصدار الرابع من بروتوكول IP. احفظ الملف ثم أغلقه. ثم ننشئ ملفا لإعداد المستضيفات على الخادوم externalnyc: sudo nano /etc/tinc/netname/hosts/externalnycأضف الأسطر التالية إلى الملف (حيث externalnyc_public_IP عنوان IP العمومي للخادوم): Address = externalnyc_public_IP Subnet = 10.0.0.1/32تستخدم الخواديم الأخرى الملف للتخاطب مع الخادوم externalnyc. تحدد التعليمة Addressعنوان IP المُستخدّم للاتصال بهذا الخادوم فيما تعين Subnet الشبكة الفرعية التي سيستخدمها Tinc. احفظ الملف ثم أغلقه. أنشئ الآن زوج المفاتيح الخاصة بالمستضيف: sudo tincd -n hsoub -K4096ينشئ الأمر مفتاحا خاصا (يوجد على المسار etc/tinc/hsoub/rsa_key.priv/) ويضيف المفتاح العمومي إلى ملف إعداد المستضيف externalnyc الذي أنشأناه قبل قليل (etc/tinc/hsoub/hosts/externalnyc/). يجب الآن أن ننشئ tinc-up وهو سكربت يعمل على أي خادوم تشغَّل عليه شبكتنا الخاصة الافتراضية. sudo nano /etc/tinc/hsoub/tinc-upأضف الأسطر التالية: #!/bin/sh ifconfig $INTERFACE 10.0.0.1 netmask 255.255.255.0يعمل هذا السكربت على إنشاء واجهة شبكة تستخدمها الشبكة الخاصة الافتراضية عند تشغيلها. سيكون عنوان هذا الخادوم على الشبكة الخاصة الافتراضية 10.0.0.1. سننشئ أيضا سكربت لحذف واجهة الشبكة الخاصة الافتراضية عند إيقاف هذه الأخيرة: sudo nano /etc/tinc/hsoub/tinc-downأضف الأسطر التالية: #!/bin/sh ifconfig $INTERFACE downاحفظ الملف ثم أغلقه. نجعل سكربتات tinc قابلة للتنفيذ: sudo chmod 755 /etc/tinc/netname/tinc-*احفظ الملف ثم أغلقه. ننتقل لإعداد بقية الأجهزة الموجودة في الشبكة الخاصة الافتراضية. إعداد internalnyc وams1يتوجب تنفيذ هذه الخطوات على كل من الخادومين internalnyc وams1 مع اختلافات طفيفة بينهما سنشير إليها. أنشئ هيكل مجلد إعداد الشبكة الخاصة الافتراضية المسماة hsoub على الخادومين internalnyc وams1 وعدل ملف إعداد Tinc: sudo mkdir -p /etc/tinc/hsoub/hosts sudo nano /etc/tinc/hsoub/tinc.confأضف الأسطر التالية (أبدل node_name باسم الخادوم): Name = node_name AddressFamily = ipv4 Interface = tun0 ConnectTo = externalnycتعد التعليمات الخواديم لمحاولة الاتصال بexternalnyc (العقدة التي أنشأناها قبل هذا). احفظ الملف ثم أغلقه. ملحوظة: يستخدم Tinc مصطلح العقدة Node للدلالة على جهاز مربوط بالشبكة الخاصة الافتراضية.. ننشئ ملف إعداد المستضيف: sudo nano /etc/tinc/hsoub/hosts/node_nameبالنسبة لinternalnyc أضف السطر التالي: Subnet = 10.0.0.2/32وبالنسبة لams1: Subnet = 10.0.0.3/32لاحظ الفرق بين العنوانين. احفظ الملف ثم أغلقه. ثم ولّد زوج المفاتيح: sudo tincd -n hsoub -K4096وأنشئ السكربت الخاص ببدء تشغيل واجهة الشبكة: sudo nano /etc/tinc/hsoub/tinc-upبالنسبة لinternalnyc أضف السطر التالي: ifconfig $INTERFACE 10.0.0.2 netmask 255.255.255.0وبالنسبة لams1: ifconfig $INTERFACE 10.0.0.3 netmask 255.255.255.0تستخدم عناوين IP المذكورة للاتصال بالشبكة الخاصة الافتراضية. احفظ الملف ثم أغلقه. أنشئ سكربت الإيقاف الخاص بواجهة الشبكة: sudo nano /etc/tinc/hsoub/tinc-downأضف السطر التالي: ifconfig $INTERFACE downاحفظ الملف ثم أغلقه. في الأخير نجعل السكربت قابلا للتنفيذ: sudo chmod 755 /etc/tinc/hsoub/tinc-*يجب الآن أن نوزع ملفات إعدادات المستضيف على كل عقدة من الشبكة الخاصة الافتراضية. توزيع المفاتيحلكي يستطيع جهازان التخاطب مباشرة ضمن الشبكة الخاصة الافتراضية فيجب عليهما تبادل المفاتيح العمومية التي توجد في ملف إعدادات المستضيف الخاص بكل جهاز. في حالتنا فقط الخادوم externalnyc يحتاج لتبادل المفاتيح العمومية مع بقية الخواديم. يسهل نقل كل مفتاح عمومي إلى جميع الأجهزة إدارة الشبكة الخاصة الافتراضية. ينبغي الانتباه إلى أنه يجب تغيير قيمة التعليمة Address ضمن ملف الإعداد الخاص بexternalnyc بعد نسخه على الخادوم internalnyc وإبدالها بعنوان IP المحلي للخادوم externalnyc لكي يُجرى الاتصال عبر الشبكة المحلية. توجد ملفات إعدادات المستضيف على المسار etc/tinc/hsoub/hosts/ حيث hsoub اسم الشبكة الخاصة الافتراضية. تبادل المفاتيح بين الخادومين externalnyc وinternalnycانسخ ملف إعداد المستضيف على الخادوم internalnyc إلى externalnyc (يُنفَّذ الأمر على الخادوم internalnyc): scp /etc/tinc/hsoub/hosts/internalnyc user@externalnyc_private_IP:/tmpثم انقل الملف إلى المجلَّد المناسب على الخادوم externalnyc (يُنفَّذ الأمر على الخادوم externalnyc): cd /etc/tinc/hsoub/hosts; sudo cp /tmp/internalnyc .نكرر نفس الخطوات في الاتجاه المعاكس. انسخ ملف إعداد المستضيف على الخادوم externalnyc إلى internalnyc(يُنفَّذ الأمر على الخادوم externalnyc): scp /etc/tinc/hsoub/hosts/externalnyc user@internalnyc_private_IP:/tmpثم انقل الملف إلى المجلَّد المناسب على الخادوم internalnyc (يُنفَّذ الأمر على الخادوم internalnyc): cd /etc/tinc/hsoub/hosts; sudo cp /tmp/externalnyc .نعدّل على ملف إعداد المستضيف externalnyc بعد نسخه على الخادوم internalnyc ونغير قيمة التعليمة Address ونبدلها بعنوان IP الخادوم externalnycضمن الشبكة المحلية (وهو ما يعني أن internalnyc سيتصل بexternalnyc عبر الشبكة المحلية): sudo nano /etc/tinc/hsoub/hosts/externalnycأعط القيمة externalnyc_private_IP للتعليمة Address(حيث externalnyc_private_IP عنوان externalnyc في الشبكة المحلية): Address = externalnyc_private_IPاحفظ الملف ثم أغلقه. ننتقل الآن للعقدة المتبقية، ams1. تبادل المفاتيح بين الخادومين externalnyc وams1نتبع نفس الخطوات السابقة. نبدأ بنسخ ملف إعداد المستضيفات الخاص بams1 على الخادوم externalnyc: scp /etc/tinc/hsoub/hosts/ams1 user@externalnyc_public_IP:/tmpثم انتقل إلى externalnyc وانقل الملف إلى المجلد المناسب: cd /etc/tinc/hsoub/hosts; sudo cp /tmp/ams1 .نكرر نفس الخطوات في الاتجاه المعاكس؛ فننسخ ملف إعدادات المستضيف الخاص ب externalnyc على ams1: scp /etc/tinc/hsoub/hosts/externalnyc user@ams1_public_IP:/tmpوننقل الملف إلى المجلد المناسب على الخادوم ams1: cd /etc/tinc/hsoub/hosts; sudo cp /tmp/externalnyc . تبادل المفاتيح بين العقد الإضافيةإن كانت الشبكة الخاصة الافتراضية التي تعدها تتضمن عقدا إضافية فيجب تبادل المفاتيح العمومية بينها بنفس الطريقة المشروحة في الفقرات السابقة. تذكر أنه يجب على عقدتين من الشبكة تبادل المفاتيح العمومية (ملفات إعداد المستضيف) إن كنت تريد أن يكون التخاطب بينهما مباشرا. اختبار الإعدادشغل أداة Tinc على كل واحد من الخواديم، بدءا بالخادوم externalnyc، مع تفعيل وضع التنقيح Debug: sudo tincd -n hsoub -D -d3يجب بعد تشغيل البرنامج أن تظهر أسماء العقد في المخرجات حال اتصالها بالخادوم externalnyc. في ما يلي نختبر الاتصال عبر الشبكة الخاصة الافتراضية. افتح نافذة جديدة لسطر الأوامر على الخادوم ams1 وجرب تنفيذ أمر ping مع إعطائه عنوان IP الخادوم internalnyc ضمن الشبكة الخاصة الافتراضية (أي 10.0.0.2 الذي ضبطناه سابقا): ping 10.0.0.2ينبغي أن يعمل الأمر دون مشاكل. سترى في نافذة سطر الأوامر الأولى بعض المخرجات المتعلقة بالاتصال عبر الشبكة الخاصة الافتراضية. يعني هذا أن ams1 قادر على التخاطب مع internalnyc عبر الشبكة الخاصة الافتراضية مرورا بexternalnyc. اضغط الزرين CTRL وC لتوقيف أمر ping في النافذة الجديدة. يمكن استخدام واجهات الشبكة الخاصة الافتراضية في أمور مثل اتصالات التطبيقات و SSH. لإيقاف وضعية التنقيح اضغط الزرين CTRL و\. ملحوظة: تأكد من إعدادات الجدار الناري لديك إن لم تعمل الاتصالات في الشبكة الخاصة الافتراضية. إعداد Tinc للعمل مع بدء تشغيل النظاميجب وضع اسم الشبكة الخاصة الافتراضية في ملف الإعداد nets.boot لكي تعمل بطريقة صحيحة. حرر ملف nets.boot على كل عقدة: sudo nano /etc/tinc/nets.bootأضف أسماء الشبكات الخاصة الافتراضية التي تستعملها، بالنسبة للمثال اسم الشبكة هو hsoub: # This file contains all names of the networks to be started on system startup. hsoubاحفظ الملف ثم أغلقه. Tinc معد الآن للعمل مع بدء تشغيل النظام؛ ويمكن اسخدام سطر الأوامر للتحكم فيه. استخدم الأمر التالي على كل عقدة إن أردت تشغيله الآن: sudo service tinc startخاتمةقدمنا في هذا المقال الخطوات الأساسية لإنشاء شبكة خاصة افتراضية باستخدام Tinc. يمكن البناء على ما أعددناه هنا لإنشاء شبكة تلبي احتياجاتك. يتميز Tinc بالمرونة ويمكن إعداد أي عقدة للاتصال بعقدة أخرى وبالتالي إنشاء شبكة غير مركزية لا تعتمد على خادوم واحد للتوجيه. ترجمة -وبتصرف- للمقال How To Install Tinc and Set Up a Basic VPN on Ubuntu 14.04 لصاحبه Mitchell Anicas.
×
×
  • أضف...