Я здесь новенький.
У меня есть freeradius 3 с sqlippool и аутентификацией LDAP (с «гостевым» пользователем, настроенным на файл), все работает нормально. У меня 2 sqlippools:
-main_pool
-guest_pool
Я хочу сделать следующее:
если пользователь «гость», тогда предложите IP от guest_pool, иначе предложите от main_pool. Моя идея состоит в том, чтобы гости и другие пользователи находились в разных вланах.
¿Как я могу узнать в radius dhcp, если пользователь является гостевым предложением от guest_pool?
Извините за мой плохой английский.
Спасибо.
Я решил это!
Спасибо Аррану Кадбард-Беллу за подсказку!
Сначала была создана таблица с именем «userhardaddr» с именем пользователя и mac (PK) как varchar.
В (radius conf dir) / sites-enabled / defaul (раздел post-auth) я сделал запрос «REPLACE»:
post-auth {
...
update reply {
Tmp-String-0 := "%{sql:REPALCE INTO userhardaddr(username,mac) VALUES(%{User-Name},%{Calling-Station-Id})}"
...
}
}
Это заменяет пользователя для подключенного MAC в таблице, если он существует. Если не существует, REPLACE создает строку, как в INSERT.
Затем в sites-enabled / dhcp (разделы обнаружения и запроса):
dhcp DHPC-Discover {
update request {
...
User-Name = "%{sql:SELECT username FROM userhardaddr where mac = REPLACE ('%{DHCP-Client-Hardware-Address}',':','-')}"
...
}
...
if(&User-Name=='guest') {
&Pool-Name = "guest_pool"
}
else {
&Pool-Name = "main_pool"
}
...
}
...
dhcp DHPC-Request {
(same in discover)
}
При этом я получаю имя пользователя из БД в соответствии с MAC-адресом.
В операторе IF я сравниваю значение, возвращаемое запросом, с «гостем» и назначаю соответствующий пул IP-адресов.
Еще раз спасибо.
С уважением.