FreeRadiusサーバーを持っていますが、特定のNASに接続するユーザーの数に制限を設定したいと思います。私の現在の設定では、特定のNASに接続するすべてのユーザーは、そのNASに接続されているRadiusユーザーグループに追加されます。次に、RadGroupReplyは、私がやりたいことを実行します。特定のNASのユーザー。現在、最大ダウンロード速度制限とセッションタイムアウトを設定できますが、特定のNASに接続できるユーザーの最大数を制限する場合、どの属性を使用するのか疑問に思っています。 NAS。
ありがとう。
確かに、最初に、postgresqlやMySQLなどのSQLデータベースでRADIUSアカウンティングを設定する必要があります。
次に、古いセッションを検出するためのソリューションを実装する必要があります。これは、暫定更新を有効にし、cronジョブを使用して最後の更新が(NOW() - <interim time>)
より前であったセッションを閉じるのと同じくらい簡単です。過去の時間を計算する方法はデータベースごとに大きく異なるため、使用するデータベースに適した構文を見つける必要があります。
最後に、NASのライブセッションカウントを取得し、構成された最大値と比較するunlangポリシーを作成する必要があります。FreeRADIUSv3.0.xでは、任意のペアを=に関連付けることができます。 NASクライアントセクションに追加します。
クライアントセクションの例:
client test {
ipaddr = 127.0.0.1
secret = 'testing123'
max_users = 10
}
ポリシーの例:
authorize {
if ("%{sql:SELECT COUNT(*) FROM radacct WHERE nasipaddress = '%{NAS-IP-Address}' AND acctstoptime != NULL}" > "%{client:max_users}") {
update reply {
Reply-Message := 'Sorry, too many users connected, please try again later'
}
reject
}
}