كيفية إنشاء شبكة VPN خفيفة الوزن بتقنية P2P باستخدام Tinc

Tinc هو محول شبكة افتراضية خاصة (VPN) مفتوح المصدر يوفر طريقة بسيطة لإنشاء شبكة شبكية خاصة من نظير إلى نظير (P2P) في Linux وWindows وmacOS. على غرار OpenVPN وWireguard، يمكنه ربط أجهزة كمبيوتر متعددة عبر طبولوجيا شبكة مختلفة في شبكة LAN افتراضية واحدة. نعرض لك هنا فوائد استخدام Tinc وكيفية تثبيت وإنشاء شبكة شبكية بسيطة تعتمد على Tinc.
لماذا نستخدم Tinc بدلاً من Wireguard وOpenVPN؟
إحدى نقاط البيع الفريدة لـ Tinc مقارنة ببرامج VPN الأخرى هي أنها مصممة لتكون شبكة شبكية. وهذا يعني أنه، على عكس Wireguard، يمكنه التكيف بسهولة مع التغيرات في ظروف الشبكة. وهذا يجعله أكثر مرونة، خاصة بالنسبة لأجهزة الكمبيوتر ذات الاتصال الضعيف بالشبكة.
وبصرف النظر عن ذلك، يتمتع Tinc بمعظم الميزات التي تتوقعها من شبكة VPN تقليدية مثل OpenVPN. يتضمن ذلك القدرة على اجتياز بيئات NAT وإنشاء أنفاق مشفرة وربط تطبيقات الشبكة المحلية فقط.

وأخيرًا، تسعى Tinc أيضًا إلى إجراء كل اتصال تقوم به داخل الشبكة P2P. يمكن أن يتم ذلك إما من خلال الاكتشاف التلقائي للأقران أو التنسيق مع خادم Tinc الذي يمكن الوصول إليه بشكل عام. ونتيجة لذلك، فإن الاتصالات داخل شبكة Tinc VPN ليست مرنة فحسب، ولكنها أيضًا سريعة وسريعة الاستجابة.
من الجيد أن تعرف: هل ما زلت لم تقرر بعد أي VPN تختار؟ راجع مقالتنا حيث نلقي نظرة على كيفية تكديس Wireguard وOpenVPN ضد بعضهما البعض.
تثبيت Tinc على نظام Linux
الخطوة الأولى في تثبيت Tinc هي التأكد من تحديث نظامك. في أوبونتو، قم بتشغيل الأمر التالي:
sudo apt update && sudo apt upgrade -y
قم بتنزيل Tinc وتثبيته مباشرةً من مستودعات حزم Ubuntu:

لتثبيت Tinc على توزيعات Linux الأخرى، استخدم مدير الحزم المناسب لذلك النظام. على سبيل المثال، أحتاج إلى الركض sudo dnf install tinc
لجلب البرنامج في فيدورا.

تأكد من أنك قمت بتثبيت Tinc بشكل صحيح عن طريق فتح جلسة طرفية وتشغيلها tincd --version
.

إنشاء شبكة شبكية أساسية باستخدام Tinc
باستخدام Tinc على جهازك، يمكنك الآن تكوين أول شبكة تعتمد على Tinc. أنشئ مجلدًا جديدًا داخل “/etc/tinc”. سيحتوي هذا على جميع الملفات المتعلقة بعقدة Tinc الخاصة بك:
sudo mkdir -p /etc/tinc/mynetwork/hosts
قم بإنشاء ملف تكوين جديد باستخدام محرر النصوص المفضل لديك:
sudo nano /etc/tinc/mynetwork/tinc.conf
الصق كتلة التعليمات البرمجية التالية داخل ملف التكوين الجديد الخاص بك:
Name = mynode Device = /dev/net/tun

ملحوظة: قد تقوم بعض توزيعات Linux بتغيير موقع محول tun داخل “/ dev”. للعثور على المسار الدقيق لنظامك، قم بتشغيل:
find /dev -name *tun* -type c
قم بإنشاء ملف نصي ضمن المجلد “hosts” باسم عقدة Tinc الخاصة بك والصق ما يلي بداخله:
Subnet = 192.168.11.1/32 Address = YOUR-MACHINE-IP-ADDRESS-HERE Port = 655
استبدل قيمة متغير “العنوان” بعنوان IP الخاص بجهازك. يمكنك العثور على هذا عن طريق الجري ip addr
.

ملحوظة: تحتاج إلى توفير عنوان IP العام لجهازك إذا كنت تريد إنشاء شبكة VPN يمكن الوصول إليها بشكل عام.
احفظ ملف المضيفين الخاص بجهازك، ثم أنشئ ملفين ضمن “/etc/tinc/mynetwork:”
sudo touch /etc/tinc/mynetwork/tinc-{up,down} sudo chmod +x /etc/tinc/mynetwork/tinc-(up,down}
افتح ملف “tinc-up”، ثم قم بلصق كود الباش التالي بداخله. يؤدي هذا إلى إنشاء واجهة الشبكة الافتراضية لـ Tinc وتعيين عنوان IP لتلك الواجهة:
#!/bin/sh ip link set $INTERFACE up ip addr add 192.168.11.1/32 dev $INTERFACE ip route add 192.168.11.0/24 dev $INTERFACE
احفظ الملف، ثم افتح ملف “tinc-down” والصق بداخله أيضًا ما يلي. يؤدي هذا إلى عكس “tinc-up:” حيث يقوم بإلغاء تعيين عنوان IP من واجهة Tinc الخاصة بك ويزيل تلك الواجهة من جهازك:
#!/bin/sh ip route del 192.168.11.0/24 dev $INTERFACE ip addr del 192.168.11.1/32 dev $INTERFACE ip link set $INTERFACE down

قم بإنشاء زوج مفاتيح لعقدة Tinc الخاصة بك عن طريق تشغيل tincd:
sudo tincd -n mynetwork --generate-keys=4096
يضعط يدخل مرتين لقبول موقع الحفظ الافتراضي لكل من المفاتيح الخاصة والعامة على عقدة Tinc الخاصة بك.

إضافة عميل Tinc الأول
لإضافة عميل Tinc جديد، ابدأ بالتأكد من تثبيت Tinc بشكل صحيح على جهازك الثاني.

قم بإنشاء بنية الدليل لتكوين Tinc الخاص بك باستخدام mkdir -p
.

استخدم محرر النصوص المفضل لديك لإنشاء ملف التكوين لعميل Tinc الخاص بك:
sudo nano /etc/tinc/mynetwork/tinc.conf
الصق أسطر التعليمات البرمجية التالية داخل ملف التكوين الخاص بجهازك الثاني:
Name = myclient Device = /dev/net/tun ConnectTo = mynode
قم بإنشاء ملف باسم جهاز Tinc الخاص بك ضمن “/etc/tinc/mynetwork/hosts”. في هذه الحالة، قمت بتسمية جهازي الثاني باسم “myclient”، لذا سأقوم بإنشاء ملف باسم “myclient:”
sudo nano /etc/tinc/mynetwork/hosts/myclient
قم بلصق كتلة التعليمات البرمجية التالية داخل ملف المضيفين الجديد الخاص بك. على غرار العقدة الأولى، يحدد هذا تكوين الشبكة لبرنامج Tinc الخفي الخاص بك:
Subnet = 192.168.11.2/32 Port = 655
احفظ ملف المضيفين الجديد، ثم أنشئ نصًا برمجيًا “tinc-up” و”tinc-down” على جهازك الثاني:
sudo touch /etc/tinc/mynetwork/tinc-{up,down} sudo chmod +x /etc/tinc/mynetwork/tinc-{up,down}

افتح ملف tinc-up باستخدام محرر النصوص المفضل لديك، ثم الصق كتلة التعليمات البرمجية التالية بداخله:
#!/bin/sh ip link set $INTERFACE up ip addr add 192.168.11.2/32 dev $INTERFACE ip route add 192.168.11.0/24 dev $INTERFACE
احفظ ملف tinc-up، ثم افتح tinc-down والصق أسطر التعليمات البرمجية التالية بداخله أيضًا:
#!/bin/sh ip route del 192.168.11.0/24 dev $INTERFACE ip addr del 192.168.11.2/32 dev $INTERFACE ip link set $INTERFACE down
قم بإنهاء تكوين عميل Tinc الخاص بك عن طريق إنشاء زوج المفاتيح الخاص به:
sudo tincd -n mynetwork --generate-keys=4096

تشغيل شبكة Tinc Mesh
في هذه المرحلة، أصبح لديك الآن برنامجان خفيان من Tinc تم تكوينهما بشكل صحيح. ومع ذلك، لا تزال بحاجة إلى ربط هذين البرنامجين الخفيين من Tinc لإنشاء P2P VPN الخاص بك في Linux. للقيام بذلك، تحتاج إلى نسخ ملف تكوين المضيفين من عقدة Tinc الخاصة بك إلى العميل الخاص بك والعكس صحيح.
ابدأ بفتح الجلسة الطرفية للعقدة الخاصة بك والانتقال إلى الدليل “/etc/tinc/mynetwork/hosts”:
cd /etc/tinc/mynetwork/hosts
انسخ ملف التكوين داخل هذا الدليل وانقله إلى العميل الخاص بك. في حالتي، سأستخدم scp لإرسال هذا الملف عبر ssh:
scp ./mynode YOUR-CLIENT-IP-ADDRESS:~

ملحوظة: على الرغم من أنني استخدمت scp في هذا المثال، يمكنك أيضًا نقلها يدويًا باستخدام محركات الأقراص المحمولة.
انتقل إلى جهاز العميل الخاص بك وانسخ ملف المضيفين الذي قمت بنقله للتو إلى مجلد “/etc/tinc/mynetwork/hosts” الخاص بالعميل:
sudo cp -v ~/mynode /etc/tinc/mynetwork/hosts/
بعد ذلك، قم بتشغيل scp على جانب جهاز العميل لنقل ملف المضيفين الخاص به مرة أخرى إلى العقدة الخاصة بك:
scp /etc/tinc/mynetwork/hosts/myclient YOUR-NODE-IP-ADDRESS:~

انسخ ملف المضيفين الخاص بعميلك إلى دليل المضيفين الخاص بالعقدة الخاصة بك:
sudo cp ~/myclient /etc/tinc/mynetwork/hosts/
وفي ملاحظة جانبية: هل تشعر بالقلق إزاء خصوصيتك الشخصية على الإنترنت؟ تعرف على كيفية تحسين خصوصية وأمان جهاز الكمبيوتر الذي يعمل بنظام التشغيل Linux.
بدء تشغيل شبكة Tinc Mesh
ابدأ تشغيل شبكة Tinc التي تم تكوينها بالكامل عن طريق تشغيل الأمر التالي على كل مضيف لديك:
تأكد من قدرتك على التواصل مع العقد الخاصة بك من خلال واجهة Tinc عن طريق إجراء اختبار اتصال بسيط:

وأخيرًا، قم بتمكين خدمة Tinc للتأكد من أن VPN الخاص بك سيعمل عند بدء تشغيل النظام:
sudo systemctl enable --now tinc@mynetwork.service

يعد تعلم كيفية إنشاء VPN شبكي P2P خاص بك في Linux باستخدام Tinc مجرد خطوة أولى في استكشاف هذا العالم الرائع لشبكات الكمبيوتر. قم بالتعمق في تعقيدات هذه التكنولوجيا من خلال الاطلاع على نظرة شاملة حول شبكات VPN.
مصدر الصورة: Growtika عبر Unsplash. جميع التعديلات ولقطات الشاشة بواسطة Ramces Red.