Да-да, была такая проблема…
Решил ее изменением процедур радиуса:
radcheckCREATE PROCEDURE `radcheck` (IN login VARCHAR(64))
BEGIN
SELECT id,name,'Password' AS Attribute,AES_DECRYPT(passwd,'hardpass') AS Value,'=='
FROM users WHERE name=login;
END
radreplyCREATE PROCEDURE `radreply`(IN login VARCHAR(64))
BEGIN
DECLARE usr_id INT;
DECLARE usr_ip VARCHAR(15) DEFAULT NULL;
SELECT id INTO usr_id FROM users WHERE name=login LIMIT 1;
SELECT get_ip(usr_id) INTO usr_ip;
CALL set_auth(usr_ip, 'mod=pppoe;');
SELECT NULL,login,'Framed-IP-Address',usr_ip,'=';
SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','=';
SELECT NULL,login,'Framed-Protocol','PPP','=';
END
radstopCREATE PROCEDURE `radstop`(IN login VARCHAR(64), IN usr_ip VARCHAR(16))
BEGIN
DECLARE usr_id INT;
SELECT id INTO usr_id FROM users WHERE name=login LIMIT 1;
INSERT INTO auth_log (uid,ip,start,end,properties) SELECT usr_id,INET_ATON(ip),start,UNIX_TIMESTAMP(),properties FROM auth_now WHERE ip=usr_ip;
DELETE FROM auth_now WHERE ip = usr_ip LIMIT 1;
END
radupdateCREATE PROCEDURE `radupdate`(IN login VARCHAR(64), IN ip VARCHAR(16), IN properties VARCHAR(255))
BEGIN
CALL set_auth(ip, CONCAT('mod=pppoe;',replace(properties,':','')));
END
Суть в чем - апдейтим авторизацию по фактическому ip-адресу сессии клиента, а не по выборке из get_ip