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

متى تفتح منافذ IPv6؟

السلام عليكم ورحمة الله وبركاته

قبل يومين تواصلت مع الدعم الفني لشركة stc لفتح المنافذ في IPv6 والصراحة فقدت الأمل منهم
هم يملكون عنواين IPv6 وموفرينها لكل عميل وهي شبه ثابته وعند التحقق منها في ipv6scanner.com تكون مطابقة لعنوان WAN في  المودم
بمعنى ان بامكانهم فتح المنافذ لعناوين IPv6 لكن لا يريدون ذلك


معلومة جانبية: شركة Zain موفرة عنوان IPv4 وIPv6 خاص للاعمال مفتوح كل المنافذ وسعر ارخص 375 ر.س. شامل الضريبة مقابل stc عنوان IPv6 فقط ومغلقة المنافذ بسعر 402.5 ر.س. شامل الضريبة


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

ونجحت في اعداد التالي في خادم بالبيت
1- مدونة بسيطة
https://sy.sa/ باستخدام WordPress

2- خدمة سحابية خاصة بي
https://cloud.sy.sa/ باستخدام Nextcloud

3- خادم لعبة Minecraft يدعم نسخة Java وBedrock
play.sy.sa:25565 للـJava و play.sy.sa:19132 للـBedrock

والعناوين الاخرى IPv6 تركتها على جنب تحول لنفس الخادم وهي عنواين 2001:470:1f0b:74c::/64 و 2001:470:7306::/48
بمجموع عدد يفوق 1,208,944,819,614,629,174,706,176 عنوان
http://[2001:470:1f0b:74c::]/
http://[2001:470:1f0b:74c:ffff:ffff:ffff:ffff]/
http://[2001:470:7306::]/
http://[2001:0470:7306:ffff:ffff:ffff:ffff:ffff]/

طبعا حجزت الاول والاخير من كل عنوان والباقي تركته لان ما احتاجها.

الان ساذكر المشاكل التي واجهتني
1- معدل الاستجابة عالي لان الاتصال يذهب لجدة ثم يعود لرفحاء ثم للخادم شرح الاتصال لعنوان IPv4
من بيتي لجده 40ms ومن جده لبيتي 40ms بمعنى ان اقل معدل اسجابة يكون 50ms اذا المتصل بخادمي من جده (بالنسبة لي برفحاء حصلت على 90ms بافضل حالة)
اما عنوان IPv6 فيبدا الاتصال من دبي الى جده ثم الى بيتي بمعنى معدل الاستاجبة لن يقل عن 100ms  (بالنسبة لي برفحاء حصلت على 240ms بافضل حالة) 

2- WireGuard لايدعم  UDP لذلك اضطريت لاستخدام حيله لتحويل منافذ UDP عبر TCP الى UDP بخادم المنزل

3- Oracle لا تعطي عنواين IPv6 لذلك اضطريت استخدم خدمة tunnelbroker المجانية من he.net (https://tunnelbroker.net/)

4- tunnelbroker موقعه في Dubai (اقرب مكان وجدته) ولذلك معدل الاستجابة مرتفع مرة

طبعا لن اكون في حاجة الى عمل كل ذلك ان وفرت stc وغيرها من شركات الاتصال عناوين IPv6 مع امكانية فتح منافذ (Port Forwarding)

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

اعداد 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
التصنيفات
غير مصنف

أهلاً بالعالم !

مرحباً بك في ووردبريس. هذه مقالتك الأولى. حررّها أو احذفها، ثم ابدأ النشر!