freeradius + sqlippool
3 отговора
109 прегледа
freeradius + sqlippool
От няколко дни се мъча с freeradius. Опитвам се да направя следното нещо - pppoe + freeradius + mysql. Всичко работи ок, но искам динамичните ip-та да ги взима от pool, който се намира в база в mysql-a. Има модул rlm_sqlippool, но не мога да намеря никаква информация как трябва да изглежда конфигурационния файл и базите. Ако някой се е борил с нещо подобно нека сподели опит
Редактирано от urud на
Re: q kaji za pppoe-to
От извесно време се опитвам да го подкарам тва пппое, но нещо неиска да тръгне...
Дай някакъв линк към Howto или tutorial за пппое. Аз намерих 2- единия беше за Debian, а другия за Suse, но не можах да го подкарам. Аз съм с Slack.
Дай някакъв линк към Howto или tutorial за пппое. Аз намерих 2- единия беше за Debian, а другия за Suse, но не можах да го подкарам. Аз съм с Slack.
Re: freeradius + sqlippool
CREATE TABLE radippool (
id int(11) unsigned NOT NULL auto_increment,
pool_name varchar(30) NOT NULL,
FramedIPAddress varchar(15) NOT NULL default '',
NASIPAddress varchar(15) NOT NULL default '',
CalledStationId varchar(30) NOT NULL,
CallingStationID varchar(30) NOT NULL,
expiry_time datetime NOT NULL default '0000-00-00 00:00:00',
username varchar(64) NOT NULL default '',
pool_key varchar(30) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO radippool (pool_name, framedipaddress) VALUES ('test_pool', '87.118.165.190');
INSERT INTO .....
....
/etc/raddb/sqlippool.conf:
sqlippool sqlippool {
sql-instance-name = "sql"
lease-duration = 3600
pool-key = "%{Calling-Station-Id}"
allocate-clear = "UPDATE radippool \
SET NASIPAddress = '', pool_key = '', CallingStationId = '', \
expiry_time = NOW() - INTERVAL 1 SECOND \
WHERE pool_key = '${pool-key}'"
allocate-find = "SELECT FramedIPAddress FROM radippool \
WHERE pool_name = '%P' AND expiry_time < NOW() \
ORDER BY pool_name, (UserName <> '%{User-Name}'), (CallingStationId <> '%{Calling-Station-Id}'), expiry_time \
LIMIT 1 FOR UPDATE"
allocate-update = "UPDATE radippool \
SET NASIPAddress = '%{NAS-IP-Address}', pool_key = '%{Calling-Station-Id}', \
CallingStationId = '%{Calling-Station-Id}', UserName = '%{User-Name}', \
expiry_time = NOW() + INTERVAL ${lease-duration} SECOND \
WHERE FramedIPAddress = '%I'"
start-update = "UPDATE radippool \
SET expiry_time = NOW() + INTERVAL %J SECOND \
WHERE NASIPAddress = '%n' AND nas_port = '%p' AND pool_name = '%P'"
stop-clear = "UPDATE radippool \
SET NASIPAddress = '', pool_key = '', CallingStationId = '', \
expiry_time = NOW() - INTERVAL 1 SECOND \
WHERE NASIPAddress = '%{NAS-IP-Address}' AND pool_key = '${pool-key}' AND UserName = '%{User-Name}' \
AND CallingStationId = '%{Calling-Station-Id}' AND FramedIPAddress = '%{Framed-IP-Address}'"
alive-update = "UPDATE radippool \
SET expiry_time = NOW() + INTERVAL ${lease-duration} SECOND \
WHERE NASIPAddress = '%{Nas-IP-Address}' AND pool_key = '${pool-key}' AND UserName = '%{User-Name}' \
AND CallingStationId = '%{Calling-Station-Id}' AND FramedIPAddress = '%{Framed-IP-Address}'"
on-clear = "UPDATE radippool \
SET NASIPAddress = '', pool_key = '', CallingStationId = '', \
expiry_time = NOW() - INTERVAL 1 SECOND \
WHERE NASIPAddress = '%{NAS-IP-Address}' AND UserName = '%{User-Name}' \
AND CallingStationId = '%{Calling-Station-Id}' AND FramedIPAddress = '%{Framed-IP-Address}'"
off-clear = "UPDATE radippool \
SET NASIPAddress = '', pool_key = '', CallingStationId = '', \
expiry_time = NOW() - INTERVAL 1 SECOND \
WHERE NASIPAddress = '%{NAS-IP-Address}' AND UserName = '%{User-Name}' \
AND CallingStationId = '%{Calling-Station-Id}' AND FramedIPAddress = '%{Framed-IP-Address}'"
}
останалото оставям за теб ;)
id int(11) unsigned NOT NULL auto_increment,
pool_name varchar(30) NOT NULL,
FramedIPAddress varchar(15) NOT NULL default '',
NASIPAddress varchar(15) NOT NULL default '',
CalledStationId varchar(30) NOT NULL,
CallingStationID varchar(30) NOT NULL,
expiry_time datetime NOT NULL default '0000-00-00 00:00:00',
username varchar(64) NOT NULL default '',
pool_key varchar(30) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO radippool (pool_name, framedipaddress) VALUES ('test_pool', '87.118.165.190');
INSERT INTO .....
....
/etc/raddb/sqlippool.conf:
sqlippool sqlippool {
sql-instance-name = "sql"
lease-duration = 3600
pool-key = "%{Calling-Station-Id}"
allocate-clear = "UPDATE radippool \
SET NASIPAddress = '', pool_key = '', CallingStationId = '', \
expiry_time = NOW() - INTERVAL 1 SECOND \
WHERE pool_key = '${pool-key}'"
allocate-find = "SELECT FramedIPAddress FROM radippool \
WHERE pool_name = '%P' AND expiry_time < NOW() \
ORDER BY pool_name, (UserName <> '%{User-Name}'), (CallingStationId <> '%{Calling-Station-Id}'), expiry_time \
LIMIT 1 FOR UPDATE"
allocate-update = "UPDATE radippool \
SET NASIPAddress = '%{NAS-IP-Address}', pool_key = '%{Calling-Station-Id}', \
CallingStationId = '%{Calling-Station-Id}', UserName = '%{User-Name}', \
expiry_time = NOW() + INTERVAL ${lease-duration} SECOND \
WHERE FramedIPAddress = '%I'"
start-update = "UPDATE radippool \
SET expiry_time = NOW() + INTERVAL %J SECOND \
WHERE NASIPAddress = '%n' AND nas_port = '%p' AND pool_name = '%P'"
stop-clear = "UPDATE radippool \
SET NASIPAddress = '', pool_key = '', CallingStationId = '', \
expiry_time = NOW() - INTERVAL 1 SECOND \
WHERE NASIPAddress = '%{NAS-IP-Address}' AND pool_key = '${pool-key}' AND UserName = '%{User-Name}' \
AND CallingStationId = '%{Calling-Station-Id}' AND FramedIPAddress = '%{Framed-IP-Address}'"
alive-update = "UPDATE radippool \
SET expiry_time = NOW() + INTERVAL ${lease-duration} SECOND \
WHERE NASIPAddress = '%{Nas-IP-Address}' AND pool_key = '${pool-key}' AND UserName = '%{User-Name}' \
AND CallingStationId = '%{Calling-Station-Id}' AND FramedIPAddress = '%{Framed-IP-Address}'"
on-clear = "UPDATE radippool \
SET NASIPAddress = '', pool_key = '', CallingStationId = '', \
expiry_time = NOW() - INTERVAL 1 SECOND \
WHERE NASIPAddress = '%{NAS-IP-Address}' AND UserName = '%{User-Name}' \
AND CallingStationId = '%{Calling-Station-Id}' AND FramedIPAddress = '%{Framed-IP-Address}'"
off-clear = "UPDATE radippool \
SET NASIPAddress = '', pool_key = '', CallingStationId = '', \
expiry_time = NOW() - INTERVAL 1 SECOND \
WHERE NASIPAddress = '%{NAS-IP-Address}' AND UserName = '%{User-Name}' \
AND CallingStationId = '%{Calling-Station-Id}' AND FramedIPAddress = '%{Framed-IP-Address}'"
}
останалото оставям за теб ;)
Re: freeradius + sqlippool
малко уточнение, дал съм грешна таблица
след NASIPAddress varchar(15) NOT NULL default '',
има: nas_port varchar(15) NOT NULL default '',
след NASIPAddress varchar(15) NOT NULL default '',
има: nas_port varchar(15) NOT NULL default '',