WireGuard — هل سيكون هذا أفضل شبكة VPN في المستقبل؟

WireGuard — هل سيكون هذا أفضل شبكة VPN في المستقبل؟

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

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

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

الفوائد المعلنة WireGuard مقارنة بحلول VPN الأخرى:

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

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

مبادئ العمل

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

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

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

أداء

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

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

WireGuard — هل سيكون هذا أفضل شبكة VPN في المستقبل؟

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

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

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

عملية التثبيت وصفها بالتفصيل على الموقع الرسمي ، أود أن أشير بشكل منفصل إلى الامتياز دعم 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 wg-quick@wg0.service.

على جهاز العميل ، قم بإنشاء ملف 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.

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

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

شراء استضافة موثوقة للمواقع مع حماية DDoS وخوادم VPS VDS 🔥 اشترِ استضافة مواقع ويب موثوقة مع حماية من هجمات DDoS، وخوادم VPS وVDS | ProHoster