من Google cloud إلى Digital Ocean وفتح المنافذ في راوتر 5G

قبل 3 سنوات نقلت هذه المدونة من استضافة مشتركة بسيطة إلى Google cloud platform -نختصرها gcp- , وكان الهدف الرئيس من النقل هو تجربة وتعلم خدمات السحابة بشكل فعلي وفي بيئة عمل production وكمان استفيد من مساحة تخزين اكبر و نقل بيانات اكبر وسعر اقل.

داخل السحابة الخيارات كثيرة لبناء المدونة منها التطبيقات او الحاويات (managed apps/contianers) وعملها بسيط وبتكون شبه جاهزة, لكن قررت ابني كل شي من الصفر باستخدام جهاز افتراضي VM من خلال Compute Engine في gcp.

اخترت اصغر خطة f1-micro وكانت تكلفتها الشهرية تقريباً 7 دولار مع 10GB وبدون احتساب نقل البيانات outbound traffic حيث تسعيرته متغيرة حسب الاستخدام.

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

الاشتراك بانترنت 5G واحالة DSL الى مزبلة التاريخ

لفترة طويلة جداً جداً اتصالي بالانترنت على dsl بسرعة 10 ميقا ولا عندي الياف ولا 4G جيد اقدر اعتمد عليه, ميزة dsl فتح المنافذ (البورتات) بسهولة والوصول للشبكة الداخلية باعدادت بسيطة بالاضافة لثبات البنق ومافيه حد للبيانات.

الان حان الوقت للترقية لسرعات اعلى, ومقارنة بالديسل تعتبر جنونية من 10mbps تنزيل الى اكثر من 200mbps ومن نص ميقا رفع الى 50mbps (نعم نص ميقا 😭) ولو اوصل انتينا خارجي واعمل توجيه ممكن اوصل 500mbps, لكن من 10 ميقا لهذي السرعة العالية اكتفي انا قنوع 😩

نرجع للموضوع الرئيسي, بعد الاشتراك في الفايف جي فقدت خاصية فتح البورتات لأنه الاتصال اللاسكي وشبكات الجوال تستخدم double NAT او dNAT , باختصار ماتقدر توصل للـ public ip من داخل الشبكة, بيكون واضح لك ايبي خارجي مختلف عن الايبي الخارجي الحقيقي.

طبعاً بعد الاتصال ب 5G فقد هذا السيرفر R1Land الاتصال بالعالم الخارجي بسبب فقد خاصية فتح البورتات ومن هنا بدأت افكر في حلول لإنهاء عزلته.

هاا؟!

في مفهوم الشبكات غالباً الشبكة الداخلية تستطيع الوصول للانترنت مباشرة, و لكن اجهزة الانترنت لايمكنها الوصول لشبكتك الداخلية إلا بشروط معينة تعملها في الجدار الناري للرواتر او من خلال فتح البورت, طبعاً انسى انك تفتح بورت مع 5g حاليا (الغريب بعض المشغلين موفر IPv6 يعني الموضوع اسهل بس مدري ليش ماتفعلت)

الحل؟

جهاز خارجي يعمل كوسيط بين الشبكة الداخلية والانترنت (بين سيرفري و الانترنت) بحيث يكون سيرفري متصل بشكل دائم على الجهاز الوسيط, والجهاز الوسيط يكون هو واجهتي في الانترنت.

فكرة بسيطة وعملية وتقدر تنفذها باكثر من طريقة, اول شي طرا لي فكرة استخدام VPN لكن احتاج طريقة اكثر ثبات و مؤتمتة ولا تستهلك بيانات في حال عدم الاستخدام وما تقلل الاداء.

بدأت البحث حول overlay netwwork ولقيت مجموعة حلول وكان الاكثر سهولة Zerotier

ZeroTier

زيروتير يجمع عدة اجهزة من اماكن مختلفة تحت شبكة واحدة, وهذه الشبكة تحاكي طبقة Ethernet بجميع خصائصها, يعني كل الاجهزة الي تربطها باستخدام زيروتير تقدر تشوفها كأنها مرتبطة بسويتش واحد في مكان واحد 🔥

تشغيل الجهاز الوسيط ونقل المدونة على سحابة Digital Ocean

الهدف واحد من استخدامي لسحابة جديدة مثل digital ocean وهو تجربة منصة جديدة وخدماتها المختلفة, قبل انشيء الجهاز الوسيط -بسميه pipe– لاحظت خدمة التطبيقات Apps على ديجتال اوشن (تشغيل تطبيق على حاوية بخطوات بسيطة, موجودة الخدمة عند كل مقدمي السحابة) فكرت اجربها وانقل هذي المدونة عليها و اكرر الهدف واحد وهو اني اجرب الخدمة بالاضافة ان سعرها ثابت وموصفات كافية و ارخص من تشغيل المدونة على gcp ب 3 دولا تقريبا (مع احتساب سعر الترافيك).

توكلت على الله ونقلت المدونة و واجهت بعض المشاكل لان ماكان في تحكم كامل, لكن بعد كم يوم كملت النقل وكل شي رجع مثل اول. ميزة الـ managed Apps او الحاويات المدارة من مشغل السحابة تشيل عنك الصيانة والتحديثات, وكل الي عليك تربط تطبيقك بمستودعك ومع كل commit يتحدث تطبيق تلقائيا, وفيها خاصية auto scalability وهي اضافة موارد اكبر للتطبيق عند الحاجة مثلا اوقات الذروة او عند وجود ترافيك عالي. طبعا انا ماستفدت من كل هذا لأن الي عند مجرد موقع wordpress بسيط.

قررت يكون الجهاز الوسيط pipe عبارة عن vm على دجتال اوشن والي بيكون بين سيرفري و الانترنت, اخترت يكون vm عشان يكون عندي تحكم كامل , فالي سويته ثبت افضل اداة دوكر عشان اقدر اشغل اكثر من خدمة بسهولة اذا احتجت, طبعا سويت حاوية جديدة لـ zerotier وربطت سيرفي من البيت عليها (zerotier لازم يكون موجود على الطرفين).

الان صار عندي ايبي داخل pipe يمثل سيرفري فالبيت 10.0.0.1 وايبي pipe الوسيط 10.0.0.2 , ثم اضفت شروط في iptables داخل pipe تعمل routing بين الايبهات, باختصار قلت له اذا جاك اتصال ياpipe وديه للسيرفر, وكمان استخدمت reverse proxy عشان اوصل لبعض الخدمات في سيرفر R1land بشكل مباشر مثل nextcloud وغيره, طبعا كل هذا داخل حاويات دوكر 🥵

خاتمة

ليش كل هذي القروشة وليش التعب هذا (والبعض يقول ليش الخساير) وليش اصلا تكتب هنا.

الجواب ببساطة هذي هي هوايتي و وقتي الخاص اقضية فيها واتابع واستخدم التقنية واجربها لمجرد اني استهويها, ولافيها ضياع وقت ابداً طالما اجرب واتعلم شي جديد او استخدم شي قاعد يقدم لي حل فعلي في يومي. ولنفترض اني اضيع وقتي لكن هذا الشي الي اسويه افضل من ضياع الوقت على التلفزيون (الا اذا في مباريات قوية او للزعيم 😅)وافضل من ضياع الوقت على تصفح تويتر اللانهائي وافضل من لعب البلوت كل ليلة فالاستراحات, ناهيك عن التسكع في الكورنيش او الاسواق or those CITIES’ SEASONS 👻

اما الخساير الشهرية فهي اقل من مجموع سعر كوب القهوة الي تاخذه يومياً, عموما قد وضحت عن الهدف من المدونة وكتابتي فيها هنا.

اخيرا تذكر هذه الكلمات

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

 

لو حاب تستخدم دجتال اوشن تقدر تستخدم هذا الرابط referral وبيجيك رصيد 100 دولار صلاحيته شهرين.

DigitalOcean Referral Badge