يتزايد إقبال المستخدمين على تشغيل شبكات VPN الخاصة بهم بدلاً من الاعتماد على الخدمات المدفوعة الجاهزة، وذلك لكونها أرخص وأفضل من حيث الخصوصية، وتمنح المستخدم تحكماً كاملاً في الخادم. ومن بين الخيارات الأكثر فعالية في المناطق التي تشهد حجباً صارماً للشبكات، بروتوكول AmneziaWG، وهو بروتوكول طوّره مشروع Amnezia بالاعتماد على WireGuard.
يتميز بروتوكول WireGuard الكلاسيكي بالسرعة والموثوقية، ولكنه يعتمد على بنية حزم ثابتة وعملية مصافحة متوقعة، مما يُمكّن أنظمة فحص الحزم العميق (DPI) من تحديد بصمة الحزم وحظرها بدقة. يُعالج AmneziaWG هذه المشكلة بإضافة حزم بيانات غير مرغوب فيها إلى اتصال WireGuard العادي، وتغيير عشوائية رؤوس الحزم، وتعديل حجم حقول المصافحة، مما يُخفي بصمة WireGuard المميزة ويجعل حركة البيانات غير قابلة للتمييز عن حركة بيانات UDP العادية.
هل تستخدم بالفعل نفقًا تقليديًا وتتساءل عما إذا كان من المجدي التبديل؟ قارن هذا بإعداد OpenVPN/PPTP عادي في إعداد خادم VPN على Linux: PPTP أم OpenVPN؟، أو بـ WireGuard الأساسي (بدون تشفير) في كيفية إعداد WireGuard VPN على خادمك.
يشرح هذا الدليل كيفية إعداد خادم AmneziaWG يدويًا، دون استخدام Docker أو لوحة تحكم ويب، مما يجعله الأقل استهلاكًا لموارد الخادم الافتراضي الخاص (VPS) نفسه، ويتم تكوينه بالكامل من سطر الأوامر. إنه الخيار الأخف وزنًا ويعمل بكفاءة على الخوادم الافتراضية الخاصة ذات الميزانية المحدودة، لأنه لا يحتاج إلى واجهة مستخدم رسومية أو قاعدة بيانات أو خادم وكيل عكسي. يستخدم الخادم الموضح أدناه عنوان IP افتراضيًا، لذا استبدله بعنوان خادمك الافتراضي الخاص أينما ظهر.
ما ستحتاج إليه: خادم افتراضي خاص (VPS) يعمل بنظام Ubuntu 22.04/24.04 أو Debian 11/12، وصلاحيات الجذر، وعنوان IP الخاص بخادمك الافتراضي. اسم النطاق غير مطلوب، فبرنامج AmneziaWG لا يستخدم شهادات، لذا لا يوجد ما يجب تجديده ولا ما يمكن لفحص الحزم العميق (DPI) اعتباره مصافحة TLS.
ليس لديك خادم بعد؟ انظر كيفية طلب خادم
الاتصال بالخادم
ويندوز (PuTTY)
افتح برنامج PuTTY، وأدخل عنوان IP الخاص بخادمك الافتراضي في حقل اسم المضيف، واضبط المنفذ على 22، وقم بتسجيل الدخول كمسؤول باستخدام كلمة المرور التي أرسلها لك مزود خدمة الخادم الافتراضي عبر البريد الإلكتروني.
عنوان IP الخاص بالخادم: عنوان IP الخاص بك
تسجيل الدخول كـ: الجذر
كلمة المرور: كلمة مرورك
1. افتح برنامج PuTTY، وأدخل عنوان IP الخاص بخادمك الافتراضي في حقل اسم المضيف.
2. اضبط المنفذ على 22.
3. أدخل بيانات تسجيل الدخول كمسؤول النظام (root).
4. باستخدام كلمة المرور التي أرسلها لك مزود خدمة VPS عبر البريد الإلكتروني.
يجب أن تكون النتيجة كما يلي:
للحصول على شرح مفصل لكيفية الاتصال عبر PuTTY/SSH، راجع كيفية الاتصال بخادم Linux عبر SSH
لينكس / ماك أو إس (طرفية)
ssh root@YOUR_SERVER_IP
يتم تنفيذ جميع الأوامر أدناه على الخادم، في نفس جلسة SSH هذه - وهذا يغطي الأقسام من 2 إلى 5، بالإضافة إلى عمليات التحقق من جانب الخادم في القسم 9. أما الأقسام من 6 إلى 8 (تثبيت وتكوين عميل VPN) فتتم على جهازك الذي يعمل بنظام Windows/macOS/Linux، لأن هذا هو الجهاز الذي يحتاج VPN إلى التشغيل عليه؛ ويوضح كل قسم من هذه الأقسام بشكل صريح أي الأسطر، إن وجدت، لا تزال تتصل بالخادم.
إعداد الخادم
تحديث النظام
قبل تثبيت أي شيء، قم بتحديث قائمة الحزم وترقية الحزم المثبتة:
apt update -y && apt upgrade -y
إذا أدى هذا إلى ترقية النواة، فأعد تشغيل الجهاز قبل بناء وحدة نواة AmneziaWG في القسم 3، وإلا فقد يقوم DKMS بالبناء باستخدام رؤوس نواة خاطئة، وستفشل الوحدة في التحميل. (للحصول على معلومات إضافية حول apt وكيفية عمل مديري حزم Linux، راجع مديري حزم Linux ). تحقق باستخدام:
cat /var/run/reboot-required
تفعيل إعادة توجيه IP
يسمح هذا الإعداد للخادم بإعادة توجيه حزم العملاء إلى الإنترنت - بدونه، سيتم إنشاء النفق ولكن لن تمر أي حركة مرور من خلاله.
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/00-amnezia.conf
sysctl --system
يقوم الأمر الأول بإنشاء ملف تكوين مخصص؛ أما الأمر الثاني فيقوم بتطبيقه دون إعادة تشغيل الخادم.
قم بتكوين جدار الحماية (UFW)
للمزيد حول قواعد UFW، راجع قسم "تكوين جدار الحماية على نظام لينكس".
افتح المنفذين اللذين ستحتاج إليهما: 22/tcp لـ SSH (تجاهل هذه القاعدة وستخاطر بفقدان الوصول إلى الخادم) و 42666/udp، وهو المنفذ الذي سيستمع إليه AmneziaWG.
apt install ufw -y
ufw allow 22/tcp
ufw allow 42666/udp
ufw --force enable
ufw status
يجب أن تظهر كلتا القاعدتين على أنهما مسموحتان في مخرجات حالة ufw.
تثبيت AmneziaWG
لا يدعم نظام دبيان مستودعات البرامج الشخصية (PPAs) على غرار أوبونتو بشكل مباشر، لذا يجب إضافة المستودع يدويًا بدلًا من استخدام الأمر add-apt-repository. وينطبق الأمر نفسه على أوبونتو.
أضف المستودع يدويًا
echo "deb [arch=amd64] https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu jammy main" > /etc/apt/sources.list.d/amnezia.list
أضف مفتاح توقيع GPG
استخدم ملف سلسلة مفاتيح غير محمي بدلاً من أمر apt-key المهمل، واحصل على مفتاح التوقيع الحقيقي لـ PPA (بصمة الإصبع 75C9DD72C799870E310542E24166F2C257290828):
apt install -y gnupg2
gpg --keyserver keyserver.ubuntu.com --recv-keys 57290828
gpg --export 57290828 | tee /usr/share/keyrings/amnezia.gpg > /dev/null
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/amnezia.gpg] https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu jammy main" > /etc/apt/sources.list.d/amnezia.list
قم بالتحديث والتثبيت
apt update
apt install -y amneziawg
تحقق من تحميل الوحدة النمطية
modprobe amneziawg
lsmod | grep amnezia
إنشاء تكوين الخادم والعميل
تثبيت الأدوات المساعدة
قم بتثبيت تبعية رمز الاستجابة السريعة، ثم أنشئ دليل عمل مخصصًا وقم بتنزيل برنامج توليد التكوين الخاص بالمجتمع إليه:
apt install -y python3-qrcode
mkdir -p ~/awg && cd ~/awg
wget -O awgcfg.py \
https://gist.githubusercontent.com/remittor/8c3d9ff293b2ba4b13c367cc1a69f9eb/raw/awgcfg.py
إذا لم يكن python3-qrcode متوفرًا في مستودعات توزيعتك، فاستخدم الأمر pip3 install qrcode --break-system-packages (هذا الخيار مطلوب في Debian 12 والإصدارات الأحدث/Ubuntu 24.04، حيث يتم حظر تثبيت pip غير المُدار افتراضيًا). لا تُنفّذ كلا التثبيتين، اختر واحدًا فقط.
قم بإنشاء تكوين الخادم
أنشئ الملف /etc/amnezia/amneziawg/awg0.conf. يمكنك ترك الشبكة الفرعية الداخلية للنفق ومنفذ UDP على الإعدادات الافتراضية أو تعيين إعداداتك الخاصة:
python3 awgcfg.py --make /etc/amnezia/amneziawg/awg0.conf \
-i 10.10.8.1/24 -p 42666
يقوم الخيار -i بتعيين عنوان الشبكة الداخلية للنفق وقناع الشبكة؛ ويقوم الخيار -p بتعيين منفذ UDP الخاص بالخادم (وهو نفس المنفذ الذي تم فتحه في الخطوة 2.3).
أنشئ قالب تكوين العميل
python3 awgcfg.py --create
هذا يحفظ قالبًا في نفس المجلد الذي يتم إنشاء تكوينات العميل الفردية منه - فهو يتضمن بالفعل المفتاح العام للخادم وعنوان IP الخاص به ومعلمات التمويه (Jc وJmin وJmax وS1 وS2 وH1-H4) التي تميز AmneziaWG عن WireGuard العادي.
إضافة العملاء
أنشئ مدخلاً واحداً لكل جهاز — يمكن أن يكون الاسم أي شيء، على سبيل المثال اسم الجهاز:
python3 awgcfg.py -a "laptop"
python3 awgcfg.py -a "phone"
إنشاء ملفات العملاء ورموز الاستجابة السريعة (QR)
python3 awgcfg.py -c -q
سيحتوي مجلد ~/awg الآن على ملفات مثل laptop.conf و phone.conf، بالإضافة إلى رموز QR PNG المطابقة التي يمكنك مسحها ضوئيًا مباشرة في تطبيق الهاتف المحمول.
سيحتوي مجلد ~/awg الآن على ملفات مثل laptop.conf و phone.conf، بالإضافة إلى رموز QR PNG المطابقة التي يمكنك مسحها ضوئيًا مباشرة في تطبيق الهاتف المحمول.
بدء الخدمة وتفعيل التشغيل التلقائي
قم بتشغيل واجهة awg0 وقم بتمكينها من البدء تلقائيًا عند إعادة التشغيل:
systemctl enable --now awg-quick@awg0
systemctl restart [email protected]
systemctl status [email protected]
يجب أن تظهر الحالة "نشط" (متوقف) مع تشغيل الوحدة عند بدء التشغيل. إذا بدا أن وحدة التحكم "متوقفة" أثناء عرض السجلات، فاضغط على Q للخروج.
تحقق من قائمة النظراء النشطين وحركة المرور لكل نظير باستخدام:
awg show
الاتصال من ويندوز
كل ما ورد في هذا القسم يتم على جهاز الكمبيوتر الخاص بك الذي يعمل بنظام ويندوز، وليس عبر بروتوكول SSH - يجب تثبيت برنامج VPN على الجهاز الذي سيستخدم النفق فعليًا. الخطوة الوحيدة التي تتطلب الاتصال بالخادم هي تنزيل الملف عبر بروتوكول SCP في القسم 6.2، وحتى هذا الأمر يُكتب على جهاز الكمبيوتر الخاص بك، حيث يتم تنزيل ملف سبق للخادم إنشاؤه في القسم 4.
تثبيت العميل
يحتوي برنامج AmneziaWG على تطبيق مخصص لنظام ويندوز، وتُحاكي واجهته واجهة عميل WireGuard القياسي، ولكنه يدعم معلمات التشفير. حمّل برنامج التثبيت من المستودع الرسمي للمشروع.
https://github.com/amnezia-vpn/amneziawg-windows-client/releases
الرابط أعلاه هو صفحة إصدارات عميل ويندوز المُحدّثة - حمّل أحدث ملف .msi/.exe من هناك. هذه صفحة تفتحها في متصفحك، وليست أمرًا تلصقه في سطر الأوامر.
قم بتشغيل برنامج التثبيت واتبع خطوات معالج الإعداد؛ لا داعي لتغيير الإعدادات الافتراضية.
استورد الإعدادات
انسخ ملف تكوين العميل من الخادم إلى جهاز الكمبيوتر الخاص بك — أسهل طريقة هي استخدام الأمر scp، قم بتشغيله في PowerShell على جهاز الكمبيوتر الخاص بك، وليس على الخادم:
scp root@YOUR_SERVER_IP:~/awg/laptop.conf .
في تطبيق AmneziaWG، انقر فوق "استيراد النفق (الأنفاق) من ملف"، وحدد laptop.conf، وقم بتشغيل المفتاح الموجود بجوار النفق الجديد.
الاتصال من نظام التشغيل MacOS
يوجد خياران مدعومان:
- AmneziaWG (متجر تطبيقات ماك): عميل خفيف الوزن، يعمل على نظام macOS 12 والإصدارات الأحدث. ابحث عن "AmneziaWG" في متجر التطبيقات، ثبّته، ثم استخدم "استيراد الأنفاق من ملف" وحدد ملف .conf الخاص بك - نفس آلية عمل عميل ويندوز.
- AmneziaVPN (التطبيق الكامل، macOS 14+): قم بتنزيل ملف .pkg من github.com/amnezia-vpn/amnezia-client/releases/latest إذا كنت تفضل استخدام تطبيق Amnezia كامل الميزات بدلاً من عميل AmneziaWG الخفيف.
انسخ إعدادات العميل أولاً إذا لزم الأمر، كما هو الحال في الخطوة 6.2:
scp root@YOUR_SERVER_IP:~/awg/laptop.conf .
الاتصال من لينكس
على جهاز كمبيوتر مكتبي أو محمول يعمل بنظام لينكس، لديك خياران:
- واجهة المستخدم الرسومية: قم بتثبيت عميل سطح المكتب AmneziaVPN الكامل من github.com/amnezia-vpn/amnezia-client/releases، ثم قم باستيراد ملف .conf بنفس الطريقة كما هو الحال في Windows/macOS.
- واجهة سطر الأوامر، باستخدام نفس أدوات amneziawg المستخدمة على الخادم (awg / awg-quick):
apt install -y amneziawg
cp laptop.conf /etc/amnezia/amneziawg/awg0.conf
awg-quick up awg0
قم بتشغيل هذا الكود لقطع الاتصال.
awg-quick down awg0
لتفعيل النفق تلقائيًا عند تسجيل الدخول، قم بتمكينه كخدمة:
systemctl enable --now awg-quick@awg0
التحقق من الاتصال
بعد تفعيل النفق من القسم 6 أو 7 أو 8، ارجع إلى جهازك (وليس جلسة SSH) وافتح أي أداة للتحقق من عنوان IP الخاص بك في المتصفح - يجب أن يتطابق العنوان المعروض مع عنوان IP الخاص بخادمك الافتراضي الخاص. وللتحقق من ذلك من داخل جلسة SSH، شغّل الأمر awg show على الخادم وتأكد من أن نظير العميل يُظهر مصافحة حديثة وحركة مرور غير صفرية.
مرجع:
|
الحقل |
بعد التخفيض |
|
العنوان |
YOUR_TUNNEL_IP (عنوان العميل داخل النفق، على سبيل المثال 10.10.8.2/32 - يتم تعيينه تلقائيًا عند إضافة العميل في الخطوة 4.4) |
|
نقطة النهاية |
YOUR_SERVER_IP:42666 (عنوان IP الخارجي للخادم ومنفذ UDP الذي يتصل به العميل.) |
|
DNS |
8.8.8.8 |
|
Jc / Jmin / Jmax |
قد يختلف عدد وحجم حزم البيانات غير المرغوب فيها المرسلة قبل المصافحة بين الخادم والعميل دون قطع الاتصال. |
|
سنومك / سنومكس |
حجم حقول حشو المصافحة - يجب أن يتطابق بايتًا ببايت بين الخادم وكل عميل |
|
H1–H4 |
يجب أن تتطابق رؤوس أنواع الحزم التي تخفي البروتوكول على أنه حركة مرور عادية تمامًا، ويجب أن تكون فريدة من نوعها. |
يجب أن تكون قيم S1/S2 و H1–H4 متطابقة فقط على طرفي النفق؛ أما Jc و Jmin و Jmax فهي تتعلق فقط بكيفية قيام كل جانب بتعبئة حركة المرور غير المرغوب فيها الصادرة، لذلك يمكن أن تختلف قيم العميل والخادم بشكل مشروع، كما هو الحال في المثال أعلاه.
خاتمة
باتباع هذا الدليل، سيُشغّل خادمك الافتراضي الخاص (VPS) خادم AmneziaWG خاصًا به: وهو بروتوكول متوافق مع WireGuard، يتميز بتشفير حركة البيانات، ما يجعل من الصعب على أنظمة فحص الحزم العميق (DPI) تمييزه عن حركة بيانات UDP العادية مقارنةً بـ WireGuard. تعمل الخدمة كوحدة systemd باسم awg-quick@awg0، وتستمر في العمل بعد إعادة تشغيل الخادم دون أي تدخل منك.
تعمل ملفات .conf الناتجة ورموز QR في ~/awg ليس فقط مع عميل Windows ولكن يمكن أيضًا استيرادها إلى تطبيقات AmneziaWG أو Amnezia لأنظمة Android و iOS و macOS و Linux، بالإضافة إلى أجهزة التوجيه Keenetic و OpenWrt.
أضف عملاء جدد في أي وقت عن طريق تكرار الخطوات 4.4-4.5 (python3 awgcfg.py -a "name", ثم awgcfg.py -c -q) وإعادة تشغيل الواجهة باستخدام systemctl restart [email protected].
بعض العادات التي يجدر الاستمرار عليها بمجرد تشغيل الخادم:
- حافظ على تحديث النظام. أعد تشغيل الأمر apt update -y && apt upgrade -y بشكل دوري، وأعد تشغيل الجهاز بعد ترقيات النواة حتى يقوم DKMS بإعادة بناء وحدة amneziawg لتتوافق مع النواة الجديدة.
- قم بعمل نسخة احتياطية من ~/awg. فهو يحتوي على المفتاح الخاص لكل عميل وزوج المفاتيح الخاص بالخادم في awg0.conf؛ وفقدانه يعني إعادة إنشاء التكوينات لكل جهاز.
- قم بإلغاء الأجهزة المفقودة فورًا. احذف كتلة [Peer] المقابلة من الملف /etc/amnezia/amneziawg/awg0.conf، ثم أعد تشغيل النظام باستخدام الأمر systemctl restart. [البريد الإلكتروني محمي].
إذا لم يتم الاتصال، فتحقق بالترتيب التالي:
- حالة الخدمة (systemctl status) [البريد الإلكتروني محمي])
- قواعد جدار الحماية (حالة جدار الحماية ufw - يجب أن يكون المنفذ 42666/udp مفتوحًا)
- حالة DKMS/الوحدة النمطية إذا لم تبدأ الواجهة حتى (dkms status, lsmod | grep amnezia)
- قائمة النظراء النشطين على الخادم (awg show)
- أن إعدادات العميل تشير إلى عنوان IP الصحيح للخادم الخارجي
هل تقارن AmneziaWG بالخيارات الأخرى قبل اتخاذ القرار؟ راجع إعداد خادم VPN على Linux: PPTP أم OpenVPN؟ وكيفية إعداد Wireguard VPN على خادمك . إذا كنت تحتاج فقط إلى وكيل بسيط بدلاً من نفق VPN كامل، فإن إعداد 3proxy على CentOS/ArchLinux يُعد بديلاً أخف. لمزيد من المعلومات حول تأمين الخادم بشكل عام بعد تشغيل VPN، راجع مستخدمي Linux: الإدارة والصلاحيات.