架设Radius服务器 802.1X口令服务器
2004-03-24      
打印自: 安恒公司
地址: HTTP://oneshot.anheng.com.cn/news/article.php?articleid=221
架设FreeRadius+Mysql 的Radius服务器

  笔者用的平台是RedHat Linux 7.2



  1. 安装mysql

  本人用的是光盘上的RPM包
  rpm -ivh mysql-3.23.41.1.i386.rpm
  rpm -ivh mysql-devel-3.23.41.1.i386.rpm
  rpm -ivh mysql-server-3.23.41.1.i386.rpm
  rpm -ivh mysqlclient9-3.23.22-6.i386.rpm

  启动mysql服务
  service mysqld start

  更改mysql的root密码(注意:mysql的root 和系统的root是2个不用的概念)
  mysql -uroot -p

  创建radius数据库
  creat database radius;
  use mysql;
  update user set password=password('你的密码') where user='root';

  允许远程机器连接
  update user set host='%' where user='root';

  退出及重新启动mysql
  quit
  service mysqld restart

  2. 安装openSSL

  本人也是用的光盘上的RPM包
  rpm -ivh openssl095a-0.9.5a-11.i386.rpm
  rpm -ivh openssl096-0.9.6-6.i386.rpm

  3. 安装freeradius

  从www.freeradius.org上下载freeraidus,本文版本是0.8.1
  编译和安装
  tar xvfz freeradius.tar.gz
  cd xvfz freeradius-0.8.1

注: 如果mysql不是安装在/usr/local/目录下需要做个连接:
ln -s /PATH/mysql/ /usr/local/mysql

  ./configure
  make
  make install

  建立mysql的数据库radius的表
  cd src/modules/rlm_sql/drivers/rlm_sql_mysql
  mysql -uroot -p密码 radius < db_mysql.sql

  更改freeradius的设置
  cd /usr/local/etc/raddb
  更改radiusd.conf,让其支持sql (如下面所说)

  authorize {
  preprocess
  chap
  mschap
  suffix
  sql
  }
  accouting {
  ….
  sql
  …
  }

  更改sql.conf
  server="localhost"
  login="root"
  password="mysql的root的密码"
  radius_db="radius"

  更改 client.conf支持所用的NAS具体可以看该文档,要注意的是secret是NAS和radius服务器的共享密码
数据库加入测试账号

  加入组

  mysql -uroot -p密码 radius

insert into radgroupreply (GroupName,Attribute,op,Value) values ('user','Auth-Type',':=','Local');
insert into radgroupreply (GroupName,Attribute,op,value) values ('user','Service-Type',':=','Framed-User');
insert into radgroupreply (GroupName,Attribute,op,value) values ('user','Framed-IP-Address',':=','255.255.255.254');
insert into radgroupreply (GroupName,Attribute,op,value) values ('user','Framed-IP-Netmask',':=','255.255.255.0');

  加入测试账号
insert into radcheck (UserName,Attribute,op,Value) values ('test','User-Password',':=','test');

  测试账号加入组
insert into usergroup (UserName,GroupName) values ('test','user');

  4. 启动radius服务、测试账号

  启动到debug模式

  radiusd -X

  有时候会报找不到文件rlm_sql_mysql这个时候只要把库文件加入系统搜索的目录里

  比如:

  cp /usr/local/lib/* /usr/lib

  测试账号

  radtest test teset localhost 0 testing123

  如果能看到radius的应答,恭喜服务器设置成功了。

责任编辑: admin