Дело было давно, но рассказать я это должен..
Началось всё с того что я устроился на работу ещё будучи студентом к одному зарождающемуся провайдеру нашего города и получилось так, что я стал «начальником», то есть человеком который должен был за всё отвечать. Ну и как говорится что за начальник, который не разбирается хоть в чем-то. Первым делом, моя задача была определится на чем все будет крутится и определится с биллингом топологией сети и многими другими задачами. Занимался я всем, от укладки кабеля, варки оптики до настройки серверов (так уж получилось, я такой человек что на произвол ничего не могу пустить, контролирую все процессы в прямом смысле этого слава, от и до). Ну да ладно, в общем это всё по порядку а сейчас про RADIUS.
# cd /usr/ports/net/freeradius # make install clean # cd /usr/local/etc/raddb/ |
Переименовываем все *.samples в свои имена *. и открываем radiusd.conf для редактирования:
log_stripped_names=yes #Логируем атрибут User-Name если он найден в запросе
log_auth=yes #Логируем запросы аутентификации
log_auth_badpass=yes #Если пароль неверен - пишем его в Лог
log_auth_goodpass=no #верные пароли незачем писать в лог
$INCLUDE ${confdir}/sql.conf
в секции authorize комментарим files
удаляем комментарий с
sql
в секции accounting также снимаем комментарий с
sql
Далее смотрим конфиг sql.conf и правим:
driver="rlm_sql_mysql"
server="localhost"
login="login_k_mysql"
password="pass_k_mysql"
теперь правим clients.conf, задавая для клиента 127.0.0.1 пароль:
secret=PassSecret
Теперь мы в плотную подошли к mysql, предварительно создав пользователя с полным доступом к базе и заводим такие таблицы:
CREATE TABLE `dictionary` ( `id` INT(10) NOT NULL AUTO_INCREMENT, `Type` VARCHAR(30) DEFAULT NULL, `Attribute` VARCHAR(64) DEFAULT NULL, `Value` VARCHAR(64) DEFAULT NULL, `Format` VARCHAR(20) DEFAULT NULL, `Vendor` VARCHAR(32) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE TABLE `nas` ( `id` INT(10) NOT NULL AUTO_INCREMENT, `nasname` VARCHAR(128) DEFAULT NULL, `shortname` VARCHAR(32) DEFAULT NULL, `ipaddr` VARCHAR(15) DEFAULT NULL, `type` VARCHAR(30) DEFAULT NULL, `ports` INT(5) DEFAULT NULL, `secret` VARCHAR(60) DEFAULT NULL, `community` VARCHAR(50) DEFAULT NULL, `snmp` VARCHAR(10) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE TABLE `radacct` ( `RadAcctId` BIGINT(21) NOT NULL AUTO_INCREMENT, `AcctSessionId` VARCHAR(32) NOT NULL DEFAULT '', `AcctUniqueId` VARCHAR(32) NOT NULL DEFAULT '', `UserName` VARCHAR(64) NOT NULL DEFAULT '', `Realm` VARCHAR(64) DEFAULT '', `NASIPAddress` VARCHAR(15) NOT NULL DEFAULT '', `NASPortId` INT(12) DEFAULT NULL, `NASPortType` VARCHAR(32) DEFAULT NULL, `AcctStartTime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `AcctStopTime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `AcctSessionTime` INT(12) DEFAULT NULL, `AcctAuthentic` VARCHAR(32) DEFAULT NULL, `ConnectInfo_start` VARCHAR(32) DEFAULT NULL, `ConnectInfo_stop` VARCHAR(32) DEFAULT NULL, `AcctInputOctets` INT(12) DEFAULT NULL, `AcctOutputOctets` INT(12) DEFAULT NULL, `CalledStationId` VARCHAR(10) NOT NULL DEFAULT '', `CallingStationId` VARCHAR(10) NOT NULL DEFAULT '', `AcctTerminateCause` VARCHAR(32) NOT NULL DEFAULT '', `ServiceType` VARCHAR(32) DEFAULT NULL, `FramedProtocol` VARCHAR(32) DEFAULT NULL, `FramedIPAddress` VARCHAR(15) NOT NULL DEFAULT '', `AcctStartDelay` INT(12) DEFAULT NULL, `AcctStopDelay` INT(12) DEFAULT NULL, PRIMARY KEY (`RadAcctId`), KEY `UserName` (`UserName`), KEY `FramedIPAddress` (`FramedIPAddress`), KEY `AcctSessionId` (`AcctSessionId`), KEY `AcctUniqueId` (`AcctUniqueId`), KEY `AcctStartTime` (`AcctStartTime`), KEY `AcctStopTime` (`AcctStopTime`), KEY `NASIPAddress` (`NASIPAddress`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE TABLE `radcheck` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `UserName` VARCHAR(64) NOT NULL DEFAULT '', `Attribute` VARCHAR(32) NOT NULL DEFAULT '', `op` CHAR(2) NOT NULL DEFAULT '', `Value` VARCHAR(253) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `UserName` (`UserName`(32)) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE TABLE `radgroupcheck` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `GroupName` VARCHAR(64) NOT NULL DEFAULT '', `Attribute` VARCHAR(32) NOT NULL DEFAULT '', `op` CHAR(2) NOT NULL DEFAULT '', `Value` VARCHAR(253) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `GroupName` (`GroupName`(32)) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE TABLE `radgroupreply` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `GroupName` VARCHAR(64) NOT NULL DEFAULT '', `Attribute` VARCHAR(32) NOT NULL DEFAULT '', `op` CHAR(2) NOT NULL DEFAULT '', `Value` VARCHAR(253) NOT NULL DEFAULT '', `prio` INT(10) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `GroupName` (`GroupName`(32)) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE TABLE `radreply` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `UserName` VARCHAR(64) NOT NULL DEFAULT '', `Attribute` VARCHAR(32) NOT NULL DEFAULT '', `op` CHAR(2) NOT NULL DEFAULT '', `Value` VARCHAR(253) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `UserName` (`UserName`(32)) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE TABLE `usergroup` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `UserName` VARCHAR(64) NOT NULL DEFAULT '', `GroupName` VARCHAR(64) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `UserName` (`UserName`(32)) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; # mysql -u freeradius -p mysql> USE freeradius; INSERT INTO `radcheck` VALUES (1,'utest','Password','==','qwerty'); INSERT INTO `radreply` VALUES (1,'utest','Framed-IP-Address',':=','192.168.1.2'); INSERT INTO `radreply` VALUES (1,'utest','Framed-IP-Netmask',':=','255.255.255.255'); INSERT INTO `radreply` VALUES (1,'utest','Framed-Protocol',':=','PPP'); mysql> quit Bye |
# echo 'radiusd_enable="YES"' >> /etc/rc.conf # echo 'mysql_enable="YES"' >> /etc/rc.conf # sh /usr/local/etc/rc.d/radiusd start |
На этом все подготовительные работы закончены, переходим к тестированию:
# radtest utest qwerty 127.0.0.1 0 PassSecret Sending Access-Request of id 189 to 127.0.0.1:1812 User-Name = "utest" User-Password = "pass" NAS-IP-Address = localhost NAS-Port = 0 rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=189, length=38 Framed-IP-Address = 192.168.1.2 Framed-IP-Netmask = 255.255.255.255 Framed-Protocol = PPP |
Судя по тому что отобразилось на консоли — радиус работает, а если у вас что то не так — нужно смотреть в /var/log/radiusd.log.
Теперь несколько примеров подключения радиуса с другими продуктами:
# cat radius.conf:
acct 127.0.0.1 PassSecret
auth 127.0.0.1 PassSecret |
Также, можно воспользоваться статьей по настройке mpd+AD через radius, но использовать не Active Directory Radius, а этот. Настройки привязки MPD к Radius аналогичны.
На этом с радиусом всё.
Напоминаю всем копирующим мой контент о существовании закона "Об авторском праве".
В связи с этим, прошу во избежании конфликтов при копировании данного материала, ставить на него ссылку:
Также, вы можете отблагодарить меня переслав любую сумму на любой кошелек WebMoney, для поддержания данного ресурса. Или просто админу на пиво ;)
Кошельки для получения благодарности:
R386985788805
U234140473141
Z147712360455
На данной странице нет комментариев, возможно они закрыты. Если Вы хотите оставить свой комментарий, перейдите на специально созданный раздел