مقدمة
WireGuard هو بروتوكول نفق VPN حديث وسريع وآمن يمكن استخدامه لإنشاء أنفاق مشفرة بين الآلات لإنشاء شبكات خاصة. يهدف إلى أن يكون أبسط وأخف وأكثر أداءً من بروتوكولات VPN القديمة مثل IPsec و OpenVPN.
في هذا الدليل، سنستعرض العملية الكاملة لإعداد WireGuard على خوادم دبيان أو أوبونتو لينكس. هذا سيسمح لك بإنشاء اتصالات مشفرة بين الخوادم، وتوجيه حركة المرور عبر أنفاق VPN، وأساسًا إنشاء شبكة افتراضية خاصة.
سنغطي:
- تثبيت WireGuard
- إنشاء المفاتيح والإعدادات
- إنشاء واجهات وأقران
- توجيه حركة المرور عبر نفق VPN
- عنونة IP الدائمة
- تمكين تقديم IP
- NAT للسماح بالاتصالات من الأقران البعيدة
- دمج systemd والبدء عند التشغيل
في النهاية، يجب أن يكون لديك إعداد WireGuard كامل الوظائف على دبيان أو أوبونتو يمكنه تأمين نفق حركة المرور بين الخوادم.
المتطلبات الأساسية
قبل البدء، هناك بعض المتطلبات الأساسية:
- دبيان 10 أو أعلى، أو أوبونتو 18.04 أو أعلى على جميع الآلات
- وصول الجذر (امتيازات sudo) على جميع الآلات
- فهم أساسي لشبكات لينكس (عناوين IP والشبكات الفرعية والتوجيه الخ)
سيتم إجراء الإعداد على آلتين أو أكثر يمكنهما التواصل عبر شبكة. لأغراض الاختبار، يمكنك استخدام آلات افتراضية محلية أو خوادم أو آلات سحابية.
ستعمل التعليمات لإعداد WireGuard بين أي نقاط نهاية – لا يحتاج أن يكون فقط خوادم دبيان / أوبونتو. تتوفر عملاء WireGuard لجميع المنصات الرئيسية.
تثبيت WireGuard
الخطوة الأولى هي تثبيت حزمة WireGuard على جميع الآلات التي ستكون جزءًا من نفق VPN.
على دبيان
$ sudo apt update
$ sudo apt install wireguard
على أوبونتو
$ sudo apt update
$ sudo apt install wireguard
سيثبّت هذا وحدة WireGuard وأدوات المستخدم مثل wg و wg-quick.
إنشاء المفاتيح والإعدادات
الآن نحتاج إلى إنشاء أزواج المفاتيح العامة / الخاصة التي سيستخدمها WireGuard لإنشاء الأنفاق المشفرة. ستحتاج كل آلة مشاركة في VPN إلى مفتاح خاص خاص بها ومفتاح عام مطابق.
أنشئ المفتاح الخاص باستخدام:
$ wg genkey > privatekey
سينشئ هذا مفتاحًا خاصًا جديدًا ويحفظه في privatekey.
بعد ذلك، أنشئ المفتاح العام:
$ wg pubkey < privatekey > publickey
افعل هذا لكل خادم سيكون جزءاً من VPN. تأكد من تخزين ملف المفتاح الخاص بأمان على كل آلة. يمكن مشاركة المفتاح العام بحرية.
بعد ذلك، نحتاج إلى إنشاء ملف تكوين يحدد الواجهة والأقران / نقاط النهاية والمفاتيح.
أنشئ ملف باسم wg0.conf:
$ sudo nano /etc/wireguard/wg0.conf
أضف المحتويات التالية، مع استبدال PublicKey و PrivateKey بخاصتك لكل خادم:
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = SERVER1_PRIVATE_KEY
[Peer]
PublicKey = SERVER2_PUBLIC_KEY
AllowedIPs = 10.0.0.2/32
لذلك بالنسبة لخادمين، قد يكون لديك:
الخادم 1:
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = SERVER1_PRIVATE_KEY
[Peer]
PublicKey = SERVER2_PUBLIC_KEY
AllowedIPs = 10.0.0.2/32
الخادم 2:
[Interface]
Address = 10.0.0.2/24
ListenPort = 51820
PrivateKey = SERVER2_PRIVATE_KEY
[Peer]
PublicKey = SERVER1_PUBLIC_KEY
AllowedIPs = 10.0.0.1/32
تُكوّن Address و AllowedIPs عناوين IP المستخدمة بواسطة واجهة نفق VPN. تأكد من عدم تعارض أي عناوين IP مستخدمة مع شبكتك الحالية.
ListenPort و PrivateKey مطلوبة في قسم [Interface]. ثم أضف قسم [Peer] لكل خادم تريد الاتصال به، باستخدام PublicKey الخاصة به.
يمكنك إضافة المزيد من الأقران عن طريق إضافة أقسام [Peer] إضافية. تأكد من إضافة عنوان IP للقرين أيضًا إلى AllowedIPs.
احفظ ملف التكوين وقم بتمكين تمرير IP (كما هو موضح أدناه).
إنشاء واجهات وأقران
مع الإعداد في مكانه، يمكننا الآن إنشاء الواجهة وإقامة اتصالات الأقران:
$ sudo wg-quick up wg0
سيقوم هذا بإعداد الواجهة wg0 باستخدام تفاصيل من wg0.conf.
شغّل الأمر wg-quick نفسه على كل خادم لتنشيط واجهات VPN الخاصة بهم. ستتصل الأقران باستخدام المفاتيح العامة وتبدأ في توجيه حركة المرور.
يمكنك فحص حالة الواجهة باستخدام:
$ sudo wg show
سيعرض هذا تفاصيل مثل المفتاح العام ومنفذ الاستماع والأقران للواجهة.
في هذه المرحلة نفق VPN الخاص بك WireGuard نشط! ستتدفق حركة المرور الآن بين الخوادم المقترنة مشفرة عبر الأنفاق.
ومع ذلك، لكي يعمل التوجيه بشكل صحيح، نحتاج إلى تمكين تمرير IP على كل خادم.
توجيه حركة المرور عبر نفق VPN
مع تمكين تمرير IP، يمكن إرسال حركة المرور بين أقران WireGuard وتوجيهها عبر نفق VPN المشفر.
لتمكين التمرير على دبيان / أوبونتو:
$ sudo sysctl -w net.ipv4.ip_forward=1
لجعل هذا دائمًا عبر إعادات التشغيل:
$ sudo nano /etc/sysctl.conf
ألغي تعليق السطر:
net.ipv4.ip_forward=1
احفظ الملف وأعد التشغيل أو شغل sudo sysctl -p لتحميل الإعدادات الجديدة.
الآن يمكن توجيه حركة المرور بين أقران VPN. ومع ذلك، ستنقطع الاتصالات بمجرد إعادة تشغيل الخادم لأن إعداد wg-quick غير مستمر.
لتشغيل VPN تلقائيًا عند التشغيل نحتاج إلى دمج WireGuard مع systemd.
دمج systemd والبدء عند التشغيل
لجعل WireGuard يبدأ عند التشغيل ويستمر عبر إعادات التشغيل، نحتاج إلى تكوين خدمة systemd.
أنشئ ملف خدمة systemd جديد:
$ sudo nano /etc/systemd/system/[email protected]
الصق ما يلي:
[Unit]
Description=نفق VPN WireGuard لـ %i
After=network-online.target nss-lookup.target
Wants=network-online.target nss-lookup.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/wg-quick up %i
ExecStop=/usr/bin/wg-quick down %i
[Install]
WantedBy=multi-user.target
سيقوم هذا بتشغيل وإيقاف نفق VPN باستخدام wg-quick.
الآن قم بتمكين الخدمة:
$ sudo systemctl enable wg-quick@wg0
سينشئ هذا خدمة systemd تشغل wg-quick عند التشغيل.
أعد تشغيل الخوادم الخاصة بك ويجب أن يبدأ WireGuard تلقائيًا! تحقق باستخدام wg show.
عنونة IP الدائمة
بشكل افتراضي، تستخدم أزواج WireGuard عنوان IP العام عند فتح الاتصالات. إذا كانت خوادمك تحتوي على عناوين IP الديناميكية، فقد يكون هناك مشكلة.
لتعيين عناوين IP ثابتة دائمة تُستخدم فقط لاتصالات VPN، أضف خيار PersistentKeepalive إلى أقسام الأقران:
[Peer]
PublicKey = PEER_PUBLIC_KEY
AllowedIPs = 10.0.0.2/32
Endpoint = PEER_PUBLIC_IP:51820
PersistentKeepalive = 25
سيرسل هذا إشارة ترحيب للقرين كل 25 ثانية للحفاظ على آخر عنوان IP محدث.
يمكنك أيضًا تعيين عنوان IP النقطة النهائية صراحةً كما هو أعلاه إذا لم يتغير عنوان IP العام أبدًا.
NAT للسماح بالاتصالات من الأقران البعيدة
في معظم الحالات، ستريد السماح بالاتصالات إلى خادم VPN الخاص بك من الأقران / العملاء البعيدين عبر الإنترنت.
وهذا يعني فتح وتمرير منفذ الاستماع لـ WireGuard (UDP 51820 افتراضيًا).
إذا كنت خلف جدار ناري NAT، أضف هذه قواعد تمرير المنفذ:
# تمرير المنفذ 51820 الوارد إلى خادم WireGuard
$ iptables -A INPUT -p udp --dport 51820 -j ACCEPT
$ iptables -A FORWARD -i eth0 -o wg0 -j ACCEPT
# تمرير حركة المرور من خادم WireGuard مرة أخرى إلى الإنترنت
$ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
ستحتاج أيضًا إلى تكوين قواعد تمرير المنفذ على جهاز التوجيه الخاص بك لإرسال حركة مرور UDP 51820 الواردة إلى خادم WireGuard الخاص بك.
الآن يمكن للأقران البعيدين الاتصال بعنوان IP العام لخادمك على المنفذ 51820 عبر الإنترنت.
تكوين العميل
لتوصيل العملاء مثل الأجهزة المحمولة، ما عليك سوى تثبيت تطبيق WireGuard واستخدام عنوان IP العام والمفتاح العام للخادم في تكوين العميل.
فيما يلي مثال على تكوين عميل محمول:
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.3
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_PUBLIC_IP:51820
AllowedIPs = 0.0.0.0/0
سيوجه هذا كل حركة مرور العميل عبر نفق VPN عند الاتصال.
وهذا يغطي الإعداد الكامل لـ WireGuard على دبيان وأوبونتو!
ملخص
يجب الآن أن يكون لدى خوادمك دبيان أو أوبونتو أنفاق WireGuard مشفرة فيما بينها. سيتم توجيه حركة المرور عبر الأنفاق المؤمنة بواسطة التشفير الحديث.
WireGuard أسرع وأبسط وأخف مقارنةً ببدائل مثل IPSec أو OpenVPN. إنه VPN مثالي لتوصيل البنية التحتية بأمان عبر الإنترنت.
هناك العديد من الخيارات الإضافية لضبط وتوسيع إعداد WireGuard الخاص بك أيضًا – راجع وثائق المشروع للمزيد من التفاصيل.
آمل أن يكون هذا الدليل مفيدًا لإعداد WireGuard على أنظمة دبيان أو أوبونتو الخاصة بك! أخبرني إذا كان لديك أي أسئلة أخرى.