Дело было давно, но рассказать я это должен..

Началось всё с того что я устроился на работу ещё будучи студентом к одному зарождающемуся провайдеру нашего города и получилось так, что я стал «начальником», то есть человеком который должен был за всё отвечать. Ну и как говорится что за начальник, который не разбирается хоть в чем-то. Первым делом, моя задача была определится на чем все будет крутится и определится с биллингом топологией сети и многими другими задачами. Занимался я всем, от укладки кабеля, варки оптики до настройки серверов (так уж получилось, я такой человек что на произвол ничего не могу пустить, контролирую все процессы в прямом смысле этого слава, от и до). Ну да ладно, в общем это всё по порядку а сейчас про 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 аналогичны.

На этом с радиусом всё.

Напоминаю всем копирующим мой контент о существовании закона "Об авторском праве".
В связи с этим, прошу во избежании конфликтов при копировании данного материала, ставить на него ссылку:

http://noted.org.ua/?p=818


Также, вы можете отблагодарить меня переслав любую сумму на любой кошелек WebMoney, для поддержания данного ресурса. Или просто админу на пиво ;)

Кошельки для получения благодарности:
R386985788805
U234140473141
Z147712360455

На данной странице нет комментариев, возможно они закрыты. Если Вы хотите оставить свой комментарий, перейдите на специально созданный раздел

Add your comment now

You must be logged in to post a comment.