خادم النفق هو القطعة التي تلتقي عندها كل أبراجك. في هذا الجزء نبنيه من الصفر على Proxmox: حاوية خفيفة، وWireGuard، ومنفذ واحد مفتوح — وننتهي بنفق جاهز لاستقبال أول راوتر.
كل ما في هذه السلسلة مُنفَّذ فعلاً. بنينا المختبر على سيرفر Proxmox VE: خادم WireGuard على حاوية، وراوتر MikroTik RouterOS 7 على جهاز افتراضي يمثّل برجاً، وشبكة أجهزة سكتر خلفه. كل مخرج أمر في هذه المقالات مأخوذ من ذلك المختبر حرفياً — وقد استبدلنا العناوين العامة الحقيقية بعناوين التوثيق المخصّصة لهذا الغرض (RFC 5737) حفاظاً على أمان السيرفر.
ما الذي يحتاجه الخادم فعلاً؟
| المورد | المطلوب | لماذا |
|---|---|---|
| المعالج | نواة واحدة | تشفير WireGuard رخيص جداً |
| الذاكرة | 512 ميغابايت | النفق لا يحتفظ بحالة ثقيلة |
| القرص | 4 غيغابايت | نظام وحزم فقط |
| العنوان | عام وثابت | هذا هو الشرط الحقيقي الوحيد |
| التوفّر | 24 ساعة | هو نقطة اللقاء — إن سقط سقط وصولك لكل الأبراج |
لا تضع خادم النفق على راوتر أحد الأبراج ولا على حاسبة في المكتب. سبب واحد يكفي: إن سقط ذلك البرج أو انقطعت كهرباء المكتب، فقدت الوصول إلى كل شبكتك دفعةً واحدة، ولن تستطيع حتى معرفة ما حدث. نقطة اللقاء يجب أن تكون في مكان لا يتأثر بأي برج.
الخطوة 1: أنشئ الحاوية
pct create 150 local:vztmpl/debian-13-standard_13.1-2_amd64.tar.zst \
--hostname vpn-hq \
--memory 512 --cores 1 \
--rootfs local-lvm:4 \
--net0 name=eth0,bridge=vmbr0,ip=203.0.113.20/28,gw=203.0.113.1 \
--nameserver 1.1.1.1 \
--unprivileged 1 --onboot 1 --password 'كلمة-مرور-قوية'
pct start 150
لماذا حاوية LXC لا جهاز افتراضي؟ لأن WireGuard يعمل داخل نواة لينكس، والحاوية تستعمل نواة المضيف مباشرةً — فتحصل على الأداء نفسه بذاكرة أقل بكثير. تأكّد فقط أن وحدة wireguard محمّلة على المضيف: modprobe wireguard.
الخطوة 2: نصّب WireGuard وولّد المفاتيح
pct exec 150 -- bash
apt-get update
apt-get install -y wireguard-tools
# مفتاحا الخادم
wg genkey | tee /etc/wireguard/server.key | wg pubkey > /etc/wireguard/server.pub
chmod 600 /etc/wireguard/server.key
cat /etc/wireguard/server.pub
احفظ المفتاح العام — ستضعه في كل راوتر تربطه لاحقاً. أما المفتاح الخاص فلا يغادر الخادم إطلاقاً.
الخطوة 3: ملف الإعداد
cat > /etc/wireguard/wg0.conf <<'EOF'
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <محتوى server.key>
# كل برج يُضاف هنا لاحقاً كـ [Peer]
EOF
chmod 600 /etc/wireguard/wg0.conf
ثلاثة أسطر تكفي: عنوان الخادم داخل شبكة النفق، والمنفذ الذي يستمع عليه، ومفتاحه الخاص.
اختيار شبكة النفق
10.8.0.0/24 اختيار جيد: بعيد عن الشبكات المنزلية الشائعة، وعن شبكات أبراجك التي ستكون 192.168.88.0/24 وما بعدها. الخطة المقترحة:
| العنوان | لمن |
|---|---|
| 10.8.0.1 | الخادم |
| 10.8.0.2 إلى 10.8.0.49 | راوترات الأبراج — واحد لكل برج |
| 10.8.0.50 فما فوق | أجهزة الفنّيين والمدير |
الخطوة 4: التوجيه وتشغيل الخدمة
لأن الخادم سيمرّر حركةً بين النفق وشبكات الأبراج، فعّل التوجيه:
echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/99-wg.conf
sysctl --system
systemctl enable --now wg-quick@wg0
wg show
الخطوة 5: افتح منفذاً واحداً فقط
هذا كل ما يُفتح على الإنترنت في المعمارية كلها:
ufw allow 51820/udp comment 'WireGuard'
ufw allow 22/tcp comment 'SSH'
ufw enable
ufw status
منفذ UDP لا TCP. خطأ شائع يضيّع ساعة: تفتح 51820 على TCP فلا يعمل شيء ولا تظهر أي رسالة خطأ. WireGuard يعمل على UDP حصراً.
وميزة إضافية في WireGuard تستحقّ المعرفة: لا يردّ على من لا يملك مفتاحاً. فاحص المنافذ الذي يمرّ على عنوانك لا يرى منفذ 51820 مفتوحاً أصلاً — يبدو كأن لا شيء هناك. هذا وحده يُخرجك من قوائم الأهداف التي تبني الروبوتات عليها هجماتها.
الخطوة 6: تحقّق قبل أن تكمل
# الواجهة تعمل؟
wg show wg0
# تستمع على المنفذ الصحيح؟
ss -lunp | grep 51820
# تعمل بعد إعادة التشغيل؟
systemctl is-enabled wg-quick@wg0
الفحص الثالث هو الذي يُنسى ثم يكتشفه الناس بعد انقطاع كهرباء. تأكّد منه الآن.
إضافة أول نظير — الصيغة العامة
كل برج أو جهاز يُضاف بثلاثة أسطر:
[Peer]
PublicKey = <المفتاح العام للطرف الآخر>
AllowedIPs = 10.8.0.2/32
أو بلا تعديل الملف يدوياً:
wg set wg0 peer <PUBLIC_KEY> allowed-ips 10.8.0.2/32
wg-quick save wg0 # لتثبيتها في الملف
AllowedIPs هو أهم حقل في WireGuard وأكثره سوء فهم. هو ليس «قائمة سماح» فقط، بل جدول توجيه: يقول للخادم «كل ما وجهته هذه العناوين، أرسله إلى هذا النظير». ولهذا حين نريد الوصول إلى شبكة برج كاملة سنكتب هنا 10.8.0.2/32,192.168.88.0/24 — وسنفعل ذلك في الجزء الرابع.
أخطاء شائعة وحلولها
| العَرَض | السبب | الحل |
|---|---|---|
| wg-quick يفشل: Unable to access interface | وحدة wireguard غير محمّلة على المضيف | modprobe wireguard على المضيف لا داخل الحاوية |
| الخدمة تعمل ولا اتصال | المنفذ مفتوح على TCP | افتحه على UDP |
| النفق يقوم ثم يسقط بعد دقائق | لا يوجد persistent-keepalive على الطرف خلف NAT | اضبطه 25 ثانية على طرف البرج |
| يعمل ولا يُقلع بعد إعادة التشغيل | الخدمة غير مفعّلة | systemctl enable wg-quick@wg0 |
| Permission denied عند القراءة | صلاحيات ملفات المفاتيح | chmod 600 /etc/wireguard/* |
| مصافحة تحدث ثم لا ترافك | AllowedIPs لا يشمل الشبكة المقصودة | راجع الحقل على الطرفين |
أسئلة شائعة
هل أستطيع استعمال منفذ غير 51820؟
نعم، وقد يكون أفضل: بعض الشبكات تحدّ من المنفذ الافتراضي. اختر منفذ UDP عالياً وثبّته في كل الأطراف.
كم نظيراً يتحمّل الخادم؟
آلاف. الحدّ العملي هو عرض النطاق لا عدد النظراء — وحركة الإدارة صغيرة جداً.
هل أحتاج اسم نطاق للخادم؟
لا، العنوان يكفي. لكن استعمال اسم نطاق يجعل تغيير الخادم لاحقاً أسهل بكثير: تعدّل سجلاً واحداً بدل إعداد كل برج.
كيف آخذ نسخة احتياطية؟
مجلد /etc/wireguard كله — بضعة كيلوبايتات فيها كل شيء. احفظها في مكان آمن، فهي تحوي المفتاح الخاص.
وإن تسرّب مفتاح أحد الأبراج؟
احذف نظيره من الخادم بأمر واحد، وولّد للبرج مفتاحاً جديداً. بقية الأبراج لا تتأثر إطلاقاً — وهذه ميزة نموذج المفاتيح.
الخطوة التالية
الخادم جاهز ولا نظراء له. في الجزء الثالث نربط أول راوتر MikroTik ونثبت أن النفق يعمل في الاتجاهين.
هذه المقالة من سلسلة «أدر شبكتك من مكتبك» — بناء شبكة إدارة عن بُعد لمزوّدي الإنترنت ومكاتب الشبكات: ١. لماذا VPN أصلاً · ٢. خادم WireGuard · ٣. اربط راوتر البرج · ٤. أجهزة السكتر خلف الراوتر · ٥. اعزل شبكة المشتركين · ٦. صلاحية لكل فنّي · ٧. حين ينقطع النفق