限制FreeRADIUS客户端使用相同的用户名和密码从不同的局域网访问服务

我在我的服务器上安装了FreeRADIUS ,并且还有两个局域网(或可能更多)由此服务器pipe理。 比方说LAN A: 192.168.1.0 ,LAN B: 192.168.2.0 。 我使用FreeRADIUSpostgres数据库结合使用。 在我的radcheck表中,我插入了以下行:

userbane='myuser', attribute='Password', op=':=', value='mypass'

现在我想让要求我的FreeRADIUS服务的客户端能够使用这个用户名和密码进行身份validation,只要他们是LAN B的一部分。

问题 :有谁能告诉我如何完成这个任务?

我尝试把更多的一行放在radcheckusername='myuser', attribute='NAS-IP-Address', op=':=', value='192.168.2.1' ,但是没有成功。

任何帮助,将不胜感激。

我以前没有使用数据库后端,但使用用户文件规则将如下所示:

 myuser Cleartext-Password := "mypass", NAS-IP-Address == "192.168.2.1" 

基于此,我认为你需要在radcheck表中有两个条目:

 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-IP-Address}replace%{NAS-Identifier}并且用site_ipreplacesite_id将会使用IP地址