التصنيفات
الخوادم والشبكات

اعداد WireGuard والاتصال به

السلام عليكم ورحمة الله وبركاته
هذا مقال يشرح كيفية تثبيت واعداد WireGuard من جهة العميل والخادم لانشاء شبكة انترنت وهمية (VPN) واستخدامه للتخفي او لعمل Reverse Proxy واستضافة مواقع او تطبيقات محلي خلف اي NAT

اولا ماهو WireGuard؟

هو بروتوكول مفتوح المصدر لانشاء شبكة انترنت وهمية مشفرة وهو يمتاز بالسرعة وسهولة الاعداد وياتي مدمج مع نواة لينكس لذلك الاداء فيه اعلى بكثير من اي بديل اخر مثل OpenVPN

المتطلبات

1- خادم لا يعمل خلف NAT (مثل CGNAT) ويملك عنوان WAN يمكن الوصول له عبر الانترنت
2- امكانية الوصول لمنافذ UDP (UDP ports) بسبب استخدامها من WireGuard
3- جهاز عميل (يمكن ان يكون هاتفك او جهازك المكتبي او المتنقل) يملك وصول للانترنت وللخادم

الإعداد

ساشرح تثبيت WireGuard على Ubuntu Server 20.04 Focal Fossa (ربما اصدارات اقدم من Ubuntu لن يكون مدعوم فيها) طبعًا بامكانك تثبيته على اي خادم تحب لكن اوامر تثبيت الحزم ستختلف

تثبيت WireGuard في جهاز العميل والخادم بامر واحد لا غير (قد يختلف من توزيعة لاخرى)

sudo apt install wireguard

بعد التثبيت ستحتاج الى انشاء مفتاح عام وخاص لكل جهاز (الخادم واي عميل) عن طريق امر wg وياتي بعد تثبيت WireGuard
لتوليد المفتاح الخاص نفذ الامر التالي

umask 077 # تغيير الصلاحيات الافتراضي لاي ملف ينشاء من المستخدم لمنع الوصول للمفاتيح
wg genkey > privatekey # توليد المفتاح الخاص

بعدها استخدم المفتاح الخاص لتوليد المفتاح العمل (يستخدم للاتصال من جهة العمل ولمصادقة العميل من جهة الخادم) عن طريق الامر التالي

wg pubkey < privatekey > publickey

الان تملك مفتاحين هما publickey وprivatekey وهذه مخصص للخادم فقط
عليك اعادة العملية بانشاء مفاتيح للعميل وسوف اغير اسمها الى clientpublickey وclientprivatekey لتسهيل الشرح

umask 077
wg genkey > clientprivatekey
wg pubkey < clientprivatekey > clientpublickey

الان تملك 4 مفاتيح وهم مفتاحين عامة ومفتاحية خاصة وتنقسم الى مفتاح عام publickey ومفتاح خاص privatekey للخادم ومفتاح عام clientpublickey ومفتاح خاص clientprivatekey للعميل


فاصل اشرح الشبكة :sweat_smile:
الشبكة التي سوف اقوم باعدادها ستكون كتالي
الخادم يملك عنوان 10.0.0.1 والعميل يملك عنوان 10.0.0.2 ويملكون اتصال مفتوح فيما بينهم
اكمل المقال…


الان بعد توليد المفاتيح علينا استخدمها :slight_smile:
سنحتاج الى انشاء interface خاص بـ WireGuard للخادم يحفظ بصلاحية جذر في
/etc/wireguard/wg0.conf
ويحتوي التالي

[Interface]
PrivateKey = <استبدال هذا بـ privatekey للخادم>
Address = 10.0.0.1/24
ListenPort = 51820

[Peer]
PublicKey = <استبدال هذا بـ clientpublickey للعميل>
AllowedIPs = 10.0.0.2/32

في هذا الاعداد حددنا المفتاح privatekey للخادم وحددنا عنوانه الخاصة داخل الشبكة الوهمية 10.0.0.1 والمنفذ 51820 (تقدر تغيره لان بعض الشركات الساحبية تحجبة :slight_smile: ) ليستمع بواسطته على اي اتصال عميل WireGuard
وايضا حددت Peer (مقترن وامكانك اضافة عدد لا محدود منهم) واستخدمة المفتاح العام clientpublickey للعميل وحددت عنوانه في الشبكة الخاصة 10.0.0.2
بعد ان تحفظ الملف عليك تنفيذ امر wg-quick up لتبدا الشبكة

wg-quick up wg0

ولتفعيله في systemd عن اعادة تشغيل الجهاز يفتح الشبكة مرة اخرى نفذ الامر التالي

systemctl enable [email protected]

لتحقق من حالة الشبكة نفذ امر wg بصلاحية جذر

wg

الان متبقي فقط انشاء interface في جهة العميل وهو مطابق بعض الشيء
انشاء ملف في
/etc/wireguard/wg0.conf واحفظة بصلاحيات جذر ومحتواه التالي

[Interface]
Address = 10.6.0.2/24
PrivateKey = <استبدل هذا بـ clientprivatekey للعميل>

[Peer]
PublicKey = <استبدل هذا بـ publickey للخادم>
AllowedIPs = 10.0.0.0/24
Endpoint = <استبدل هذا بـ IP للخادم>:51820
PersistentKeepalive = 15

بعد ان تحفظ الملف عليك تنفيذ امر wg-quick up لتبدا الشبكة

wg-quick up wg0

ولتفعيله في systemd عند اعادة تشغيل الجهاز يتصل بالشبكة مرة اخرى
نفذ الامر التالي

systemctl enable [email protected]

لتحقق من حالة الشبكة نفذ امر wg بصلاحية جذر

wg

والان ان كان تنفيذك للشرح صحيح ستتمكن من عمل ping للخادم من جهة العميل

ping 10.0.0.1

وللعميل من جهة الخادم

ping 10.0.0.2

3 تعليقات على “اعداد WireGuard والاتصال به”

[…] المهم سحبت عليهم وبحث عن طريقة لتوفير عناوين لي IPv6 وIPv4وجدت ان شركة Oracle السعودية وفرت خدماتها السحابية في المملكة العربية السعودية ومن بين تلك الخدمات خادم مجاني خادم بمواصفات ممتازة 1Gbps تنزيل ورفع ومساحة 40GB مع معالج 1 OCPUتوكلت على الله وحجزت السيرفر وجهزت tunnel عن طريق WireGuard (شرح لاعداده) […]

استخدم وايرقارد لكن لما اتصل من خارج الشبكة للسيرفر المحلي.. ما اقدر اوصل لبقية الهوست المحلية.

فرضا السيرفر 192.168.1.10..لما اتصل عليه ما اقدر اشوف الا هو.. وما اقدر اشوف بقية اجهزة الشبكة

للامن ستكون محظورة لكن بامكانك عمل route لها من الخادم
في الخادم قم بالتالي
اسمح بـ ICMP بينهم في الخادم

sudo iptables -S | grep prohibited
sudo iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited

وتاكد تفعل net.ipv4.ip_forward بشكل دائم

sudo perl -pi -e 's/#{1,}?net.ipv4.ip_forward ?= ?(0|1)/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
cat /proc/sys/net/ipv4/ip_forward
رد

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *