هل WireGuard هو VPN الرائع في المستقبل؟

هل WireGuard هو VPN الرائع في المستقبل؟

لقد حان الوقت عندما لم تعد VPN أداة غريبة لمسؤولي النظام الملتحين. لدى المستخدمين مهام مختلفة ، لكن الحقيقة هي أن VPN أصبحت ضرورية للجميع.

تكمن مشكلة حلول VPN الحالية في صعوبة تهيئتها بشكل صحيح ، ومكلفة صيانتها ، ومليئة بالشفرات القديمة المشكوك فيها.

قبل بضع سنوات ، قرر اختصاصي أمن المعلومات الكندي جيسون أ. دونينفيلد أن هذا يكفي وبدأ العمل عليه WireGuard. تستعد WireGuard الآن لتضمينها في Linux kernel وقد تلقت حتى تقديمات من لينوس تورفالدس و مجلس الشيوخ الأمريكي.

المزايا المزعومة لـ WireGuard على حلول VPN الأخرى:

  • سهل الاستخدام.
  • يستخدم التشفير الحديث: إطار عمل بروتوكول الضوضاء ، Curve25519 ، ChaCha20 ، Poly1305 ، BLAKE2 ، SipHash24 ، HKDF ، إلخ.
  • كود مضغوط قابل للقراءة ، أسهل في البحث عن الثغرات الأمنية.
  • أداء عالي.
  • واضح ومصنوع تخصيص.

هل تم العثور على الرصاصة الفضية؟ هل حان الوقت لدفن OpenVPN و IPSec؟ قررت التعامل مع هذا ، لكنني فعلت ذلك في نفس الوقت البرنامج النصي للتثبيت التلقائي لخادم VPN الشخصي.

مبادئ العمل

يمكن وصف مبادئ العملية على النحو التالي:

  • يتم إنشاء واجهة WireGuard ، ويتم تخصيص مفتاح خاص وعنوان IP لها. يتم تحميل إعدادات أقرانهم الآخرين: مفاتيحهم العامة وعناوين IP وما إلى ذلك.
  • يتم تغليف جميع حزم IP التي تصل إلى واجهة WireGuard في UDP و سلمت بأمان قراصنة آخرون.
  • يقوم العملاء بتعيين عنوان IP العام للخادم في الإعدادات. يتعرف الخادم تلقائيًا على العناوين الخارجية للعملاء عندما تأتي البيانات المصادق عليها بشكل صحيح منهم.
  • يمكن للخادم تغيير عنوان IP العام دون مقاطعة العمل. في الوقت نفسه ، سيرسل إشعارًا إلى العملاء المتصلين وسيقومون بتحديث التكوين الخاص بهم على الفور.
  • يتم استخدام مفهوم التوجيه توجيه Cryptokey. يستقبل WireGuard الحزم ويرسلها بناءً على المفتاح العام للنظير. عندما يقوم الخادم بفك تشفير حزمة مصادق عليها بشكل صحيح ، يتم تحديد حقل src الخاص بها. إذا كان يتطابق مع التكوين allowed-ips نظير مصدق عليه ، ثم يتم استلام الحزمة بواسطة واجهة WireGuard. عند إرسال حزمة صادرة ، يحدث الإجراء المقابل: يتم أخذ حقل dst للحزمة ، وبناءً عليه ، يتم تحديد النظير المقابل ، ويتم توقيع الحزمة بمفتاحها الخاص ، وتشفيرها بمفتاح النظير وإرسالها إلى جهاز التحكم عن بُعد نقطة النهاية.

يأخذ المنطق الأساسي لـ WireGuard أقل من 4 آلاف سطر من التعليمات البرمجية ، بينما يحتوي OpenVPN و IPSec على مئات الآلاف من السطور. لدعم خوارزميات التشفير الحديثة ، يُقترح تضمين واجهة برمجة تطبيقات تشفير جديدة في Linux kernel. زنك. في الوقت الحالي ، هناك نقاش حول مدى جودة هذه الفكرة.

أداء

ستكون ميزة الأداء القصوى (مقارنة بـ OpenVPN و IPSec) ملحوظة على أنظمة Linux ، حيث يتم تنفيذ WireGuard كوحدة kernel هناك. بالإضافة إلى ذلك ، يتم دعم macOS و Android و iOS و FreeBSD و OpenBSD ، لكنهم يقومون بتشغيل WireGuard في مساحة المستخدمين مع كل ما يترتب على ذلك من آثار على الأداء. من المتوقع إضافة دعم Windows في المستقبل القريب.

نتائج المعيار مع الموقع الرسمي:

هل WireGuard هو VPN الرائع في المستقبل؟

تجربتي في استخدام

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

لذا ، فإن WireGuard ، من وجهة نظري ، مثالية بشكل عام للمستخدم. يتم اتخاذ جميع القرارات منخفضة المستوى في المواصفات ، وبالتالي فإن عملية إعداد بنية VPN نموذجية تستغرق بضع دقائق فقط. Nafakapit في التكوين يكاد يكون مستحيلاً.

عملية التثبيت وصفها بالتفصيل على الموقع الرسمي ، أود أن أشير بشكل منفصل إلى الامتياز دعم OpenWRT.

يتم إنشاء مفاتيح التشفير بواسطة الأداة المساعدة wg:

SERVER_PRIVKEY=$( wg genkey )
SERVER_PUBKEY=$( echo $SERVER_PRIVKEY | wg pubkey )
CLIENT_PRIVKEY=$( wg genkey )
CLIENT_PUBKEY=$( echo $CLIENT_PRIVKEY | wg pubkey )

بعد ذلك ، تحتاج إلى إنشاء تكوين خادم /etc/wireguard/wg0.conf بالمحتوى التالي:

[Interface]
Address = 10.9.0.1/24
PrivateKey = $SERVER_PRIVKEY
[Peer]
PublicKey = $CLIENT_PUBKEY
AllowedIPs = 10.9.0.2/32

ورفع النفق ببرنامج نصي wg-quick:

sudo wg-quick up /etc/wireguard/wg0.conf

في الأنظمة التي تحتوي على systemd ، يمكنك استخدام هذا بدلاً من ذلك sudo systemctl start [email protected].

على جهاز العميل ، قم بإنشاء ملف config /etc/wireguard/wg0.conf:

[Interface]
PrivateKey = $CLIENT_PRIVKEY
Address = 10.9.0.2/24
[Peer]
PublicKey = $SERVER_PUBKEY
AllowedIPs = 0.0.0.0/0
Endpoint = 1.2.3.4:51820 # Внешний IP сервера
PersistentKeepalive = 25 

وبنفس الطريقة ارفع النفق:

sudo wg-quick up /etc/wireguard/wg0.conf

يبقى تكوين NAT على الخادم حتى يتمكن العملاء من الوصول إلى الإنترنت ، وقد انتهيت!

تم تحقيق سهولة الاستخدام والاكتناز لقاعدة الشفرة من خلال التخلص من وظيفة التوزيع الرئيسية. لا يوجد نظام معقد للشهادات وكل هذا الرعب المؤسسي ومفاتيح التشفير القصيرة موزعة تقريبًا مثل مفاتيح SSH. لكن هذا يثير مشكلة: لن يكون تطبيق WireGuard سهلاً في بعض الشبكات الحالية.

من بين أوجه القصور ، تجدر الإشارة إلى أن WireGuard لن يعمل من خلال وكيل HTTP ، حيث لا يوجد سوى بروتوكول UDP كوسيلة نقل. السؤال الذي يطرح نفسه ، هل سيكون من الممكن التعتيم على البروتوكول؟ بالطبع ، هذه ليست مهمة مباشرة من VPN ، ولكن بالنسبة لـ OpenVPN ، على سبيل المثال ، هناك طرق لإخفاء أنفسهم على أنهم HTTPS ، مما يساعد سكان البلدان الشمولية على استخدام الإنترنت بشكل كامل.

النتائج

باختصار ، هذا مشروع مثير للاهتمام وواعد ، يمكنك استخدامه بالفعل على الخوادم الشخصية. ما هو الربح؟ أداء عالٍ على أنظمة Linux ، سهولة الإعداد والصيانة ، قاعدة كود مضغوطة وقابلة للقراءة. ومع ذلك ، من السابق لأوانه التسرع في نقل البنية التحتية المعقدة إلى WireGuard ، الأمر يستحق انتظار التضمين في Linux kernel.

لتوفير وقتي (ووقتك) ، قمت بالتطوير المثبت التلقائي wireguard. باستخدامه ، يمكنك إعداد VPN شخصي لنفسك ولأصدقائك دون حتى فهم أي شيء عنها.

المصدر: www.habr.com

إضافة تعليق