الرئيسية
» كيف
»
كيفية إعداد شبكة VPN من نوع WireGuard Point-to-Site على نظام Debian 12
كيفية إعداد شبكة VPN من نوع WireGuard Point-to-Site على نظام Debian 12
سيناريو توضيحي: تستخدم مايا خادمًا افتراضيًا خاصًا (VPS) يعمل بنظام Debian 12 كنقطة نهاية VPN شخصية عند عملها من مقهى. يجب أن يتصل حاسوبها المحمول بالخادم الافتراضي الخاص عبر نفق WireGuard مشفر، وأن يرسل حركة مرور الإنترنت IPv4 الخاصة به عبر هذا الخادم. هذا المثال ليس تقريرًا عن اختبار حقيقي؛ عناوين IP العامة والمفاتيح ومخرجات الطرفية الموضحة أدناه هي عناصر نائبة أو نماذج توضيحية.
هذا الإعداد عبارة عن شبكة VPN من نقطة إلى موقع: يتصل عميل واحد بخادم واحد. يستخدم أدوات WireGuard المدمجة في Debian، ونظيرًا واحدًا، وتوجيه IPv4، وترجمة عناوين الشبكة (NAT) لـ IPv4. يفترض هذا الإعداد أن الخادم الافتراضي الخاص (VPS) لديه عنوان IPv4 عام أو مُعاد توجيهه، ويمكنك إدارته باستخدام sudo، وأن منفذ UDP 51820 متاح للوصول إليه. لا يتضمن هذا الشرح تكوين توجيه IPv6 أو شبكة خاصة خلف الخادم الافتراضي الخاص.
خطط للعناوين وطريقة الوصول أولاً
يستخدم هذا المثال 10.8.0.0/24شبكة VPN، مع وجودها 10.8.0.1على الخادم وعلى 10.8.0.2أول عميل لبرنامج Maya. استخدم شبكة فرعية لا تتداخل مع شبكة Wi-Fi الخاصة بالعميل، أو شبكة المكتب، أو شبكة السحابة. قد يؤدي التداخل إلى توجيه حركة البيانات عبر مسار خاطئ حتى في حال نجاح عملية المصافحة.
يستخدم WireGuard مصادقة المفتاح العام. يحتاج الخادم إلى المفتاح العام للعميل، ويحتاج العميل إلى المفتاح العام للخادم؛ ويبقى كل مفتاح خاص على الجهاز الذي يملكه. تشرح وثائق WireGuard الخاصة بنظام Debian إعداد الحزمة والنظراء، بينما يوثق دليل البدء السريع لـ WireGuard عملية إنشاء المفاتيح وسلوك الحفاظ على الاتصال. راجع وثائق WireGuard الخاصة بنظام Debian ودليل البدء السريع لـ WireGuard .
قم بتهيئة خادم Debian 12
1. قم بتثبيت الأدوات
قم بتحديث فهرس الحزم وتثبيت WireGuard بالإضافة إلى nftables، والتي ستوفر قاعدة إخفاء IPv4 كمثال. قم بتشغيل هذه الأوامر على الخادم الافتراضي الخاص (VPS):
تُضمّن دبيان برنامج WireGuard wireguardوأدواته ضمن حزمة metapackage. إذا كان الخادم يستخدم بالفعل مدير جدار حماية مثل UFW أو firewalld أو قواعد مُدارة من قِبل مزود الخدمة، فحدد مجموعة القواعد النشطة قبل إضافة أي شيء. لا تستبدل إعدادات جدار الحماية الحالية بهذا المثال.
تعرض نافذة طرفية خطوة تثبيت الحزمة؛ ويمكن أن تختلف مخرجات الحزمة باختلاف المرآة وحالة النظام.
2. ابحث عن الواجهة العامة وقم بتمكين إعادة التوجيه
استعلم من جدول التوجيه عن الواجهة التي يستخدمها نظام دبيان للوصول إلى عنوان IPv4 خارجي:
ip route get 1.1.1.1
في المثال، يستخدم المسار eth0. قد يُظهر خادمك الافتراضي الخاص اسمًا مختلفًا مثل ens3أو enp1s0؛ استخدم الاسم من مخرجاتك في قاعدة NAT لاحقًا. لاحظ أيضًا عنوان IPv4 العام للخادم أو اسم DNS الخاص به. إذا كان الخادم موجودًا خلف جهاز توجيه، فأعد توجيه UDP 51820 من جهاز التوجيه هذا إلى مضيف Debian.
يتطلب إنشاء نفق كامل توجيه IPv4. فعّله الآن واحتفظ به حتى بعد إعادة تشغيل الجهاز.
يجب أن يُظهر الأمر الأخير النتيجة net.ipv4.ip_forward = 1. يسمح هذا الإعداد بإعادة توجيه الحزم؛ ولكنه لا يفتح جدار الحماية أو يوفر ترجمة عناوين الشبكة (NAT) تلقائيًا.
يحدد البحث عن المسار الواجهة المستخدمة لـ IPv4 الصادر، بينما يؤكد sysctl أن إعادة التوجيه قيد التشغيل.
3. أنشئ مفتاح الخادم ومفتاح العميل
قم بإنشاء مفتاح الخادم على مضيف Debian مع أذونات ملفات مقيدة:
sudo install -d -m 700 /etc/wireguard
sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server.key; wg pubkey < /etc/wireguard/server.key > /etc/wireguard/server.pub'
قم بإنشاء زوج مفاتيح العميل على جهاز العميل كلما أمكن ذلك. على جهاز عميل يعمل بنظام Linux ومثبت wireguard-toolsعليه:
umask 077
wg genkey | tee client.key | wg pubkey > client.pub
بالنسبة للهاتف، أنشئ نفقًا جديدًا في تطبيق WireGuard الرسمي، ودعه يُنشئ مفاتيح الملف الشخصي. انسخ المفتاح العام للعميل فقط إلى الخادم. احتفظ به client.keyسرًا؛ لا تقم أبدًا بلصقه في إعدادات الخادم أو إرساله في المحادثة. يوثّق دليل Debian Bookwormwg(8) أوامر المفاتيح وحقول واجهة المستخدم.
4. أنشئ واجهة الخادم وأضف النظير
قم بإنشاء /etc/wireguard/wg0.confالملف بالبنية التالية. استبدل كل حرف كبير بالمفتاح الحقيقي المقابل. اقرأ المفتاح الخاص للخادم محليًا باستخدام الأمر المناسب sudo cat /etc/wireguard/server.key؛ ثم ضع المفتاح العام للعميل في قسم النظير.
AllowedIPs = 10.8.0.2/32يُخصص هذا النظام عنوان VPN واحدًا لهذا الجهاز النظير، ويمنع أي جهاز نظير آخر من استخدامه. امنح كل جهاز إضافي زوج مفاتيح خاصًا به وعنوانًا مميزًا 10.8.0.3/32. لا تستخدم ملف تعريف عميل واحد على أجهزة متعددة إذا كنت بحاجة إلى إلغاء أو هوية منفصلة.
تعرض واجهة الخادم نظيرًا واحدًا مع عنوان النفق المخصص له؛ المواد الرئيسية المعروضة هي لأغراض التوضيح فقط.
بالنسبة لنفق IPv4 الكامل النموذجي، 10.8.0.0/24يجب أن تمر الحزم الصادرة عبر الواجهة العامة مع NAT المصدر. أضف قاعدة مكافئة إلى إعدادات nftables الحالية للخادم أو مدير جدار الحماية. يوضح جدول nftables المستقل هذه القاعدة؛ استبدلها eth0بالواجهة المكتشفة في الخطوة 2.
table ip wg_nat {
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
ip saddr 10.8.0.0/24 oifname "eth0" masquerade
}
}
إذا كنت تستخدم نظام Debian nftables.service، فقم بدمج الجدول في الإعدادات التي تُحمّلها الخدمة عند بدء التشغيل، وتحقق من صحة الملف بالكامل sudo nft -c -f /etc/nftables.confقبل إعادة تحميله. تأكد من أن إعداداتك الحالية لا تُفرغ أو تستبدل القواعد الموجودة قبل تطبيقها. لا يُلغي NAT وحده سياسة سلسلة التوجيه التي تحجب حركة البيانات: اسمح بإعادة التوجيه من wg0واجهة الشبكة الواسعة (WAN) وحركة البيانات العائدة في جدار الحماية النشط. nft(8)يوثّق دليل Debian تحميل قواعد nftables وعبارات NAT.
في جدار حماية مزود خدمة الخادم الافتراضي الخاص (VPS) وجدار حماية أي مضيف، اسمح بوصول بروتوكول UDP الوارد عبر المنفذ 51820. لا تفتح منفذ TCP 51820 لنفق WireGuard هذا. احتفظ بقاعدة الوصول عبر SSH كما هي أثناء تغيير سياسة جدار الحماية، واستخدم وحدة تحكم المزود أو أي وسيلة استعادة أخرى في حال تسبب إعادة تشغيل جدار الحماية في قطع الاتصال.
تقوم القاعدة بمطابقة حركة مرور VPN IPv4 الخارجة عبر واجهة WAN المحددة وتطبيق إخفاء الهوية.
قم بتهيئة العميل وتوصيله
6. بناء ملف تعريف العميل
أنشئ نفقًا جديدًا في تطبيق عميل WireGuard، أو احفظ إعدادات مشابهة على جهاز عميل Linux. استبدل المفتاح الخاص، والمفتاح العام للخادم، ونقطة النهاية بقيم حقيقية. عنوان TEST-NET الموضح أدناه هو مثال فقط ولن يصل إلى خادم حقيقي.
AllowedIPs = 0.0.0.0/0يوجّه هذا الخيار وجهات IPv4 عبر النفق، لذا فهو الخيار الأمثل لنفق IPv4 الكامل. أما لإنشاء نفق مجزأ ضيق يصل فقط إلى عنوان خادم WireGuard، فاستخدم 10.8.0.0/24الخيار الآخر. للوصول إلى شبكة محلية خلف الخادم، أضف الشبكة الفرعية الفعلية لتلك الشبكة المحلية إلى إعدادات العميل AllowedIPs، وأضف مسار عودة أو ترجمة عناوين الشبكة (NAT) مناسبة، واسمح بمرور البيانات عبر جدار حماية الخادم؛ وتعتمد هذه الخطوات على موجّه الشبكة المحلية، وهي خارج نطاق هذا المثال.
PersistentKeepalive = 25يمكن أن يساعد هذا الخيار العميل الموجود خلف جدار الحماية NAT على البقاء متاحًا بعد فترات الخمول. وهو اختياري؛ تشير وثائق WireGuard إلى أن معظم المستخدمين لا يحتاجون إليه، ولكنها تُحدد 25 ثانية كفترة زمنية مفيدة بشكل عام يجب أن يبقى فيها ربط NAT مفتوحًا. DNSيدعم هذا الحقل بعض العملاء والعملاء المبنيين على بروتوكول NAT wg-quick؛ إذا تجاهله تطبيقك، فقم بتعيين DNS من خلال عناصر التحكم الخاصة بذلك التطبيق.
يقوم ملف تعريف العميل بتوجيه IPv4 عبر الخادم؛ نقطة نهاية TEST-NET هي عنصر نائب، وليست عنوانًا فعالًا.
7. ابدأ النفق وتحقق من المصافحة
في نظام ديبيان، قم بتشغيل الواجهة عند بدء التشغيل باستخدام الأمر التالي:
sudo systemctl enable --now wg-quick@wg0
sudo wg show
استورد أو فعّل ملف تعريف العميل بعد أن يصبح منفذ UDP 51820 متاحًا. wg showتأكد من ظهور النظير المتوقع وتحديثه latest handshakeبعد إرسال العميل للبيانات. يشرح wg-quick(8)دليل Debian Bookworm أداة إعداد الواجهة التي تستخدمها وحدة systemd.
يشير عدم إتمام عملية المصافحة أولاً إلى مشكلة في إمكانية الوصول أو عدم تطابق المفاتيح: تأكد من عنوان نقطة النهاية والمنفذ، وقواعد جدار الحماية لبروتوكول UDP، والمفتاح العام للخادم في ملف تعريف العميل، والمفتاح العام للعميل wg0.conf، ووقت النظام الصحيح. أما المصافحة التي لا تتم دون حركة مرور فعالة، فعادةً ما تشير إلى إعادة توجيه، أو ترجمة عناوين الشبكة (NAT)، أو تداخل المسارات، أو قاعدة إعادة توجيه جدار الحماية.
تم تفعيل الخدمة، ويتضمن عرض النظير حقول المصافحة والتحويل؛ القيم توضيحية فقط.
8. تحقق من حركة البيانات وافهم حدود IPv6
بعد اتصال العميل، اختبر أولاً عنوان نفق الخادم، ثم تحقق من عنوان IPv4 العام الذي تراه خدمة خارجية للتحقق من عناوين IPv4:
ping -c 3 10.8.0.1
curl -4 https://ifconfig.me
يجب أن يصل طلب ping إلى الخادم إذا كان بروتوكول ICMP مسموحًا به. يجب أن يُظهر فحص IPv4 الخارجي عنوان الخروج العام للخادم الافتراضي الخاص (VPS) في هذا الإعداد الكامل للنفق. إذا لم يتغير العنوان العام، فافحص AllowedIPsإعادة التوجيه، واسم واجهة NAT، وسياسة إعادة التوجيه لجدار الحماية.
هذا المثال مخصص لبروتوكول IPv4 فقط. AllowedIPs = 0.0.0.0/0لا يقوم بتوجيه IPv6، لذا قد يرسل عميل متصل بشبكة IPv6 بيانات IPv6 خارج النفق. لا تصف هذا التكوين بأنه نفق خصوصية ثنائي البروتوكول كامل. لنقل IPv6 عبر WireGuard، خصص عناوين IPv6 للنفق وقم بتوجيهها، وفعّل إعادة توجيه IPv6، وقم بتكوين جدار الحماية وقواعد التوجيه المناسبة، وأضف ::/0العميل فقط بعد التأكد من عمل المسار بشكل كامل. يختلف دعم مزودي الخدمة. خلاف ذلك، اختر سياسة النفق المنفصل عن دراية وتحقق من سلوك IPv6 لدى العميل.
يتم تفعيل ملف تعريف عميل VPN عام، ويسرد نقطة نهاية الخادم وعنوان IP للنفق؛ وتختلف عناصر التحكم حسب التطبيق.يقوم الجهاز الطرفي بفحص عنوان IPv4 الصادر ويقوم باختبار الاتصال بعنوان WireGuard الخاص بالخادم؛ والنتيجة توضيحية.
المشاكل الشائعة وفحص نهائي سريع
لا يوجد مصافحة: تأكيد UDP 51820 الوارد على كل من جدار الحماية الخاص بالمزود والمضيف، وعنوان IP العام أو DNS الخاص بنقطة النهاية، والمفتاح العام لكل جانب.
يعمل المصافحة، لكن المواقع لا يتم تحميلها: تأكد من أن net.ipv4.ip_forward=1قاعدة NAT تستخدم واجهة الخروج الفعلية، وأن جدار الحماية يسمح بحركة المرور المُعاد توجيهها.
بعض الشبكات فقط هي التي تفشل: تحقق مما إذا كانت 10.8.0.0/24تتداخل مع شبكة محلية أو بعيدة. أعد ترقيم النفق إذا لزم الأمر، مع تحديث كل من النظراء وقاعدة جدار الحماية معًا.
يعمل حتى إعادة التشغيل: تأكد من تمكين خيار "تأكيد" wg-quick@wg0وأن إعدادات جدار الحماية وsysctl محفوظة من خلال التكوين العادي للنظام.
لا يزال بروتوكول IPv6 يستخدم الاتصال المحلي، وهذا متوقع في هذا المثال الذي يعتمد على IPv4 فقط. قم بتكوين مسار نفق IPv6 واختباره قبل الاعتماد على ادعاء خصوصية النفق الكامل.
قبل اعتبار الإعداد مكتملاً، تأكد من أن خدمة الخادم نشطة، wg showوأنها تُبلغ عن مصافحة حديثة وعدادات نقل متزايدة، وأن العميل قادر على الوصول 10.8.0.1، وأن فحص خروج IPv4 يُبلغ عن عنوان IP العام للخادم. أعد تشغيل النظام فقط بعد تثبيت إعدادات جدار الحماية وإعادة التوجيه الدائمة، ثم كرر هذه الفحوصات. بالنسبة للأجهزة النظيرة الإضافية، أنشئ أزواج مفاتيح منفصلة وعناوين IP فريدة للأنفاق، ثم أزل الجهاز بحذف إدخاله من قائمة الأجهزة النظيرة وإعادة تحميل الواجهة.