لدينا سيناريو تم فيه اكتشاف أكثر من 13,000 زاحف (crawler)، وقد ارتفعت حركة مرور قاعدة البيانات إلى مستويات قياسية. من الواضح أن شخصًا ما يقوم بجمع بيانات منتدياتنا، لكنني غير متأكد من كيفية تحديد عنوان IP واتخاذ إجراءات ضده، نظرًا لأنه يمر عبر DNS الخاص بـ CloudFlare.
هل لديكم أي أفكار حول كيفية القيام بذلك؟
أود إعداد حل تلقائي للحد من المعدلات (rate limiting) يمكنه اكتشاف السلوك العدواني للشبكة، ثم الحد من معدل الوصول إليه أو تعطيله لفترة زمنية معينة.
يجب أن أذكر أنني أواجه عائقًا حقيقيًا، حيث ألاحظ أن الوصول إلى قاعدة البيانات (أستخدم خادم قاعدة بيانات آخر في نفس الموقع) مستقر عند معدل يتراوح بين 13 و20 ميجابت في الثانية، وقد ارتفع هذا المعدل بشكل حاد عندما زاد عدد الزواحف إلى مستويات قصوى، ولم يستقر منذ ما يقرب من أسبوعين. كما يُظهر لوحة تحكم الخادم أن حركة المرور قد قفزت إلى مستويات مبالغ فيها في نفس الوقت، ولم تنخفض عن هذا المستوى من الوصول المستمر، بل إنها تتجه نحو استنفاد عرض النطاق الترددي للخوادم إذا استمر هذا الوضع.
كما قد تتذكر، كنت أفكر في محاولة الحد من استهلاك عرض النطاق الترددي في هذه المرحلة من خلال تغيير كل شيء لاستخدام عناوين IP خاصة داخلية، حيث أن ذلك على الأقل سيمنعني من الحصول على فواتير كبيرة.
لاحظت شيئًا غريبًا آخر هنا. قمت بتغيير اتصال قاعدة البيانات من عنوان IP العام إلى عنوان IP الخاص لتجنب استهلاك رخصة النقل الشهرية بسرعة كبيرة، لكنني على خادم قاعدة البيانات توقعت أن أرى فقط اتصالات تتم عبر عنوان IP الخاص من خادم Discourse Docker. أرى بالفعل حركة مرور من عنوان IP الخاص المحلي الآن، لكنني ما زلت أرى كميات هائلة من الحركة قادمة من عنوان IP العام، وبالتالي ما زلت أستهلك الرخصة الشهرية بسرعة.
لقد بحثت جيدًا عن عنوان IP العام واسم المضيف لخادم قاعدة البيانات على خادم Discourse Docker، لكنني لم أجدها في أي مكان. حتى لو دخلت إلى التطبيق (./launcher enter app) وقمت بتشغيل أمر env | grep DB، أرى عنوان IP الخاص الصحيح للشبكة المحلية المستخدم هنا. يمكنني البحث في نظام الملفات عبر أمر grep، لكنني ببساطة لا أرى التكرارات التي أتوقعها.
هل لديك أي أفكار حول كيفية استمرار Discourse أو صورة Docker في الوصول إلى عنوان IP الخاطئ؟ لا أستطيع ببساطة معرفة مصدر كل هذه الحركة من عنوان IP العام على خادم Discourse.