WireGuard من أبسط حلول VPN في التنصيب والصيانة. ملف إعداد قصير، ومفتاحان لكل طرف، ولا بنية معقدة تديرها كل يوم. لكن البساطة لا تعني أن كل خطوة اختيارية. فسطر واحد ناقص يعطيك نفقاً يتصل ولا يمرر شيئاً.
هذا الدليل يأخذك من سيرفر Debian 13 نظيف إلى نفق يعمل، مع التحقق بعد كل مرحلة. والمثال يخدم حالة شائعة: موظفون أو فروع تتصل بشبكة خاصة واحدة بأمان.
قبل أن تبدأ: ما الذي تحتاجه؟
- سيرفر Debian 13 بصلاحية root، وعنوان عام ثابت. نستعمل هنا 203.0.113.10 مثالاً.
- منفذ UDP مفتوح. المنفذ الشائع هو 51820.
- شبكة داخلية للنفق لا تتعارض مع شبكاتك. نستعمل 10.66.66.0/24.
- جهاز عميل واحد على الأقل للتجربة.
يأتي WireGuard داخل نواة لينكس منذ زمن، فلا تحتاج إلى بناء وحدات خارجية على Debian 13. كل ما تنصّبه هو أدوات الإدارة.
أما سيرفر التجربة فيكفيه القليل، لكن سيرفر الإنتاج مختلف. فالقرب من المستخدمين لا يغني عن معالج قوي، لأن كل حزمة تمر عبر النفق تُشفَّر على المعالج. وإذا ضعف العتاد انخفضت السرعة مهما قصرت المسافة.
لماذا هذه القيم تحديداً؟
يمكنك اختيار أي منفذ UDP غير مستعمل، لكن الالتزام بالمنفذ المعروف يسهّل المراجعة والتوثيق. أما تغييره فلا يضيف حماية حقيقية، لأن الحماية تأتي من المفاتيح.
وشبكة النفق تستحق تفكيراً أكبر. فالمكاتب والمنازل تستعمل نطاقات خاصة شائعة، ولو اختار النفق نطاقاً يطابق شبكة أحد الفروع لالتبس التوجيه، ولن تعرف الحزمة طريقها. لذلك اختر نطاقاً غير مألوف، واكتبه في توثيق الشركة من اليوم الأول.
وابدأ دائماً بتحديث النظام، ثم أعد التشغيل إن تغيرت النواة، حتى لا تبني إعدادك على نسخة ستتغير بعد قليل.
apt update
apt full-upgrade -y
الخطوة الأولى: التنصيب وإنشاء المفاتيح
apt update
apt install -y wireguard iptables
cd /etc/wireguard
umask 077
wg genkey | tee server.key | wg pubkey > server.pub
الأمر umask 077 ليس تفصيلاً. فهو يجعل الملف الجديد مقروءاً لصاحبه فقط، والمفتاح الخاص لا يجب أن يقرأه غير root.
أعد الخطوة نفسها على كل عميل، أو دع تطبيق WireGuard ينشئ المفاتيح بنفسه. المهم أن يبقى المفتاح الخاص على جهازه، وأن تنتقل المفاتيح العامة وحدها.
الخطوة الثانية: تفعيل تمرير الحزم
السيرفر هنا موجّه، يستقبل الحزم من النفق ويمررها إلى وجهتها. ولينكس لا يفعل ذلك افتراضياً.
cat > /etc/sysctl.d/99-wireguard.conf <<'EOF'
net.ipv4.ip_forward = 1
EOF
sysctl --system
sysctl net.ipv4.ip_forward
ضع الإعداد في مجلد /etc/sysctl.d/ بملف مستقل. فهذا أوضح عند المراجعة، ويسهل حذفه لاحقاً.
الخطوة الثالثة: ملف إعداد السيرفر
اعرف أولاً اسم بطاقة الشبكة الخارجية، فهي ليست دائماً eth0:
ip -o -4 route show to default
ستجد الاسم بعد الكلمة dev. ثم أنشئ الملف /etc/wireguard/wg0.conf وعدّل الاسم فيه إن اختلف:
[Interface]
Address = 10.66.66.1/24
ListenPort = 51820
PrivateKey = <SERVER_PRIVATE_KEY>
PostUp = iptables -A FORWARD -i %i -j ACCEPT
PostUp = iptables -A FORWARD -o %i -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -s 10.66.66.0/24 -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT
PostDown = iptables -D FORWARD -o %i -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -s 10.66.66.0/24 -o eth0 -j MASQUERADE
[Peer]
PublicKey = <CLIENT_PUBLIC_KEY>
AllowedIPs = 10.66.66.2/32
ثلاث ملاحظات على هذا الملف:
- %i يُستبدل تلقائياً باسم الواجهة، أي wg0.
- AllowedIPs في السيرفر يعني: هذا العميل مسموح له بهذا العنوان فقط، وإليه تُوجَّه حزمه.
- قاعدة MASQUERADE تجعل حركة العملاء تخرج بعنوان السيرفر. إذا أردت شبكة خاصة بين الأجهزة فقط، فلا تحتاج إليها.
الخطوة الرابعة: التشغيل والتحقق
chmod 600 /etc/wireguard/wg0.conf
systemctl enable --now wg-quick@wg0
systemctl status wg-quick@wg0 --no-pager
wg show
يجب أن ترى الواجهة والمنفذ والمفتاح العام والعميل. ولن تظهر مصافحة قبل أن يتصل العميل، فلا تقلق من غيابها الآن.
وإذا كان لديك جدار حماية في النظام أو في لوحة المزوّد، فافتح UDP على المنفذ 51820. هذا أكثر سبب يمنع المصافحة.
الخطوة الخامسة: إعداد العميل
هذا ملف عميل ينشئ نفقاً إلى الشبكة الخاصة فقط، أما بقية حركته فتبقى على اتصاله العادي:
[Interface]
Address = 10.66.66.2/32
PrivateKey = <CLIENT_PRIVATE_KEY>
[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = 203.0.113.10:51820
AllowedIPs = 10.66.66.0/24
PersistentKeepalive = 25
لتمرير كل حركة العميل عبر النفق، اجعل AllowedIPs = 0.0.0.0/0، وأضف سطر DNS في قسم Interface. وهذا مناسب حين تريد حماية اتصال موظف يعمل من شبكة عامة.
يفيد PersistentKeepalive العملاء خلف NAT، لأنه يُبقي المسار مفتوحاً كي يصلهم السيرفر.
بعد التشغيل، نفّذ من العميل:
ping -c 4 10.66.66.1
ثم نفّذ wg show على السيرفر. يجب أن تظهر قيمة latest handshake مع ارتفاع عدادات transfer.
ولعميل MikroTik
على RouterOS v7، يكون الإعداد المقابل هكذا:
/interface wireguard add name=wg0 listen-port=13231 mtu=1420
/interface wireguard peers add interface=wg0 \
public-key="<SERVER_PUBLIC_KEY>" \
endpoint-address=203.0.113.10 endpoint-port=51820 \
allowed-address=10.66.66.0/24 persistent-keepalive=25s
/ip address add address=10.66.66.3/24 interface=wg0
/interface wireguard print
ينشئ RouterOS المفتاح الخاص تلقائياً، ويعرض المفتاح العام في أمر الطباعة الأخير. أضفه كعميل جديد في السيرفر بعنوان 10.66.66.3/32.
إضافة بقية الأجهزة
لكل عميل قسم [Peer] مستقل في ملف السيرفر، وعنوان مختلف داخل الشبكة. وتتوفر تطبيقات WireGuard لويندوز وأندرويد وiOS، وكلها تستورد ملف الإعداد نفسه.
وللهواتف طريقة أسهل من نقل الملفات، وهي عرض الإعداد كرمز QR على الشاشة ومسحه من التطبيق:
apt install -y qrencode
qrencode -t ansiutf8 < client.conf
افعل ذلك على شاشة لا يراها غيرك، فالرمز يحتوي المفتاح الخاص للعميل. ثم احذف ملف العميل من السيرفر بعد الانتهاء.
عندما لا يعمل النفق: جدول تشخيص سريع
| العرَض | السبب الأرجح | ما تفعله |
|---|---|---|
| لا مصافحة إطلاقاً | المنفذ مغلق، أو Endpoint خاطئ | افتح UDP وراجع العنوان والمنفذ |
| عداد الإرسال يرتفع والاستقبال صفر | المفتاح العام لا يطابق | أعد نسخ مفتاحي الطرفين |
| مصافحة ناجحة ولا يصل شيء | AllowedIPs خاطئ | راجع العناوين على الطرفين |
| النفق يعمل ولا خروج للإنترنت | التمرير أو NAT | راجع ip_forward واسم البطاقة |
| مواقع تعلق وبعضها يفتح | مشكلة MTU | اختبر حجم الحزمة وخفّض MTU |
ثلاث عادات بعد التشغيل
- اختبر إعادة التشغيل. أعد تشغيل السيرفر مرة، وتأكد أن النفق عاد وحده، قبل أن يعتمد عليه أحد.
- قيّد الإدارة. اجعل SSH يعمل بالمفاتيح، وبعد نجاح النفق يمكنك قصره على عناوين النفق فقط.
- احفظ الإعداد. خذ نسخة مشفرة من مجلد /etc/wireguard خارج السيرفر، فهي تختصر إعادة البناء عند أي طارئ.
وإن واجهت عطلاً لا يظهر في الجدول، فراجع سجل الخدمة أولاً بالأمر journalctl -u wg-quick@wg0. فأخطاء الكتابة في ملف الإعداد تظهر هناك بوضوح، مثل مفتاح ناقص أو سطر في غير قسمه. وعدّل شيئاً واحداً كل مرة، ثم أعد الاختبار، حتى تعرف ما الذي حلّ المشكلة فعلاً.
واحتفظ بملف قصير يشرح ما فعلته: اسم الواجهة، والمنفذ، وشبكة النفق، وأين توجد النسخة الاحتياطية. فمن يستلم السيرفر بعدك سيحتاج إلى هذه السطور القليلة أكثر من أي شيء آخر.
تنبيه أمني: لا تنقل المفاتيح الخاصة في رسائل المحادثة أو البريد. أنشئ مفتاحاً مستقلاً لكل جهاز، وعند فقدان جهاز احذف مفتاحه العام من السيرفر فوراً، فهذا كافٍ لإخراجه من الشبكة.
الخلاصة
التنصيب نفسه لا يأخذ وقتاً طويلاً. والفرق بين نفق هش ونفق موثوق هو التحقق بعد كل خطوة، وفصل مفاتيح الأجهزة، والتعامل مع جدار الحماية من البداية.
وإذا احتجت إلى سيرفر Debian بمعالج قوي ومنفذ مناسب لنفق شركتك، فسيرفرات مرام هوست جاهزة لذلك، وفريقنا يساعدك في اختيار المواصفات. وتتوفر لدينا خيارات منافذ بسرعات أعلى تصل إلى 100 جيجابت حسب التوفر والموقع، ونؤكد التفاصيل قبل الطلب.
