مع عميلين أو ثلاثة، إدارة WireGuard سهلة. ثم تكبر الشركة: موظف يغادر، وهاتف يضيع، وفرع جديد يُفتتح، وراوتر يُستبدل. وبعد سنة تفتح ملف الإعداد فتجد مفاتيح لا تعرف أصحابها.

يتعامل WireGuard مع الهوية بطريقة بسيطة: مفتاح عام يقابله عنوان مسموح. لا أسماء مستخدمين ولا كلمات سر. وهذه البساطة قوة، لكنها تعني أن التنظيم يقع عليك أنت. فهذا المقال يعطيك طريقة تبقى واضحة حين يكثر العملاء.

القاعدة الأولى: مفتاح مستقل لكل جهاز

لا تعطِ عدة أجهزة مفتاحاً واحداً. فهذا لا يوفر عليك شيئاً، ويسبب مشكلتين:

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

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

# على جهاز العميل
umask 077
wg genkey | tee client.key | wg pubkey > client.pub

# يُرسل محتوى client.pub فقط إلى مدير الشبكة

وعلى RouterOS v7، ينشأ المفتاح الخاص داخل الراوتر، ويعرض المفتاح العام في الأمر:

/interface wireguard print

سجل بسيط يحفظ الترتيب

WireGuard نفسه لا يعرف من هو «جهاز المحاسبة». لذلك احتفظ بسجل واضح، وضع تعليقاً فوق كل عميل في ملف الإعداد:

# /etc/wireguard/wg0.conf
[Interface]
Address = 10.66.66.1/24
ListenPort = 51820
PrivateKey = <SERVER_PRIVATE_KEY>

# فرع-2 راوتر - أضيف بعد موافقة مدير الشبكة
[Peer]
PublicKey = <CLIENT_PUBLIC_KEY>
AllowedIPs = 10.66.66.10/32

# موظف-مبيعات-حاسوب محمول
[Peer]
PublicKey = <CLIENT_PUBLIC_KEY_2>
AllowedIPs = 10.66.66.20/32

وتستحق خطة العناوين دقيقة تفكير في البداية. فبدل التوزيع العشوائي، خصص نطاقاً لكل مجموعة:

المجموعةنطاق العناوينمثال استعمال
السيرفرات10.66.66.1-9خدمات داخلية
الفروع10.66.66.10-19راوترات MikroTik
الموظفون10.66.66.20-99حواسيب وهواتف
جهات مؤقتة10.66.66.100-119فني أو مقاول لفترة محددة

فائدة هذا أنك تستطيع كتابة قواعد جدار لكل مجموعة، وأن تعرف نوع الجهاز من عنوانه في السجلات.

AllowedIPs ليس صلاحيات

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

لذلك استفد من خطة العناوين. فهذا مثال يمنع الجهات المؤقتة من الوصول إلى بقية النفق:

iptables -I FORWARD 1 -i wg0 -s 10.66.66.100/30 -d 10.66.66.0/24 -j DROP

يغطي النطاق في المثال أربعة عناوين فقط، فعدّله بحسب مجموعتك. وأضف القاعدة إلى PostUp حتى تبقى بعد إعادة التشغيل.

إضافة عميل دون قطع الآخرين

إعادة تشغيل الواجهة تقطع الجميع لحظياً. والأفضل إضافة العميل وهي تعمل:

# إضافة حية
wg set wg0 peer <CLIENT_PUBLIC_KEY> allowed-ips 10.66.66.21/32

# التحقق
wg show wg0

هذا الأمر لا يكتب في الملف، فلا تنسَ إضافة القسم نفسه إلى wg0.conf حتى لا يضيع بعد إعادة التشغيل. وإذا عدّلت الملف أولاً، فيمكنك تطبيق الفروق دون قطع:

bash -c 'wg syncconf wg0 <(wg-quick strip wg0)'

وانتبه لخيار SaveConfig. فإذا كان true، تكتب الأداة الحالة الجارية فوق ملفك عند الإيقاف، فقد تضيع تعليقاتك وتعديلاتك. والأسلم إبقاؤه معطلاً وإدارة الملف بنفسك.

مفتاح إضافي: PresharedKey

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

wg genpsk > client.psk

# في قسم [Peer] على الطرفين
PresharedKey = <PRESHARED_KEY>

ولأنه سر مشترك، يجب نقله عبر قناة آمنة، وأن يكون مختلفاً لكل عميل.

الإلغاء: أهم إجراء في اليوم السيئ

ضاع هاتف موظف، أو غادر الشركة. الإلغاء يجب أن يكون سريعاً وكاملاً:

# إزالة حية
wg set wg0 peer <CLIENT_PUBLIC_KEY> remove

# تأكد من اختفائه
wg show wg0 peers

ثم احذف قسمه من wg0.conf. فإذا اكتفيت بالإزالة الحية، عاد المفتاح مع أول إعادة تشغيل. وهذا خطأ يتكرر كثيراً.

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

تغيير مفتاح عميل دون انقطاع طويل

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

وعلى MikroTik بنظام RouterOS v7، احذف العميل على الراوتر الذي يقوم بدور السيرفر هكذا:

/interface wireguard peers remove [find public-key="<CLIENT_PUBLIC_KEY>"]
/interface wireguard peers print

المراقبة ودورية المراجعة

يعطيك WireGuard معلومات كافية لمعرفة من يعمل ومن اختفى:

# آخر مصافحة لكل عميل بتوقيت يونكس
wg show wg0 latest-handshakes

# البيانات المرسلة والمستقبلة لكل عميل
wg show wg0 transfer

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

جدول مراجعة بسيط يكفي:

  • كل شهر: احذف العملاء الذين لم يتصلوا منذ مدة تحددها أنت.
  • كل ربع سنة: طابق القائمة مع الموظفين الحاليين.
  • عند أي مغادرة: ألغِ المفتاح في اليوم نفسه.
  • لكل وصول مؤقت: حدد تاريخ إزالة منذ البداية.

ولكي لا تعتمد على الذاكرة، يعرض هذا السطر المفاتيح التي لم تصافح منذ 30 يوماً، أو لم تصافح قط:

wg show wg0 latest-handshakes | \
  awk -v now="$(date +%s)" '$2 == 0 || now - $2 > 30*86400 {print $1}'

والمدة هنا مثال فقط، فاختر ما يناسب طبيعة عملك. فجهاز احتياطي في فرع قد لا يتصل إلا عند الطوارئ، ووجوده مقصود.

واحتفظ أيضاً بسجل تغييرات قصير: من أضاف هذا العميل، ومتى، وبطلب من؟ فهذه الأسئلة تظهر دائماً بعد سنة، حين لا يتذكر أحد الجواب.

أين تحفظ الأسرار؟

لا تحفظ ملفات .conf في مجلد مشترك، ولا ترسلها عبر مجموعات المحادثة، ولا ترفعها إلى مستودع كود. واجعل صلاحيات المجلد مقيدة:

chmod 700 /etc/wireguard
chmod 600 /etc/wireguard/*

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

من يملك صلاحية الإضافة؟

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

وإذا كبرت الشبكة كثيراً، ففكر في أداة إدارة أو سكربت داخلي يولد الإعدادات من سجل واحد. لكن ابدأ بالترتيب اليدوي أولاً، فالأداة تسرّع النظام الموجود، ولا تعوّض غيابه.

تذكر: المفتاح العام يمكن نقله بأمان، أما الخاص فهو الهوية نفسها. ومن يملك مفتاحاً خاصاً صالحاً يدخل الشبكة بصلاحيات صاحبه، دون سؤال وبلا كلمة سر. لذا عامله كما تعامل مفتاح الخزنة.

الخلاصة

مفتاح لكل جهاز، وعناوين منظمة، وسجل واضح، وإلغاء سريع، ومراجعة دورية. هذه الخمسة تحول ملف إعداد فوضوي إلى نظام يُعتمد عليه، مهما كبرت الشبكة.

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