1

freeradius と mysql および choovachilli を使用して、キャプティブ ポータルを実装しています。現在、rlm_sqlcounter を使用して毎日のアカウントを実装しようとしていますが、成功していません。グローバル構成に含める私の構成ファイルは次のとおりです。

sqlcounter dailycounter {
    counter-name = 'Daily-Session-Time'
    check-name = 'Max-Daily-Session'
    sql_module_instance = 'sql'
    key = 'User-Name'
    reset = daily
    query = "SELECT SUM(acctsessiontime - GREATEST((%b - UNIX_TIMESTAMP(acctstarttime)), 0)) FROM radacct WHERE username='%{${key}}' AND UNIX_TIMESTAMP(acctstarttime) + acctsessiontime > '%b'"
}

authorize {
    sql
    dailycounter
}

accounting {
    sql
}

freeradius ログには、カウンターに関連する次の出力のみがあります。

Tue Oct  6 13:02:22 2015 : Debug:  Module: Linked to module rlm_expr
Tue Oct  6 13:02:22 2015 : Debug:  Module: Instantiating module "expr" from file /etc/freeradius/modules/expr
Tue Oct  6 13:02:22 2015 : Debug:     (Loaded rlm_counter, checking if it's valid)
Tue Oct  6 13:02:22 2015 : Debug:  Module: Linked to module rlm_counter
Tue Oct  6 13:02:22 2015 : Debug:  Module: Instantiating module "daily" from file /etc/freeradius/modules/counter
Tue Oct  6 13:02:22 2015 : Debug:   counter daily {
Tue Oct  6 13:02:22 2015 : Debug:   filename = "/etc/freeradius/db.daily"
Tue Oct  6 13:02:22 2015 : Debug:   key = "User-Name"
Tue Oct  6 13:02:22 2015 : Debug:   reset = "daily"
Tue Oct  6 13:02:22 2015 : Debug:   count-attribute = "Acct-Session-Time"
Tue Oct  6 13:02:22 2015 : Debug:   counter-name = "Daily-Session-Time"
Tue Oct  6 13:02:22 2015 : Debug:   check-name = "Max-Daily-Session"
Tue Oct  6 13:02:22 2015 : Debug:   reply-name = "Session-Timeout"
Tue Oct  6 13:02:22 2015 : Debug:   allowed-servicetype = "Framed-User"
Tue Oct  6 13:02:22 2015 : Debug:   cache-size = 5000
Tue Oct  6 13:02:22 2015 : Debug:   }
Tue Oct  6 13:02:22 2015 : Debug: rlm_counter: Counter attribute Daily-Session-Time is number 3000
Tue Oct  6 13:02:22 2015 : Debug: rlm_counter: Current Time: 1444129342 [2015-10-06 13:02:22], Next reset 1444168800 [2015-10-07 00:00:00]

このカウンターが実際にどのように機能するかを誰かが説明してくれれば、本当にありがたいです。check-name と reset のポイントはなんとか理解できましたが、クエリ オプションが混乱を招きます。クエリの構文と戻り値は理解できますが、そのクエリがいつ呼び出され、誰がその戻り値をどのように使用するのかわかりません。

4

1 に答える 1

2

Daily-Session-Time の説明。

  1. ユーザーは 1 日あたり 3000 をログインしてオンラインにすることができます
  2. Max-Daily-Session で。3000 に値を追加します。それは 3000 を意味します。
  3. Radius は属性 Session-Timeout を NAS 3000 に応答します。これは、NAS が 3000 秒後にユーザーを切断する必要があることを意味します
  4. ユーザーがログインして 1000 秒間オンラインになると、彼はログアウトします。その後、再度ログインすると、radius は NAS 2000 に Session-Timeout を返信します。
  5. ユーザーがすべての 3000 を使用すると、ログインできなくなります。彼は明日まで待つ必要があります。
于 2016-04-05T06:55:15.540 に答える