بديل الشعاع للشبكات الصغيرة

الصورة

من المعروف أن تفويض المشتركين الذين يستخدمون بروتوكول RADIUS في شبكة المشغل يمنح الكثير من الفرص - وهي تعريفات تأخذ في الاعتبار حركة المرور والقدرة على تنظيم التفويض عند الوصول إلى الشبكة ونقطة الاتصال في شبكات Wi-Fi وعدد كبير من الأشياء الأخرى التي يصعب تنفيذها بدون RADIUS.

غالبًا ما يستخدم المشغلون RADIUS فقط لأنهم ببساطة غير مدركين لطرق الترخيص الأخرى أو أنهم ليسوا معرضين لخطر استخدام أي شيء بخلاف البروتوكول الشائع. في مثل هذه الحالات ، فإن جميع مزايا RADIUS لا تأتي بسبب الأساليب المعقدة لحجز الخادم أو غيابها. يؤدي قطع الاتصال غير المتوقع للفواتير إلى قطع اتصال الإنترنت بالمشتركين أثناء التشغيل الصحيح لمعدات الشبكة.

لذلك ، أود أن أتحدث عن كيف يمكن لمشغل الاتصالات تجنب التفويض عبر بروتوكول RADIUS على أجهزة التوجيه مع نظام تشغيل RouterOS (MikroTik). سنستخدم LanBilling 2.0 كنظام فوترة ، حيث يتم تنفيذ دعم أحداث تمكين وتعطيل وتحرير وإنشاء وحذف المشتركين. أي نظام بآلية حدث مماثلة مناسب لهذا الدور مع التحسينات.

يحدث التفاعل مع RouterOS من خلال API. بادئ ذي بدء ، تحتاج إلى إنشاء مستخدم مخصص على جهاز التوجيه ، والذي سيقوم بإجراء التحكم عن بعد.

ستكون تفاصيل الوصول على النحو التالي:
تسجيل الدخول: api
كلمة المرور: api
الوصول فقط من خادم الفوترة: 192.0.2.2

الصورة
الخطوة التالية هي تكوين جدار الحماية ، والذي سيؤدي جزءًا كبيرًا من عمل حظر المشتركين وإعادة التوجيه. لهذا ، من الضروري السماح لجميع المشتركين باستخدام الموارد المحددة (خادم DNS الخارجي ، موقع الشركة).

# الوصول الكامل إلى الموارد المحددة
/ ip جدار الحماية عامل التصفية إضافة سلسلة = إلى الأمام \
dst-address-list = الوجهات المسموح بها \
واجهة خارجية = ether-wan
علاوة على ذلك ، نستخدم الوجهات المسموح بها لقائمة العناوين. إذا لزم الأمر ، ستتم إضافة عناوين إليه ، وستبقى قواعد جدار الحماية كما هي.
بعد ذلك ، تحتاج إلى السماح للمشتركين بزيارة الموارد للدفع مقابل الخدمات. ستتيح الآلية الموضحة أدناه للمشتركين الوصول إلى جميع الموارد اللازمة للدفع.
# حظر الموارد الشعبية غير الضرورية للدفع
/ ip firewall layer7-protocol add name = social-شبكات \
regexp = vk.com | mail.ru | ok.ru
# نحن نتخطى المشتركين في عملية الدفع إلى https-resources
/ ip جدار الحماية عامل التصفية إضافة سلسلة = إلى الأمام \
منفذ dst = 443 \
layer7-protocol =! الشبكات الاجتماعية \
واجهة خارجية = ether-wan \
بروتوكول = tcp \
src-address-list = قائمة دافعي
بعد ذلك ، نحظر الوصول إلى الإنترنت لأولئك الذين لم يدفعوا مقابل الخدمة. في وقت الحظر ، تضيف الفواتير عنوان IP الخاص بالمشترك إلى قائمة العناوين المحظورة.
# حظر المتعثرين
/ ip filter جدار الحماية إضافة إجراء = رفض سلسلة = إلى الأمام \
واجهة خارجية = ether-wan \
رفض مع = icmp-admin-محظور \
src-address-list = ممنوع

بعد ذلك ، قم بتكوين NAT. يعد ذلك ضروريًا لإعادة توجيه المشتركين إلى صفحة تحتوي على إشعار حول حظر عناوين المشتركين وبثها للوصول إلى الإنترنت.

# نقوم ببث جميع العناوين الرمادية
/ ip firewall nat add action = نفس السلسلة = srcnat \
الواجهة الخارجية = ether-wan same-not-by-dst = yes \
src-address-list = nat-all-abonents \
إلى العناوين = 203.0.113.0 / 26
# لا تعيد التوجيه إلى المتسولين الذين هم في طور الدفع
/ ip firewall nat add action = Accept chain = dstnat \
src-address-list = قائمة دافعي
# انتقل إلى المتسول (192.0.2.3) جميع الآخرين
# غير دافعين ، لا تنسى الموارد المحددة
/ ip firewall nat add action = dst-nat chain = dstnat \
dst-address-list =! الوجهات المسموح بها \
بروتوكول = tcp src-address-list = محظور \
إلى العناوين = 192.0.2.3 إلى المنافذ = 80

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

بعد هذه التلاعبات ، يمكن لجهاز التوجيه أداء الوظائف الأساسية للوصول إلى المشتركين في الشبكة دون مساعدة RADIUS. سرعة التعرفة محدودة في / صف صف الفواتير البسيطة مع هذا. يتم حظر غير دافعي الدفع تلقائيًا ، ويتم إعادة توجيه طلباتهم إلى موقع التذكير. وفي الوقت نفسه ، لا يزال بإمكان المدينين الوصول إلى موارد خارجية مختارة (خدمات الدفع).

نقوم بإعداد الفواتير


يتضمن إعداد الفوترة كتابة برامج نصية لمعالجة الأحداث لتمكين حساب المشترك وتعطيله وإنشائه وحذفه وتحريره. سنستخدم Lanbilling كمثال.

الصورة

بالإضافة إلى ذلك ، تحتاج إلى التأكد من أن وكيل LBarcd هو المسؤول عن الحسابات.

الصورة

بادئ ذي بدء ، نعرض الفوترة أي النصوص النصية والأحداث التي سنستخدمها. يتم ذلك عن طريق تغيير المعلمات في ملف /etc/billing.conf.LBarcd.

يتم استدعاء كل برنامج نصي مع مجموعة محددة من المعلمات ، لكل مجموعة البرنامج النصي هي نفسها:

تسجيل الدخول (اسم المستخدم في الحساب)
كلمة المرور (كلمة مرور المستخدم في الحساب)
الجزء (عنوان IP للحساب)
قناع الشبكة (قناع عنوان IP بترميز نقطي عشري. على سبيل المثال ، 255.255.255.255)
حد السعر (سعر المعدل لهذا الحساب بالكيلوبت. على سبيل المثال ، 10240)

يمكن تنزيل ملف تهيئة حدث الوكيل من المستودع على github.
يتضمن كل برنامج نصي لمعالجة الأحداث مكتبة وظائف ، والتي بدورها تستخدم فئة PHP للعمل مع RouterOS من خلال واجهة برمجة التطبيقات. الكود المصدري لكل سكريبت ومكتبة الوظائف وفئة API متاح في مستودع جيثب.
بعد إجراء التغييرات على نظام "التكوين" جاهز للعمل. يستخدم المشتركون الذين لديهم رصيد إيجابي في الحساب الخدمة بهدوء ، ولا يمكن لغير دافعي استخدام الشبكة المحلية والمواقع المسموح بها فقط.
غالبًا ما يحدث أن يحتاج المشغل إلى أن يتمكن من تزويد المشترك بإدراج مؤقت مؤتمت للوصول ، أو ملء قائمة الموارد المسموح بها مع عناوين IP لجميع أنظمة الدفع المعروفة.

لهذا ، يتم إجراء تعديل صغير في شفرة المصدر في الحساب الشخصي للمشترك. تم تكوين وظائف أخرى بالفعل - قائمة دافعي قائمة العناوين في MikroTik ووظيفة إضافية allow_payment في مكتبة الوظائف.

في حالتنا ، يتم قبول الدفعات باستخدام Yandex.Checkout ، مما يعني أننا سنعدل الملف
/usr/local/billing/phpclient/client2/client/components/payment/yandex/Payment_Yandex_Pay.php إلى طريقة المعالجة للنقر على الزر "دفع" في حساب المستخدم الشخصي.

الصورة

يجب عليك إدراج صف

file_get_contents (" billing.example.com/tmp_access.php؟ip= ". $ _SERVER ["REMOTE_ADDR"]) ؛
قبل السطر
$ this-> post ($ params، $ this-> conf ("operatorURL"))؛
حيث billing.example.com هو عنوان واجهة الويب الإدارية Lanbilling .

وبالتالي ، نرسل طلب GET إلى برنامجنا النصي بشأن الفواتير ، وكمعلمة ننقل عنوان IP للعميل ، الموجود في حسابه الشخصي وينقر على زر "الدفع". يمكن عرض محتويات البرنامج النصي tmp_access.php وتنزيله على github. يضيف البرنامج النصي البعيد عنوان IP الخاص بالمشترك إلى قائمة دافعي المهلة 20 دقيقة ، وبعد ذلك ينتقل المشترك دون أي مشاكل إلى أي صفحة للدفع.

إذا دخل المشترك عبر الإنترنت عبر الهاتف النقال ، فسيتم إدراج العنوان "الأيسر" لشبكة الجوال في القائمة ، والذي سيتم حذفه تلقائيًا بعد 20 دقيقة. إذا جاء المشترك من عنوان الشبكة المحلية للمشغل ، فسيعمل النظام كما هو محدد. في الواقع ، يمكن إدخال نفس البرنامج النصي في صفحة تحذير الدفع ، حيث يتم وضع حقل إدخال رقم العقد ومبلغ الدفع وزر "الدفع".

يمكن للمرء أن يجادل مع ما سبق ، ولكن يجدر الأخذ بعين الاعتبار حقيقة أن هذا الحل ليس للشبكات الكبيرة. في الواقع ، مثل MikroTik مع RouterOS. إذا لم يكن لشبكتك أكثر من 3 آلاف مشترك ، فإن هذه الطريقة ستكون الأنسب.

إعداد Artyom Deulin

Source: https://habr.com/ru/post/ar404563/


All Articles