WireGuard أم OpenVPN؟ أيهما تستضيفه ذاتيًا؟
اختر WireGuard لمعظم الخوادم ذاتية الاستضافة: إعداد العميل نحو 10 أسطر، والاتصال خلال أجزاء من الثانية. تعرّف على 4 حالات يتفوق فيها OpenVPN.
الإجابة المختصرة
المفاضلة بين WireGuard وOpenVPN لشخص واحد يشغّل خادم VPN على VPS خاص به ليست متقاربة: اختر WireGuard. فهو أصغر حجماً، ويعمل داخل نواة Linux، ويتصل في جزء من الثانية، ويتكوّن إعداد العميل العامل من نحو عشرة أسطر. يحتفظ OpenVPN بأربع وظائف فعلية، وإذا لم تكن أيٌّ منها مطلوبة لديك، فلا تحتاج إليه.
هذه الوظائف الأربع هي الخروج من شبكة لا تسمح إلا بالمنفذ TCP 443، والاتصال بجهة إصدار شهادات موجودة، ومصادقة مستخدمين مسمّين باستخدام كلمة مرور أو عامل ثانٍ، والعمل على مستوى Layer 2. يقدّم كل ما يلي الأدلة التي تستند إليها هذه التوصية، ويحدّد النقطة الدقيقة التي يبدأ عندها انطباق كل استثناء عليك.
لماذا فاز WireGuard للمستخدمين الذين يديرون خوادمهم بأنفسهم
قاعدة الشفرة صغيرة بما يكفي لقراءتها. يضم مشروع WireGuard تنفيذ البروتوكول في نحو 4,000 سطر من الشفرة. يصل OpenVPN إلى ستة أرقام عند احتساب مكتبة OpenSSL التي يعتمد عليها في كل عملية تشفير. الحجم مهم لأن كل سطر يمثل مساحة هجوم، ولأنك أنت أو المراجع لن تقرآ 100,000 سطر. يمكنك قراءة 4,000 سطر.
يعمل في النواة. يوجد WireGuard في نواة Linux الرئيسية منذ الإصدار 5.6، لذلك توفره Ubuntu 24.04 وDebian 13 من دون الحاجة إلى تجميع أي شيء. تُشفَّر الحزم في الموضع الذي توجد فيه أصلاً، داخل مساحة النواة، من دون نسخها إلى عملية في مساحة المستخدم ثم إعادتها. تحقّق من ذلك أولاً:
sudo modprobe wireguard && echo okعلى VPS يعمل عبر KVM، يطبع الأمر ok. أما في المحاكاة الافتراضية المعتمدة على الحاويات والتي تشارك نواة المضيف، مثل OpenVZ أو LXC، فيفشل الأمر مع Operation not supported، لأنك لا تستطيع تحميل وحدة في نواة لا تملكها.
لا يوجد شيء للتفاوض عليه. يستخدم WireGuard مجموعة تشفير ثابتة واحدة: ChaCha20-Poly1305 للبيانات، مع مفاتيح Curve25519. لا يوجد إصدار يمكن الرجوع إليه ولا خيار يمكن ضبطه خطأً. يتفاوض OpenVPN مع كل عميل على خوارزمية التشفير وإصدار TLS (أمان طبقة النقل)، وهذا يوفر مرونة، لكنه أيضاً موضع حدوث أخطاء الإعداد. إذا تُرك خادم مضبوطاً على data-ciphers AES-256-GCM:AES-128-CBC، فسيرجع بسلاسة إلى تشفير CBC لعميل لا يقدّم خياراً أفضل، ولن يسجل السجل أن التشفير الأضعف يمثل مشكلة. عندما يتوفر تفريغ قناة البيانات، يطبع OpenVPN ملاحظة تفيد بأن إدخال CBC عطّل التفريغ، وهذا تحذير بشأن السرعة لا بشأن الأمان.
لا يستجيب المنفذ. تُسقط حزمة WireGuard التي تفشل في اجتياز فحص مصادقة الرسالة من دون أي رد على الإطلاق، لذلك لا يستطيع nmap -sU -p 51820 التمييز بين خادم WireGuard ومنفذ يسقطه جدارك الناري بصمت: ففي الحالتين تكون النتيجة open|filtered. لا يكشف نفسه إلا المنفذ غير المصفّى الذي لا توجد عليه أي خدمة تستمع، لأن النواة ترد برسالة ICMP تفيد بأن المنفذ غير قابل للوصول، ويبلّغ nmap عن حالته باعتبارها closed. يُكمل خادم OpenVPN في وضع TCP مصافحة TCP قبل أن يقرر أنك غير مرحّب بك، وهذا يكفي لإثبات أداة الفحص أن هناك خدمة موجودة. أما OpenVPN عبر UDP باستخدام tls-crypt فهو هادئ تقريباً بالقدر نفسه، لذلك تُعد هذه حجة ضد تشغيل OpenVPN على TCP، لا ضد OpenVPN نفسه.
التجوال مجاني. يُعرَّف النظير في WireGuard بواسطة مفتاحه العام، لا بواسطة عنوانه. ينتقل حاسوبك المحمول من شبكة المنزل إلى نقطة اتصال محمولة، ويرسل مصافحة واحدة من العنوان الجديد، ثم يحدّث الخادم نقطة النهاية التي يرد عليها. لا يحدث أي اتصال من جديد، لأنه لم يكن هناك اتصال مستمر أصلاً. يستطيع OpenVPN فعل شيء مشابه باستخدام float، لكن العميل عادةً ينهي جلسة TLS كاملة ثم يعيد إنشاءها، ولذلك تكون فترة التوقف عند فتح الغطاء ملحوظة في OpenVPN ولا تظهر في WireGuard.
السرعة في 2026: تضيق الفجوة فقط مع التفريغ إلى النواة
لسنوات، كانت حجة السرعة الصادقة هي أن OpenVPN ينسخ كل حزمة إلى مساحة المستخدم، ويشفّرها هناك، ثم ينسخها مجدداً، بينما لا يغادر WireGuard النواة مطلقاً. على خادم Ubuntu 24.04 بالإعدادات الافتراضية، ما زالت هذه هي الصورة، ويتفوق WireGuard بفارق كبير. ما تغيّر في 2026 هو أن OpenVPN يستطيع الآن نقل مسار البيانات إلى النواة أيضاً، عندما تدعم النواة وإصدار OpenVPN ذلك، وأي مقارنة تتجاهل هذا الأمر أصبحت قديمة.
أُصدر OpenVPN 2.7 في فبراير 2026 مع دعم وحدة النواة ovpn في المنبع، التي أُدمجت في Linux 6.16. هذا هو DCO (تفريغ قناة البيانات): تبقى قناة التحكم في مساحة المستخدم، بينما ينتقل مسار البيانات الرئيسي إلى النواة، وهو ما يفعله WireGuard تقريباً منذ البداية. على نواة وإصدار OpenVPN حديثين بما يكفي لاستخدامه، يصبح معدل النقل من الفئة نفسها، وليس من فئة مختلفة. تحقّق مما تستخدمه فعلياً:
uname -r
openvpn --version | head -n 1
modinfo ovpn 2>/dev/null | head -n 3اعتباراً من أكتوبر 2026، يوفّر Ubuntu 24.04 LTS في الإصدارات القياسية OpenVPN 2.6، وليس 2.7، وتحتاج وحدة ovpn إلى الإصدار 2.7. في ذلك الإصدار، تحصل على التفريغ فقط من خلال حزمة openvpn-dco-dkms الأقدم، التي تبني وحدة خارج شجرة النواة مقابل النواة قيد التشغيل، ولذلك تعيد بناءها عند كل ترقية للنواة. هذه خطوة إضافية لا يحتاج إليها WireGuard. يوفّر Ubuntu 26.04 LTS الإصدار OpenVPN 2.7.0 ونواة Linux 7.0، وكلاهما حديث بما يكفي لدعم ovpn، ولذلك يكون سطر modinfo أعلاه هو السطر الذي يجب التحقق منه في ذلك الإصدار.
اقرأ التفاصيل الدقيقة المتعلقة بـ DCO قبل اعتباره سبباً للاستمرار في استخدام OpenVPN. فهو يدعم الأنفاق من الطبقة 3 فقط، ولا يقبل إلا شفرات AEAD (تشفير موثّق مع بيانات مرتبطة: AES-GCM أو ChaCha20-Poly1305)، ولا يدعم الضغط، ويعمل على الخادم فقط مع topology subnet. كل قيد من هذه القيود يزيل جزءاً من المرونة التي كانت حجة OpenVPN الأساسية في الأصل. إن OpenVPN السريع هو OpenVPN مُعدّ ليشبه WireGuard.
لا تثق في أي رقم معلن لمعدل النقل، بما في ذلك الأرقام الواردة في هذه الصفحة. غالباً ما يكون الحد الأقصى على VPS مرتبطاً بحصة CPU أو حصة الشبكة، وليس بالبروتوكول. قِس الأداء بنفسك باستخدام iperf3 أثناء تشغيله عبر النفق، ثم أعد القياس خارجه، وقارن بين النتيجتين.
متى يظل OpenVPN مفيداً
تحتاج إلى الخروج عبر منفذ TCP 443. يعمل WireGuard عبر UDP فقط، وهذا مقصود، ولا توجد طريقة تشغيل عبر TCP قادمة. ستمرر شبكة فندق تفرض التصفية حسب رقم المنفذ فقط عادةً OpenVPN عند إعداده باستخدام proto tcp-server وport 443. لا تخلط بين ذلك وبين التخفي: يستخدم OpenVPN عبر TCP تأطيراً خاصاً للحزم بدلاً من جلسة TLS عادية، لذلك يظل جدار ناري أو وكيل مؤسسي يفحص HTTPS أو ينهيه قادراً على التعرّف إليه وحظره. يحتاج WireGuard إلى غلاف مثل wstunnel أو udp2raw لعبور الشبكة نفسها، ما يعني عملية إضافية يجب تشغيلها وتحديثها باستمرار. انتبه إلى التعارض: إذا كان خادم ويب يشغل TCP 443 على عنوان IP نفسه، فيجب نقل أحدهما.
تستخدم بالفعل مرجعاً لإصدار الشهادات. يصادق OpenVPN باستخدام شهادات X.509، لذلك يندمج في بنية PKI (البنية التحتية للمفاتيح العامة) التي تشغّلها بالفعل. تنتهي صلاحية الشهادات تلقائياً، ويمكنك إلغاء شهادة بإضافتها إلى قائمة إبطال الشهادات التي يقرأها الخادم عبر crl-verify. لا يستخدم WireGuard شهادات، ولا يفرض انتهاء صلاحية، ولا يملك قائمة إبطال. لإزالة نظير، تعدّل إعداد الخادم ثم تعيد تحميله. يكون ذلك مناسباً مع عشرة نظراء. أما مع أربعمائة نظير ووجود متطلبات تدقيق، فإن نموذج الشهادات يوفّر لك فائدة تشغيلية حقيقية.
تحتاج إلى مستخدمين بأسماء، وليس إلى مفاتيح فقط. يستطيع OpenVPN تفويض المصادقة إلى نظام خارجي باستخدام auth-user-pass-verify أو إضافة مثل openvpn-plugin-auth-pam.so، وهي الطريقة المستخدمة لإضافة LDAP أو عامل مصادقة ثانٍ يعتمد على كلمة مرور لمرة واحدة. لا يملك WireGuard أي مفهوم للمستخدم على الإطلاق. فإما أن يكون المفتاح موجوداً في الإعداد أو لا يكون موجوداً. إذا كان مطلبك هو أن تدخل "Sara" رمزاً من هاتفها، فلا يستطيع WireGuard التعبير عن ذلك بمفرده.
تحتاج إلى Layer 2، أو إلى عميل لنظام قديم جداً. يعمل OpenVPN مع dev tap على تمرير إطارات Ethernet، وهذا مهم لبروتوكولات البث ولألعاب LAN القديمة. يعمل WireGuard على Layer 3 فقط، وسيظل كذلك دائماً. كما يوفّر OpenVPN عملاء على أجهزة وأنظمة تشغيل لن يتوفر لها تطبيق WireGuard أبداً. تتراجع أهمية هذين السببين، وdev tap غير متوافق مع DCO، لذلك ستستخدم المسار الأبطأ عند اختيار الجسر.
ما الذي يكلّفك به الإعدادان فعليًا
هوية WireGuard هي أمر واحد. وتهم الأقواس لأنها تضبط وضع الملف قبل إنشاء المفتاح:
(umask 077; wg genkey > private.key)
wg pubkey < private.key > public.keyالمكافئ في OpenVPN هو سلطة شهادات ستظل مسؤولًا عنها طوال فترة تشغيل VPN:
sudo apt install -y easy-rsa
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-req server nopass
./easyrsa sign-req server serverلا توجد مبالغة في أي من القائمتين. تمنحك سلطة الشهادات صلاحية الانتهاء وإمكانية الإبطال. لكنها تتطلب مفتاحًا خاصًا يجب حمايته لسنوات، وتجديدًا يجب أن تتذكره، وإعادة بناء إذا فقدته. إذا لم تكن تستخدم ما توفره، فأنت تدفع مقابل لا شيء. يرد إجراء WireGuard الكامل، بما في ذلك إعادة التوجيه وNAT (ترجمة عناوين الشبكة) وإخفاقات المصافحة التي قد تهدر فترة بعد الظهر، في الدليل الخاص باستضافة VPN باستخدام WireGuard على VPS الخاص بك.
ما الذي يحتاجه كل منهما من جدار الحماية
يحتاج WireGuard إلى قاعدة واردة واحدة فقط، لبروتوكول UDP على المنفذ الموجود في ListenPort:
sudo ufw allow 51820/udp
sudo ufw status verboseيحتاج OpenVPN إلى UDP على المنفذ 1194 افتراضيًا، أو إلى TCP على المنفذ 443 إذا اخترت هذا المسار. بعد ذلك، يحتاج كلاهما إلى تفعيل إعادة توجيه IP وإضافة قاعدة NAT للمصدر، لأن نظام Linux يسقط الحزم غير الموجّهة إليه. هذا الجزء متطابق في البروتوكولين، وهو سبب معظم البلاغات من نوع «يتصل النفق، لكن لا يوجد إنترنت». إذا كان ufw جديدًا عليك، فابدأ بقراءة أساسيات جدار حماية ufw على VPS، وتذكّر أن معظم موفري الخدمة يشغّلون جدار حماية شبكيًا ثانيًا في لوحة التحكم لديهم: لا تفيد القاعدة التي أضفتها على الخادم إذا لم تصل الحزمة إلى الخادم أصلًا. ويساعدك فهم ماهية المنفذ وكيف يستمع Linux عليه على إجراء كلا الفحصين بسرعة أكبر.
كيفية الاختيار في فقرة واحدة
شغّل WireGuard ما لم تتمكن من تحديد الشيء الذي لا يستطيع تنفيذه لك. إذا كنت تحتاج إلى TCP 443 لتجاوز شبكة مقيّدة، فشغّل OpenVPN عليها، وفكّر في تشغيلهما معًا: فهما يستخدمان منافذ مختلفة ويمكنهما العمل على خادم واحد دون تعارض. إذا كنت تحتاج إلى حسابات لكل مستخدم أو إلى عامل مصادقة ثانٍ، فلا تحاول فرض ذلك على WireGuard. أضف بدلًا من ذلك طبقة هوية فوقه. يتعامل خادم تحكم Headscale مستضاف ذاتيًا مع WireGuard في الطبقة الأساسية، ويضيف نموذج الحسابات وتوزيع المفاتيح والموافقة على الأجهزة، وهي أمور يتركها WireGuard العادي لك.
الترحيل من OpenVPN دون انقطاع
لا توجد عملية تحويل. لا تتحول بنية PKI الخاصة بـ OpenVPN إلى مفاتيح WireGuard، لأن WireGuard لا يستخدم شهادات يمكن تحويلها. يحصل كل عميل على زوج مفاتيح جديد، ويُنشأ بالطريقة نفسها المستخدمة لإنشاء زوج مفاتيح الخادم.
نفّذ الترحيل بالتوازي بدلًا من التبديل المباشر. يعمل WireGuard على UDP 51820 وOpenVPN على 1194 في الجهاز نفسه وفي الوقت نفسه. لذلك شغّل wg0، وتحقق منه باستخدام sudo wg show عبر عرض latest handshake حديث، ثم انقل العملاء واحدًا تلو الآخر. عندما تتوقف قائمة نظراء OpenVPN عن التغير، أوقف الخدمة باستخدام sudo systemctl disable --now openvpn-server@server. احتفظ بملفات CA حتى تتأكد، لأن إعادة إنشاء عميل أُلغيت شهادته باستخدام CA حذفتها غير ممكنة.
هناك أمر واحد لا ينتقل فعلًا: حسابات أسماء المستخدمين وكلمات المرور، وسجل الإلغاء المرتبط بها. حدّد مكان حفظ هذه البيانات قبل إيقاف الخادم القديم، وليس بعد ذلك.
FAQ
هل WireGuard أسرع من OpenVPN؟
نعم، على خادم Ubuntu 24.04 بالإعدادات الافتراضية، وبفارق كبير، لأن WireGuard يشفّر البيانات داخل النواة، بينما يمرّر OpenVPN 2.6 كل حزمة عبر عملية في مساحة المستخدم. مع OpenVPN 2.7 ووحدة النواة ovpn من Linux 6.16، يصبح مسار البيانات داخل النواة أيضاً، ويصبح البرنامجان ضمن الفئة نفسها. قِس الأداء على نفقك باستخدام iperf3 بدلاً من الاعتماد على رقم من مدونة، لأن الحد على VPS يكون عادةً ناتجاً عن وحدة المعالجة المركزية أو حصة النطاق الترددي.
هل يمكن لـ WireGuard العمل عبر منفذ TCP 443؟
ليس بمفرده. صُمّم WireGuard للعمل عبر UDP فقط، ولا توجد خطة لإضافة وضع TCP. لعبور شبكة تسمح فقط بـ TCP 443، عليك تغليفه داخل نفق مثل wstunnel أو udp2raw، ما يضيف عملية يجب تشغيلها وتحديثها على الطرفين. إذا كان هذا القيد جزءاً من بيئة عملك المعتادة، فإن OpenVPN مع proto tcp-server وport 443 هو الخيار الأبسط على شبكة تحظر الاتصالات حسب المنفذ فقط، مع أن الوكيل الذي يفحص HTTPS قد يكتشفه ويمنعه.
هل أصبح OpenVPN غير آمن الآن؟
لا. يُعد OpenVPN الحالي، مع خوارزمية تشفير AEAD مثل AES-256-GCM وتفعيل tls-crypt، شبكة VPN موثوقة. يستند تفضيل WireGuard إلى أمر آخر: يحتوي OpenVPN على قدر أكبر بكثير من التعليمات البرمجية والخيارات، ولذلك يتيح للمسؤول المرهق طرقاً أكثر بكثير لإعداده بصورة خاطئة. قلة الخيارات تعني أخطاء أقل.
أيهما أختار لشبكة VPN شخصية على VPS؟
WireGuard. زوج مفاتيح واحد لكل جهاز، وملف إعداد واحد يتكون من نحو عشرة أسطر، ومنفذ UDP واحد مفتوح، ومصافحة تكتمل قبل أن تلاحظ أنها بدأت. اختر OpenVPN فقط إذا كنت تتصل بانتظام من شبكات تحظر UDP، أو إذا كان عليك الاندماج مع مرجع تصديق أو دليل مستخدم موجود مسبقاً.