لماذا يتجدد وقت كرت الهوت سبوت عند إعادة الاتصال؟ وكيف تحسب الوقت الإجمالي

الجواب المختصر

إذا كان كرت «4 ساعات» يعطي المستخدم 4 ساعات جديدة كلما فصل وأعاد الاتصال، فالسبب أن الكرت محدود بـ Session-Timeout فقط، وهو حد للجلسة الواحدة. الحل عدّاد للوقت الإجمالي في خادم RADIUS يجمع دقائق كل الجلسات ويرفض الكرت عند النفاد.

آخر تحديث: · فريق برق رايديس

ثلاث طرق لتحديد وقت الكرت

الخاصيةماذا تحددعند إعادة الاتصال
Session-Timeoutمدة الجلسة الحاليةتبدأ من جديد ✗
Max-All-Sessionمجموع وقت الاتصال عبر كل الجلساتيكمل من حيث توقف ✓
Expire-Afterمدة الصلاحية من أول دخول (وقت ساعة الحائط)يستمر العد حتى لو لم يكن متصلاً ✓

كيف يعمل العدّاد في FreeRADIUS

وحدة sqlcounter تجمع AcctSessionTime من سجلات المحاسبة للمستخدم، وتقارنه بالحد المكتوب للكرت. إذا نفد الوقت ترفض الدخول، وإلا تعيد للراوتر Session-Timeout يساوي الوقت المتبقي فقط، فتنقطع الجلسة الحالية لحظة النفاد.

sqlcounter noresetcounter {
    sql_module_instance = sql
    dialect = mysql
    counter_name = Max-All-Session-Time
    check_name  = Max-All-Session
    reply_name  = Session-Timeout
    key   = User-Name
    reset = never
    query = "SELECT SUM(acctsessiontime) FROM radacct WHERE username = '%{${key}}'"
}

ثم يُكتب حد الكرت في radcheck:

username      | attribute        | op | value
4827361950    | Max-All-Session  | := | 14400      # 4 ساعات استخدام فعلي

ولا تكتب Session-Timeout ثابتاً في radreply لنفس الكرت، لأنه يتعارض مع الوقت المتبقي الذي يحسبه العدّاد.

الصلاحية من أول دخول

عدّاد آخر (expire_on_login) يستخدم Expire-After: يبدأ العد من أول دخول وينتهي بعد المدة المحددة، سواء استخدم المستخدم الإنترنت أم لا. يناسب كروت «يوم» و«أسبوع».

أمثلة عملية

الكرتMax-All-SessionExpire-Afterالنتيجة
4 ساعات استخدام14400—4 ساعات اتصال فعلي على أيام متفرقة
4 ساعات خلال 4 ساعات1440014400ينتهي بعد 4 ساعات من أول دخول أو عند نفاد الاستخدام
10 ساعات خلال 12 ساعة360004320010 ساعات استخدام فعلي، صالحة 12 ساعة من أول دخول
يوم كامل—8640024 ساعة من أول دخول مهما كان الاستخدام

ملاحظة عن mac-cookie

إذا كان تسجيل الدخول في Hotspot يشمل mac-cookie، قد يظهر هاتف المستخدم «متصلاً» على الراوتر بعد انتهاء كرته، حتى يحاول الراوتر إعادة المصادقة فيرفضه RADIUS. هذا سلوك طبيعي وليس خطأ في حساب الوقت.

في برق رايديس

عند إنشاء الباقة تحدد «ساعات الاستخدام الفعلي» و«الصلاحية من أول دخول»، ويكتب برق الخصائص المناسبة لكل كرت. العدّادان مفعّلان على الخادم افتراضياً.

أسئلة شائعة

لماذا يحصل المستخدم على وقت جديد عندما يعيد الاتصال؟

لأن الكرت مضبوط بـ Session-Timeout فقط، وهو حد للجلسة الواحدة. كل جلسة جديدة تبدأ بنفس المدة كاملة.

ما الفرق بين Max-All-Session وExpire-After؟

Max-All-Session يحدد مجموع وقت الاتصال الفعلي عبر كل الجلسات. Expire-After يحدد مدة الصلاحية بدءاً من أول دخول، مهما كان الاستهلاك.

هل يمكن استخدام الاثنين معاً؟

نعم، مثل كرت 10 ساعات استخدام فعلي صالح خلال 12 ساعة من أول دخول. أيهما انتهى أولاً ينهي الكرت.

اقرأ أيضاً

برق رايديس يطبّق هذا تلقائياً

خادم RADIUS مُدار لراوترات MikroTik، مع أوامر إعداد جاهزة. جرّبه 3 أيام.