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

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


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

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

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

Add your comment now

Please note: JavaScript is required to post comments.