Раньше я не использовал серверную часть базы данных, но с использованием файла users правило будет выглядеть примерно так :
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-Identifier} на% {NAS-IP-Address} и, возможно, site_id на site_ip, сделает трюк с IP-адресом