مدعوم من ZeroTier. دليل عملي لبناء الشبكات الافتراضية. الجزء 1


متابعة للقصة حول ZeroTier ، من النظرية المقدمة في مقالة " التبديل الذكي للإيثرنت لكوكب الأرض " ، أنتقل إلى الممارسة التي:

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

وحدة تحكم الشبكة


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

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

في ممارستي ، استخدمت كلاهما ، ونتيجة لذلك ، استقرت في الثانية. كان السبب في ذلك تحذيرات المطور.

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

رابط إلى الوثائق

وأيضا ، علامات بجنون العظمة IB الخاصة بهم :)

  • حتى في حالة وصول Cheburnet ، لا يزال يتعين عليّ الوصول إلى وحدة التحكم في الشبكة الخاصة بي ؛
  • أنا فقط يجب استخدام وحدة تحكم الشبكة. عند الضرورة ، توفير الوصول إلى ممثليهم المعتمدين
  • يجب أن يكون من الممكن تقييد الوصول إلى وحدة تحكم الشبكة من الخارج.

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

  • رسائل أكثر مما كان مخططا له
  • تم وصف هذا بالفعل على GitHab GUI Developer
  • موضوع عن آخر

لذلك ، باختيار المسار الأقل مقاومة ، سأستخدم في هذا السرد وحدة تحكم شبكة مع واجهة المستخدم الرسومية المستندة إلى VDS التي تم إنشاؤها من قالب تم تطويره بواسطة زملائي من RuVDS.

الإعداد الأولي


بعد إنشاء الخادم من القالب المحدد ، يحصل المستخدم على حق الوصول إلى واجهة المستخدم الرسومية على الويب لوحدة التحكم من خلال المتصفح عن طريق الاتصال على https: // <server IP>: 3443


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

عندما يقوم المستخدم بتسجيل الدخول أولاً إلى نظام تسجيل الدخول باستخدام اسم المستخدم وكلمة المرور الافتراضية - المسؤول وكلمة المرور :


إنها تقترح تغيير كلمة المرور الافتراضية للمستخدم


أتعامل بشكل مختلف بعض الشيء - أنا لا أغير كلمة المرور لمستخدم حالي ، لكني أنشئ كلمة مرور جديدة - إنشاء مستخدم .

قمت بتعيين اسم المستخدم الجديد - اسم المستخدم :
قمت بتعيين كلمة مرور جديدة - أدخل كلمة مرور جديدة :
أؤكد كلمة المرور الجديدة - أعد إدخال كلمة المرور :

الأحرف التي تم إدخالها حساسة لحالة الأحرف - كن حذرًا!

خانة الاختيار التي تؤكد تغيير كلمة المرور عند تسجيل الدخول التالي - تغيير كلمة المرور عند تسجيل الدخول التالي: لا أضع علامة عليها.

لتأكيد البيانات المدخلة ، اضغط على ضبط كلمة المرور :


ثم: تسجيل الدخول - تسجيل الخروج / تسجيل الدخول ، بالفعل تحت بيانات اعتماد المستخدم الجديد:


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


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

إنشاء شبكة افتراضية


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


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


عند تطبيق بيانات الإدخال - إنشاء شبكة ، يحصل المستخدم على صفحة بها قائمة بالشبكات المشار إليها:

اسم الشبكة - اسم الشبكة في شكل رابط ، عندما تنقر عليه يمكنك تغييره
معرف الشبكة - معرف الشبكة
التفاصيل - رابط إلى صفحة مع معلمات شبكة مفصلة
الإعداد السهل - رابط إلى صفحة للإعداد السهل
الأعضاء - رابط إلى صفحة إدارة الموقع


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


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

ربط المضيفين


  1. أولاً ، تحتاج إلى تثبيت خدمة ZeroTier One على العقدة التي يريد المستخدم الاتصال بالشبكة.

    ما هو ZeroTier One؟
    ZeroTier One هي خدمة تعمل على أجهزة الكمبيوتر المحمولة وأجهزة سطح المكتب والخوادم والأجهزة الظاهرية والحاويات ، والتي توفر اتصالات بشبكة افتراضية عبر منفذ شبكة ظاهري ، مثل عميل VPN.

    بعد تثبيت الخدمة وبدء تشغيلها ، يمكنك الاتصال بالشبكات الافتراضية باستخدام عناوينها المكونة من 16 رقمًا. تبدو كل شبكة مثل منفذ الشبكة الافتراضية في النظام ، والذي يتصرف مثل منفذ Ethernet العادي.

    يمكن العثور على روابط توزيعات ، وكذلك أوامر التثبيت على صفحة الشركة المصنعة .

    يمكنك إدارة الخدمة المثبتة من خلال محطة سطر الأوامر (CLI) مع حقوق المسؤول / الجذر. على Windows / MacOS ، باستخدام الواجهة الرسومية أيضًا. على نظام Android / iOS ، فقط باستخدام واجهة المستخدم الرسومية.
  2. التحقق من نجاح تثبيت الخدمة:

    CLI:

    zerotier-cli status 

    النتيجة:

    200 info ebf416fac1 1.4.6 ONLINE
    واجهة المستخدم الرسومية:

    حقيقة عملية التطبيق الخاصة به والتواجد فيه لخط مع معرف العقدة مع عنوان العقدة.
  3. توصيل العقدة بالشبكة:

    CLI:

     zerotier-cli join <Network ID> 

    النتيجة:

    200 join OK

    واجهة المستخدم الرسومية:

    Windows: انقر بزر الماوس الأيمن على أيقونة ZeroTier One في علبة النظام وحدد - Join Network .


    MacOS: قم بتشغيل تطبيق ZeroTier One في قائمة الشريط ، إن لم يكن قيد التشغيل بالفعل. انقر على أيقونة and واختر " الانضمام إلى الشبكة" .

    Android / iOS: + (صورة زائد) في التطبيق


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


    في هذه الصفحة ، نترك كل شيء كما هو ، وبواسطة رابط تعيين IP ، انتقل إلى صفحة الوجهة لعقدة عنوان IP:


    بعد تعيين العنوان ، من خلال زر " الخلف" ، نعود إلى صفحة قائمة العقد المتصلة ونقوم بتعيين الاسم - اسم العضو ونضع علامة في خانة الاختيار لإذن العقدة على الشبكة - معتمد . بالمناسبة ، تعد خانة الاختيار هذه أمرًا مناسبًا للغاية لقطع / الاتصال بالشبكة المضيفة في المستقبل.


    حفظ التغييرات باستخدام زر تحديث .
  5. التحقق من حالة اتصال العقدة بالشبكة:
    للتحقق من حالة الاتصال على العقدة نفسها ، نقوم بتنفيذ:
    CLI:

     zerotier-cli listnetworks 

    النتيجة:

    200 listnetworks <nwid> <name> <mac> <status> <type> <dev> <ZT assigned ips>
    200 listnetworks 2da06088d9f863be My_1st_VLAN be:88:0c:cf:72:a1 OK PRIVATE ethernet_32774 10.10.10.2/24

    واجهة المستخدم الرسومية:

    يجب أن تكون حالة الشبكة موافق

    لتوصيل العقد المتبقية ، كرر الخطوات من 1-5 لكل منها.

تحقق من اتصال شبكة العقد


أقوم بذلك عن طريق تنفيذ الأمر ping <عنوان IP لعقدة شبكة أخرى> على الجهاز المتصل بالشبكة والذي أسيطر عليه حاليًا.


في لقطة شاشة وحدة التحكم Web-GUI ، يمكنك رؤية ثلاث عقد متصلة بالشبكة:

  1. ZTNCUI - 10.10.10.1 - وحدة تحكم الشبكة الخاصة بي مع واجهة المستخدم الرسومية - VDS في أحد DCS RuVDS. بالنسبة للعمل العادي ، ليست هناك حاجة لإضافته إلى الشبكة ، لكنني فعلت ذلك لأنني أريد حظر الوصول إلى واجهة الويب من الخارج. المزيد عن هذا في وقت لاحق.
  2. MyComp - 10.10.10.2 - جهاز الكمبيوتر الخاص بي هو جهاز كمبيوتر فعلي
  3. النسخ الاحتياطي - 10.10.10.3 - VDS في العاصمة أخرى.

لذلك ، من جهاز الكمبيوتر الخاص بي في العمل ، أتحقق من توفر العقد الأخرى باستخدام الأوامر:

 ping 10.10.10.1 

Pinging 10.10.10.1 with 32 bytes of data:
Reply from 10.10.10.1: bytes=32 time=14ms TTL=64
Reply from 10.10.10.1: bytes=32 time=4ms TTL=64
Reply from 10.10.10.1: bytes=32 time=7ms TTL=64
Reply from 10.10.10.1: bytes=32 time=2ms TTL=64

Ping statistics for 10.10.10.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 2ms, Maximum = 14ms, Average = 6ms


 ping 10.10.10.3 

Pinging 10.10.10.3 with 32 bytes of data:
Reply from 10.10.10.3: bytes=32 time=15ms TTL=64
Reply from 10.10.10.3: bytes=32 time=4ms TTL=64
Reply from 10.10.10.3: bytes=32 time=8ms TTL=64
Reply from 10.10.10.3: bytes=32 time=4ms TTL=64

Ping statistics for 10.10.10.3:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 4ms, Maximum = 15ms, Average = 7ms


يحق للمستخدم استخدام أدوات أخرى للتحقق من توفر العقد على الشبكة ، سواء المدمج في نظام التشغيل ، مثل NMAP ، Advanced IP Scanner ، إلخ.

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


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

للقيام بذلك ، قم بالاتصال عبر SSH بـ VDS التي يوجد عليها جهاز التحكم ، افتح ملف التكوين باستخدام الأمر:

 nano /opt/key-networks/ztncui/.env 

في الملف الذي يتم فتحه ، بعد السطر "HTTPS_PORT = 3443" الذي يحتوي على عنوان المنفذ حيث يتم فتح واجهة المستخدم الرسومية ، تحتاج إلى إضافة سطر إضافي بالعنوان حيث سيتم فتح واجهة المستخدم الرسومية - في حالتي ، يكون هذا HTTPS_HOST = 10.10.10.1.

بعد ذلك ، احفظ الملف

trl+C
Y
Enter


وتنفيذ الأمر:

 systemctl restart ztncui 

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

بدلا من الاستنتاج


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

في غضون ذلك ، لكي أقضي الوقت حتى نشر الجزء التالي ، الذي سأخبرك فيه كيف تجمع بين شبكة افتراضية وشبكة فعلية ، وكيفية تنظيم وضع "warrior" وشيء آخر ، أقترح عليك محاولة تنظيم شبكة افتراضية خاصة بك باستخدام وحدة تحكم شبكة خاصة مع واجهة المستخدم الرسومية المستندة إلى VDS من السوق على موقع RUVDS. علاوة على ذلك ، هناك فترة تجريبية مجانية مدتها 3 أيام لجميع العملاء الجدد!

PS نعم! لقد نسيت تقريبا! يمكنك إزالة عقدة من الشبكة باستخدام الأمر في CLI الخاص بهذه العقدة.

 zerotier-cli leave <Network ID> 

200 leave OK

أو الأمر حذف في واجهة المستخدم الرسومية العميل على العقدة.

Source: https://habr.com/ru/post/ar485914/


All Articles