サーバーにFreeRADIUS
をインストールし、このサーバーで2つのLAN(またはそれ以上)を管理しています。 LAN A:192.168.1.0
、LAN B:192.168.2.0
としましょう。 FreeRADIUS
をpostgres
データベースと組み合わせて使用しています。 radcheck
テーブルに、次の行を挿入しました。
userbane='myuser', attribute='Password', op=':=', value='mypass'
。
ここで、FreeRADIUSにサービスを要求するクライアントが、LAN Bの一部である場合にのみ、このユーザー名とパスワードで自分自身を認証できるようにしたいと思います。
質問:これを行う方法を誰かに提案してもらえますか?
radcheck
をもう1行username='myuser', attribute='NAS-IP-Address', op=':=', value='192.168.2.1'
に入れようとしましたが、成功しませんでした。
どんな助けでもいただければ幸いです。
これまでデータベースバックエンドを使用したことはありませんが、 sers ファイルを使用すると、ルールは次のようになります。
myuser Cleartext-Password := "mypass", NAS-IP-Address == "192.168.2.1"
これに基づいて、radcheck
テーブルに2つのエントリが必要だと思います。
usernane='myuser', attribute='Password', op=':=', value='mypass'
username='myuser', attribute='NAS-IP-Address', op='==', value='192.168.2.1'
SQLデータベースを使用して、私はこれを次のように解決しました。
1)特別な行(site_id)を追加する
ALTER TABLE radcheck ADD site_id VARCHAR(30) NOT NULL default '0.0.0.0' AFTER value;
2)/etc/freeradius/sql/mysql/dialup.confを次のように変更します
authorize_check_query = "SELECT id, username, attribute, value, op, site_id, valid_from, valid_until \
FROM ${authcheck_table} \
WHERE username = '%{SQL-User-Name}' AND site_id='%{NAS-Identifier}' \
ORDER BY id"
私の場合、NAS-Idを使用しましたが、%{NAS-Identifier}を%{NAS-IP-Address}に置き換え、オプションでsite_idをsite_ipに置き換えると、IPアドレスを使用してトリックを実行できます。