كيفية إعداد VPN كامل الند للند بين خوادم

إذا قمت بنشر خوادم متعددة على DigitalOcean أو Vultr ، فمن المحتمل أن تعرف أنه يمكن تزويد كل خادم بعنوان IP خاص مرتبط بالشبكة الخاصة بمركز البيانات. هذا شيء عظيم ، لأنه يسمح بنشر الخدمات الموزعة (مثل قواعد البيانات) التي تتواصل مع بعضها البعض مع زمن وصول قريب من الصفر.

تتمثل "المشكلة" في مشاركة الشبكة الخاصة: وهذا يعني أنه يوجد في الشبكة الفرعية نفسها المئات وربما الآلاف من الخوادم الأخرى. لذا في مرحلة ما ، ستحتاج إلى إعداد شبكة خاصة افتراضية (VPN) بين الخوادم الخاصة بك ، حتى يتمكنوا من الاتصال ببعضهم البعض باستخدام عناوين IP خاصة مخصصة (مثل 10.0.1.x) من خلال شبكة مشفرة .

لماذا يجب عليك استخدام vpncloud.rs

يعد OpenVPN أحد أكثر الحلول شيوعًا لإعداد VPN ، ولكن هذا ليس ما سأغطيه اليوم. في BotFactory لدينا أكثر من 10 خوادم مستضافة على DigitalOcean ، وأردنا طريقة سهلة نسبيًا لتشفير حركة المرور بين خوادمنا دون قضاء ساعات وساعات في تكوين الشبكة. أردنا شيئًا يكتشف تلقائيًا الخوادم الجديدة والمزالة. لهذا السبب اخترنا vpncloud.rs. فيما يلي بعض النقاط البارزة في vpncloud.rs:

  • يسمح بربط VPN بواجهة مخصصة ، بحيث يمكنك إنشاء شبكة مثل 10.0.x.x / 16 مع جميع مضيفيك
  • يقوم بإنشاء شبكة VPN نظير إلى نظير. هذا يعني أن كل مضيف يحتاج إلى عنوان IP لخادم آخر (داخل VPN) لاكتشاف كل العقد تلقائيًا
  • النفق مشفر بالطبع ، ويدعم AES-256
  • إعادة الاتصال التلقائي عندما يتم فقد الاتصال أو يصبح النظير غير متاح مؤقتًا
  • أداء رائع
  • تتوفر حزمة .deb مضمنة مسبقًا
  • إنه مصدر مفتوح
  • من السهل للغاية التهيئة ، ستندهش
  • إنه مستقر. لقد تم تشغيل vpncloud.rs على 10 خوادم لمدة عام تقريبًا ، ولم نواجه أي عطل أو مشكلة. انها تعمل فقط.

سأقوم الآن بشرح كيفية تكوين شبكة VPN P2P شبكة أساسية مع vpncloud.rs.

لنذهب

أولاً ، ستحتاج إلى تثبيت vpncloud.rs على كل خادم من الخوادم التي تريد تضمينها في الشبكة الافتراضية.

أفترض أن الخوادم تشغل Ubuntu ، ولكن يجب أن تكون الخطوات التالية هي نفسها لجميع توزيعات Linux المستندة إلى دبيان. إذا كنت تستخدم نوعًا مختلفًا من توزيع Linux ، فاتبع الخطوات الموجودة في الملف التمهيدي للتجميع.

قم بتشغيل هذه الأوامر:

wget https://github.com/dswd/vpncloud.rs/releases/download/v0.8.1/vpncloud_0.8.1_amd64.deb
sudo dpkg -i vpncloud_0.8.1_amd64.deb

سيتم إنشاء خدمة systemd تلقائيًا ، جنبًا إلى جنب مع ملف تكوين العينة.

ترتيب

يشبه ملف التكوين هذا ويتم وضعه في /etc/vpncloud/example.net.disabled.

أول شيء يجب عليك فعله هو إنشاء نسخة من ملف العينة.

sudo cp /etc/vpncloud/example.net.disabled /etc/vpncloud/myvpn.net
sudo nano /etc/vpncloud/myvpn.net

الآن دعونا نلقي نظرة على محتوى ملف التكوين. يجب إجراء التغييرات التي أصفها هنا على جميع الخوادم التي قمت بتثبيت VPN فيها.

كما قلت سابقًا ، تنشئ vpncloud.rs شبكة كاملة ، ولكن للقيام بذلك لا يحتاج إلى عناوين IP لجميع الخوادم. في التكوين الخاص بي ، قمت بتكوين 3 أقران ، وهي عناوين IP لخوادم قاعدة البيانات 3 (يجب ألا تكون غير متصلة بالإنترنت في نفس الوقت). كل مثيل VPN قادر على استخدام هؤلاء الأقران لإنشاء اتصالات مع جميع المضيفين الآخرين في الشبكة الافتراضية.

الأقران

ما يلي هو تكوين عينة للأقران.

الأقران:
  - privateip1: 3210
  - privateip2: 3210

على الرغم من أنه من الممكن وضع عناوين IP العامة للخوادم في التكوين ، إلا أنه يوصى باستخدام عناوين IP الخاصة بالشبكة الداخلية (المقدمة من DigitalOcean لـ eth1 ، على سبيل المثال) ، من أجل أداء أفضل ووقت وصول أقل. يمكنك أيضًا استخدام أسماء المضيفين ، أو حتى وضع أسماء مضيف "وهمية" يمكنك تعيينها بعد ذلك باستخدام عناوين IP الخاصة في ملف / etc / hosts.

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

مفتاح مشترك

بعد ذلك ، إليك نموذج تكوين لخيار Shared_key. يجب تعيين نفس المفتاح على جميع الخوادم.

Shared_key: "nT4gAGSP! S9! 2Rjb9٪ h * gdVN * 8NszP"

(* لا تستخدم هذا المفتاح *)

هذا هو المفتاح الذي سيتم استخدامه لاشتقاق المفتاح المتماثل الذي سيتم استخدامه مع AES-256 لتشفير حركة مرور VPN. تتمثل ميزة استخدام مفتاح مشترك في أنك لست بحاجة إلى نقل المفاتيح المعقدة بين الخوادم. إنها تشبه كلمة المرور ، ويجب أن تكون سلسلة أحرف ASCII. في حالتي ، يكون المفتاح المشترك عبارة عن سلسلة عشوائية تتكون من 30 حرفًا من أحرف ASCII.

التشفير

بشكل افتراضي ، سيستخدم vpncloud.rs ChaCha20 كخوارزمية التشفير. على خوادم DigitalOcean ، يتم دعم AES-256 بواسطة وحدات المعالجة المركزية (CPU) حتى تتمكن من ضبط خوارزمية التشفير / فك التشفير على AES-256 للحصول على أداء أفضل.

التشفير: aes256

واجهة افتراضية

أخيرًا ، يجب عليك تحديد خيارات ifup و ifdown ، والتي تحدد الأوامر التي يجب تشغيلها بواسطة vpncloud.rs عند إحضار (وخفض) واجهة الشبكة الخاصة بشبكة VPN.

ifup: "ifconfig $ IFNAME 10.0.1.1/8 mtu 1400"
ifdown: "ifconfig $ IFNAME down"

وفقًا لعنوان IP (في تدوين CIDR) الذي تحدده في أمر ifup ، سوف يفهم نظام التشغيل تلقائيًا أنك ستقوم بإنشاء شبكة يكون مضيفوها ، في هذه الحالة ، في الشبكة الفرعية 10.x.x.x.

في حالتي ، قمت "بتجميع" الخوادم عن طريق تغيير الثمانية الثالثة من العنوان ، لتحقيق تكوين مثل هذا:

  • 10.0.1.x محفوظة لخوادم قاعدة البيانات
  • 10.0.2.x محفوظة لخوادم الويب
  • ...

تشغيل الصبي تشغيل

بعد تطبيق التكوين أعلاه على جميع الخوادم ، يمكنك بدء تشغيل خدمة VPN.

sudo خدمة vpncloud @ myvpn البداية

حيث يجب استبدال myvpn باسم ملف التكوين (باستثناء ملحق .net).

تحقق من وجود أخطاء في حالة خدمة sudo vpncloud @ myvpn ، ثم حاول اختبار اتصال جميع الخوادم: على كل خادم ، ping 10.0.1.1 ، 10.0.1.2 ، وما إلى ذلك ، اعتمادًا على التكوين لديك. يجب أن تعمل جميعها مع زمن انتقال قريب من الصفر.

أخيرًا ، لا تنس تمكين الخدمة ، بحيث يتم تشغيلها تلقائيًا عند بدء تشغيل النظام.

sudo systemctl تمكين vpncloud @ myvpn

تسمية المضيفين

لتسهيل التعرف على مضيفي VPN ، يمكنك تعيين عناوين IP لأسماء المضيفين ، وإضافة شيء مثل الأسطر التالية إلى ملف / etc / hosts على كل خادم.

10.0.1.1 db1.vpn
10.0.1.2 db2.vpn

ألم تكن بهذه السهولة؟

إذا وجدت هذه المقالة مفيدة ، يرجى التصفيق ومشاركة :)

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

أيضًا ، ألق نظرة على vpncloud.rs wiki على GitHub إذا كنت مهتمًا بتعلم جوانب أخرى من VPN.