يشرح هذا المقال كيفية استخدام 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.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.