كيفية إعداد خادم VPN من نوع WireGuard Point-to-Site على نظام Debian 12

يُعدّ اتصال VPN من نوع نقطة إلى موقع باستخدام WireGuard على نظام Debian 12 (Bookworm) وسيلة عملية لتمكين أجهزة الكمبيوتر المحمولة والهواتف ومحطات العمل البعيدة من الوصول إلى خادم أو توجيه حركة البيانات عبره. تجدر الإشارة أولًا إلى نقطة مهمة: لا يحتوي WireGuard على "وضع خادم" خاص. كل مشارك هو نظير. في تصميم نقطة إلى موقع، يعمل مضيف Debian واحد كمركز اتصال مستقر ومتاح للجميع، ويحصل كل جهاز بعيد على زوج مفاتيح وعنوان نفق خاص به.

يستخدم هذا الدليل أدوات WireGuard المدمجة في نظام Debian wg-quick، وتوجيه IPv4، وnftables. ويفترض أن خادم Debian لديه صلاحيات الجذر أو sudo، وأن منفذ UDP هذا 51820متاح له. إذا كان الخادم موصولاً بجهاز توجيه منزلي أو مكتبي، فيجب عليك توجيه منفذ UDP هذا إلى مضيف Debian. إذا كان مزود خدمة الإنترنت يستخدم NAT من فئة مزود الخدمة (CGNAT)، فقد لا يكون توجيه منفذ جهاز التوجيه العادي كافيًا؛ تأكد من أن لديك عنوان IP عامًا متاحًا قبل استكشاف أخطاء WireGuard وإصلاحها.

ماذا سيفعل هذا التكوين؟

يستخدم مثال VPN هذا بروتوكول WireGuard 10.8.0.0/24. الخادم هو 10.8.0.1، والعميل الأول هو 10.8.0.2. يمكن تهيئة العميل إما كشبكة VPN كاملة النفق، حيث يخرج مرور بيانات الإنترنت IPv4 عبر خادم Debian، أو كشبكة VPN مجزأة النفق، حيث تستخدم شبكات خاصة محددة فقط بروتوكول WireGuard.

تؤكد وثائق WireGuard الخاصة بنظام Debian توفر WireGuard ضمن حزم التوزيع، بينما يوثق دليل البدء السريع الرسمي لـ WireGuard عملية إنشاء المفاتيح، wg-quickوسلوك الاحتفاظ بالاتصال المستمر الاختياري. راجع وثائق WireGuard الخاصة بنظام Debian ، ودليل البدء السريع الرسمي لـ WireGuard ، وصفحة دليل wg-quick الخاصة بنظام Debian .

الخطوة 1: تثبيت WireGuard و nftables

قم بتحديث بيانات تعريف الحزمة، ثم قم بتثبيت WireGuard و nftables:

sudo apt update
sudo apt install wireguard nftables

من المفاهيم الخاطئة الشائعة أن دبيان 12 تحتاج إلى وحدة نواة WireGuard خارجية. هذا غير صحيح. فـ WireGuard موجودة في نواة لينكس منذ سنوات؛ وتوفر حزم دبيان أدوات إدارة مساحة المستخدم التي تحتاجها. الحل: استخدم حزم دبيان بدلاً من تنزيل برنامج تثبيت غير موثوق.

تثبيت حزمتي WireGuard و nftables باستخدام apt في طرفية دبيان
قم بتثبيت WireGuard و nftables من مستودعات حزم Debian قبل إنشاء تكوين النفق.

الخطوة الثانية: إنشاء زوج مفاتيح الخادم

أنشئ الملفات الرئيسية بصلاحيات مقيدة:

sudo -i
install -d -m 700 /etc/wireguard
umask 077
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
chmod 600 /etc/wireguard/server_private.key
cat /etc/wireguard/server_public.key

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

طرفية دبيان تعرض أوامر إنشاء مفتاح WireGuard ومفتاحًا عامًا مشتقًا
قم بإنشاء المفتاح الخاص لـ WireGuard الخاص بخادم Debian واستخرج مفتاحه العام أثناء استخدام أذونات الملفات المقيدة.

الخطوة 3: تفعيل إعادة توجيه IPv4

قد ينجح إنشاء نفق VPN بينما لا يزال توجيه حركة البيانات يفشل. والسبب هو أن توجيه عناوين IP في نظام Linux هو إعداد منفصل عن إعدادات WireGuard في نواة النظام. أنشئ ملف sysctl دائمًا.

echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system
sysctl net.ipv4.ip_forward

يجب أن يُظهر الأمر الأخير قيمةً net.ipv4.ip_forward = 1. تُعرّف وثائق نواة دبيان ip_forwardهذا الخيار بأنه المُبدِّل الذي يُفعِّل إعادة توجيه حزم IPv4. الإجراء: تحقق من هذه القيمة صراحةً بدلاً من افتراض أن واجهة النفق تُفعِّل التوجيه تلقائيًا. راجع دليل دبيان ip(7) ووثائق sysctl.conf .

يعرض طرفية دبيان قيمة net.ipv4.ip_forward مضبوطة على 1 في ملف تكوين sysctl
قم بتمكين إعادة توجيه IPv4 حتى يتمكن نظام Debian من توجيه الحزم بين واجهة WireGuard والشبكات الأخرى.

الخطوة الرابعة: إنشاء إعدادات الخادم

اقرأ المفتاح الخاص بالخادم، ثم أنشئ /etc/wireguard/wg0.conf:

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY

[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32

ثم قم بحماية الملف:

sudo chmod 600 /etc/wireguard/wg0.conf

AllowedIPsيُساء فهمها غالبًا على أنها مجرد قائمة سماح على غرار جدار الحماية. لكنها في الواقع تتحكم أيضًا في التوجيه. على الخادم، 10.8.0.2/32يُخبر تعيين عنوان IP لهذا النظير برنامج WireGuard بأن الحزم الخاصة بعنوان النفق هذا تحديدًا تنتمي إلى هذا العميل. امنح كل عميل عنوانًا فريدًا ونطاقًا منفصلاً [Peer].

خيار آخر مفيد هو حذف هذا الخيار SaveConfig = trueعند إدارة هذا الملف يدويًا. باستخدام هذا الخيار SaveConfig، wg-quickيمكن إعادة كتابة الحالة الحالية إلى ملف الإعدادات عند إيقاف التشغيل، مما قد يؤدي إلى استبدال التعديلات اليدوية. الإجراء: احتفظ بالملف بصيغة تعريفية إلا إذا كنت ترغب تحديدًا في حفظ الحالة الحالية.

طرفية دبيان تعرض إعدادات خادم wg0.conf مع واجهة WireGuard وجهاز نظير واحد
قم بإنشاء ملف wg0.conf على جانب الخادم مع عنوان النفق، ومنفذ استماع UDP، والمفتاح الخاص للخادم، ونظير عميل واحد.

الخطوة 5: تكوين إخفاء جداول nftables

إذا كان ينبغي على عملاء النفق الكامل الوصول إلى الإنترنت عبر خادم دبيان، فإن أسهل طريقة هي إخفاء عنوان IPv4. أولاً، حدد واجهة الخادم الصادرة:

ip route get 1.1.1.1

ابحث عن الواجهة بعد dev، مثل eth0، ens3أو enp1s0. لا تفترض أنها دائماً eth0.

إذا كنت تقوم بالفعل بصيانة ملف /etc/nftables.conf، فقم بدمج جدول NAT التالي في مجموعة القواعد الحالية بدلاً من استبدال الملف:

table ip wireguard-nat {
    chain postrouting {
        type nat hook postrouting priority 100; policy accept;
        oifname "eth0" ip saddr 10.8.0.0/24 masquerade
    }
}

استبدلها eth0بالواجهة الصادرة الفعلية. تحقق من صحتها قبل التحميل:

sudo nft -c -f /etc/nftables.conf
sudo systemctl enable --now nftables
sudo nft list ruleset

لا يُعدّ NAT شرطًا أساسيًا لبروتوكول WireGuard. إذا كانت شبكة LAN الوجهة تحتوي بالفعل على مسار عودة 10.8.0.0/24، فيمكن الوصول الموجّه دون الحاجة إلى إخفاء عنوان IP. يُعدّ NAT مفيدًا بشكل أساسي عندما تريد أن يستخدم العملاء البعيدون مسار الإنترنت الحالي للخادم، ولا تتحكّم في مسارات العودة في أماكن أخرى. الإجراء: استخدم إخفاء عنوان IP في حالة الخروج البسيط من الإنترنت؛ فضّل التوجيه الصريح عندما تتحكّم في الشبكة وتريد الحفاظ على عناوين المصدر.

يعرض برنامج GNU nano على نظام Debian قاعدة إخفاء ما بعد التوجيه في nftables لشبكة WireGuard الفرعية
أضف قاعدة NAT مخصصة لـ 10.8.0.0/24 وقم بالتحقق من صحة مجموعة القواعد قبل تمكينها.

هل تحتاج أيضًا إلى قواعد جدار الحماية؟

يعتمد ذلك على جدار الحماية المُثبّت لديك. إذا كانت سياسة إدخال nftables لديك مُقيّدة، فاسمح ببروتوكول UDP الوارد 51820. إذا كانت سلسلة التوجيه لديك تحتوي على سياسة حظر افتراضية، فأضف قواعد هناك للسماح بحركة البيانات من wg0وإلى الوجهة المقصودة، والسماح بحركة البيانات العائدة. قد يكون لدى مُزوّدي خدمات الخوادم الافتراضية السحابية أيضًا مجموعة أمان منفصلة أو جدار حماية خاص بهم يجب أن يسمح ببروتوكول UDP 51820.

لا تقم بلصق مجموعة قواعد جدار الحماية الافتراضية الجديدة بالكامل في خادم SSH بعيد دون تدقيق. فقد يؤدي ذلك إلى حظر وصولك. الحل: افحص sudo nft list rulesetجدار الحماية لديك وقم بدمج WireGuard معه.

الخطوة السادسة: إنشاء ملف تعريف العميل

على جهاز العميل، قم بإنشاء زوج مفاتيح خاص به باستخدام تطبيق WireGuard أو wg genkey. يبدو ملف تعريف IPv4 للنفق الكامل كما يلي:

[Interface]
Address = 10.8.0.2/24
PrivateKey = CLIENT_PRIVATE_KEY
DNS = 1.1.1.1

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = vpn.example.com:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

استبدل vpn.example.comهذا باسم نظام أسماء النطاقات العام للخادم أو عنوان IP العام الخاص به. هذا DNSالسطر اختياري، ويختلف دعم تطبيقات العميل له. في حالة النفق المنقسم، غيّر AllowedIPsإلى الشبكات التي يجب أن تعبر شبكة VPN فقط، على سبيل المثال 10.8.0.0/24بالإضافة إلى شبكة LAN خاصة مثل 192.168.50.0/24.

PersistentKeepalive = 25هذا الخيار اختياري أيضًا. توصي وثائق WireGuard الرسمية بـ 25 ثانية كقيمة مناسبة عندما يحتاج جهاز نظير خلف جدار حماية NAT أو جدار حماية ذي حالة إلى الاحتفاظ بربطه أثناء فترات الخمول. هذا ليس إعدادًا للأداء وليس إلزاميًا لكل عميل. الإجراء: استخدمه بشكل أساسي للعملاء المتجولين أو عملاء NAT الذين يصبحون غير قابلين للوصول بعد فترة خمول.

يعرض برنامج GNU nano على نظام Debian ملف تعريف عميل WireGuard مع نقطة نهاية الخادم، وعناوين IP المسموح بها، وPersistentKeepalive
قم بتكوين العميل باستخدام مفتاحه الخاص، والمفتاح العام للخادم، ونقطة النهاية، وسياسة التوجيه، وخاصية إبقاء الاتصال نشطًا (اختيارية).

الخطوة 7: تشغيل برنامج WireGuard عند بدء التشغيل

قم بتشغيل nftables أولاً، ثم قم بتمكين واجهة WireGuard:

sudo systemctl enable --now nftables
sudo systemctl enable --now wg-quick@wg0
systemctl is-active nftables
systemctl is-active wg-quick@wg0

wg-quick@wg0يقرأ /etc/wireguard/wg0.conf. wg-quickيؤكد الدليل أن اصطلاح التسمية هذا هو الاختصار المعتاد للإعدادات المخزنة تحت /etc/wireguard. الإجراء: استخدم الخدمة بدلاً من برنامج بدء تشغيل مخصص إلا إذا كان لديك تصميم أكثر تعقيدًا لمدير الشبكة.

قم بتفعيل nftables و wg-quick@wg0 في طرفية دبيان، وتأكد من أن كلا الخدمتين نشطتان.
قم بتمكين nftables وخدمة wg-quick@wg0 systemd بحيث تعود خدمة VPN تلقائيًا بعد إعادة التشغيل.

الخطوة 8: التحقق من المصافحة وحركة المرور

قم بتوصيل العميل، ثم افحص الخادم:

sudo wg show
ip address show wg0
ping -c 3 10.8.0.2

عادةً ما يُظهر الجهاز النظير السليم مصافحة حديثة وعدادات نقل بيانات غير صفرية بعد عبور البيانات للنفق. إذا قمتَ بتكوين نفق كامل، فتحقق من عنوان IPv4 العام للعميل باستخدام خدمة فحص عناوين IP موثوقة؛ يجب أن يتطابق مع عنوان الخروج لخادم Debian.

يعرض طرفية دبيان مخرجات الأمر wg show مع عملية مصافحة حديثة واختبارات اتصال ناجحة مع 10.8.0.2
تحقق من أن الطرف الآخر لديه مصافحة WireGuard حديثة، وأن عدادات النقل تتزايد، وأن عنوان نفق العميل يستجيب.

المشاكل الشائعة ومعناها الحقيقي

العرضالسبب المحتملإجراء تالٍ مفيد
لا يوجد مصافحةمفاتيح خاطئة، نقطة نهاية، منفذ UDP، جدار حماية الموجه، إعادة توجيه منفذ الموجه، أو CGNATتأكد من وصول UDP 51820 إلى مضيف Debian وأعد فحص كلا المفتاحين العامين.
يعمل المصافحة ولكن لا يوجد إنترنتإعادة توجيه IPv4، أو قواعد جدار الحماية لإعادة التوجيه، أو NAT مفقودةتحقق من sysctl net.ipv4.ip_forward، nft list rulesetواسم واجهة الإرسال.
يمكن الوصول إلى 10.8.0.1 ولكن ليس شبكة محلية خاصةيفتقر العميل إلى مسار الشبكة المحلية أو تفتقر الشبكة المحلية إلى مسار عودةأضف الشبكة الفرعية LAN إلى العميل AllowedIPsوقم بتكوين التوجيه أو NAT بشكل مناسب.
بعض المواقع تتوقفمشكلة محتملة في مسار MTUاختبر باستخدام حزم بيانات أصغر قبل فرض قيمة MTU. wg-quickيمكن اختيار قيمة MTU تلقائيًا، لذا لا تقم بتعيينها إلى 1420 لمجرد أن دليلًا آخر يفعل ذلك.
يستخدم بروتوكول IPv4 شبكة VPN، بينما لا يستخدمها بروتوكول IPv6.الملف الشخصي يوجه فقط0.0.0.0/0قم بتكوين IPv6 من خلال WireGuard أيضًا، أو قم بتعطيل/حظر IPv6 الخاص بالعميل عمدًا إذا كان تجنب تسرب IPv6 شرطًا أساسيًا.

نفق كامل أم نفق مقسم: أيهما يجب أن تختار؟

استخدم نفقًا كاملًا عندما يكون الهدف هو حماية حركة البيانات على شبكات Wi-Fi غير الموثوقة أو توجيه حركة بيانات الإنترنت من خادم Debian. استخدم نفقًا مجزأً عندما تحتاج فقط إلى الوصول عن بُعد إلى خادم أو شبكة منزلية أو مختبر أو تطبيق داخلي، وتريد أن تبقى حركة بيانات الإنترنت العادية محلية. يعتمد هذا الاختيار بشكل أساسي على إعدادات العميل AllowedIPs.

بالنسبة لعمليات النشر الصغيرة من نقطة إلى موقع، يكفي التكوين المذكور أعلاه لإنشاء أساس قابل للصيانة: كتلة نظير واحدة لكل عميل، وعناوين أنفاق فريدة، وخدمات مُدارة بواسطة دبيان، وجداول nftables لسلوك التوجيه المطلوب فعليًا. أما بالنسبة لعمليات النشر الأكبر، فيصبح توزيع المفاتيح، ودورة حياة النظير، ونظام أسماء النطاقات (DNS)، والتسجيل، وإدارة التكوين من الشواغل التشغيلية، على الرغم من أن بروتوكول WireGuard نفسه يظل بسيطًا.

قائمة التحقق النهائية

  • wg-quick@wg0نشط wg0ولديه 10.8.0.1/24.
  • يستمع الخادم على بروتوكول UDP 51820ويمكن الوصول إلى هذا المنفذ من خلال أي جدار حماية أو جهاز توجيه في اتجاه المنبع.
  • لكل عميل زوج مفاتيح خاص به /32وإدخال فريد على الخادم.
  • net.ipv4.ip_forwardيساوي ذلك 1عندما يكون الوصول الموجه مطلوبًا.
  • يتم استخدام خاصية إخفاء الملفات (nstables masquerading) للوصول إلى الإنترنت عبر النفق الكامل، إلا إذا كنت تستخدم مسارات العودة الموجهة بدلاً من ذلك عن قصد.
  • wg showيعرض عملية المصافحة الأخيرة بعد أن يرسل العميل البيانات.
  • يتوافق تصميم العميل AllowedIPsمع التصميم المقصود للنفق الكامل أو النفق المنقسم.

تستهدف هذه الخطوات نظام Debian 12 وأدوات WireGuard القياسية المتوفرة من خلاله. تختلف بنية الشبكة، وNAT للشبكة الرئيسية، وجدران الحماية السحابية، وتوجيه الشبكة المحلية الخاصة، وسياسة IPv6 باختلاف بيئة التشغيل، لذا لا يمكن استنتاج هذه العناصر من إعدادات WireGuard وحدها. تحقق من كل عنصر على حدة بدلاً من اعتبار كل مشكلة اتصال فشلاً في WireGuard.

اترك تعليقاً

حمّل لعبة FlightGear مجاناً: دليل التثبيت الرسمي

حمّل لعبة FlightGear مجاناً: دليل التثبيت الرسمي

حمّل برنامج FlightGear مجاناً من الموقع الرسمي. قارن بين حزم Windows و macOS و Linux، وثبّت ملفات البيانات، وابدأ رحلتك الأولى.

أو كي سامبلر: برنامج مجاني وبسيط لأخذ عينات موسيقية لإيقاعات لوحة المفاتيح

أو كي سامبلر: برنامج مجاني وبسيط لأخذ عينات موسيقية لإيقاعات لوحة المفاتيح

يقوم برنامج OKSampler بربط مقاطع MP3 بمفاتيح لوحة المفاتيح، كما يتيح تكرار الصوت. تعرّف على وظائف هذا البرنامج المجاني القديم، وحدود ميزاته القديمة، وما يجب التحقق منه قبل التنزيل.

تطبيق مهام جوجل لسطح المكتب: كيفية استخدامه على الكمبيوتر

تطبيق مهام جوجل لسطح المكتب: كيفية استخدامه على الكمبيوتر

افتح مهام جوجل في متصفح، وأضف اختصارًا لمتصفح كروم أو قم بتشغيلها على غرار التطبيقات، وقم بإدارة المهام المؤرخة من خلال التقويم وجيميل.

كيفية لعب لعبة Don't Starve Together على نظام لينكس

كيفية لعب لعبة Don't Starve Together على نظام لينكس

قم بتثبيت نسخة لينكس من لعبة Don't Starve Together عبر Steam، وابدأ عالمًا جديدًا، أو انضم إلى أصدقائك باتباع خطوات الإعداد واستكشاف الأخطاء وإصلاحها هذه.

كيفية تشغيل لعبة Squad على نظام Linux باستخدام Steam Proton

كيفية تشغيل لعبة Squad على نظام Linux باستخدام Steam Proton

قم بإعداد Squad على نظام Linux باستخدام Steam Play و Proton، ثم قم بتثبيت اللعبة، واختر أداة التوافق، وقم باستكشاف مشكلات مكافحة الغش وإصلاحها.

كيفية تثبيت نظام لينكس منت ديبيان الإصدار الخامس "إلسي" من خلال USB

كيفية تثبيت نظام لينكس منت ديبيان الإصدار الخامس "إلسي" من خلال USB

قم بتنزيل ملف LMDE 5 ISO المؤرشف والتحقق منه، ثم أنشئ قرص USB قابلًا للإقلاع، واختر إعدادات التثبيت الآمنة. انتهى دعم Elsie؛ راجع إصدار LMDE الحالي.

كيفية إنشاء قرص USB قابل للتشغيل لنظام التشغيل Windows 11 على نظام Linux

كيفية إنشاء قرص USB قابل للتشغيل لنظام التشغيل Windows 11 على نظام Linux

قم بإنشاء قرص USB لتثبيت نظام التشغيل Windows 11 على نظام Linux باستخدام Ventoy: احصل على ملف ISO الرسمي، وقم بتثبيت Ventoy بأمان، وانسخ الصورة، وقم بتشغيل جهاز الكمبيوتر المستهدف.

كيفية تشغيل لعبة It Takes Two على نظام لينكس باستخدام Steam Proton

كيفية تشغيل لعبة It Takes Two على نظام لينكس باستخدام Steam Proton

تعلم كيفية تشغيل لعبة It Takes Two على نظام Linux باستخدام Steam Proton، وتثبيت إصدار Steam، وتمكين التوافق، وإعداد وضع اللعب التعاوني، وحل مشاكل التشغيل.

كيفية تثبيت برنامج Wireshark على أنظمة Linux: أوبونتو، فيدورا، آرتش، وغيرها

كيفية تثبيت برنامج Wireshark على أنظمة Linux: أوبونتو، فيدورا، آرتش، وغيرها

قم بتثبيت Wireshark على Ubuntu أو Debian أو Fedora أو Arch أو openSUSE باستخدام أوامر الحزمة الحالية، ثم قم بتكوين التقاط الحزم المباشر بأمان.

كيفية لعب Slay the Spire على نظام Linux: قم بتثبيته وتشغيله باستخدام Steam

كيفية لعب Slay the Spire على نظام Linux: قم بتثبيته وتشغيله باستخدام Steam

قم بتثبيت Steam على نظام Linux، ثم احصل على نسخة Slay the Spire الأصلية لنظام Linux من مكتبتك، وقم بتشغيلها. يتضمن ذلك خطوات عملية لحل مشاكل بدء التشغيل الشائعة.