tubaobaoya3 发表于 2018-9-30 11:36:30

CentOS 5.7安装FreeRADIUS 1.1.3+MySQL 5.0.77结合RouteOS

一、安装FreeRadius 和 MySQL
  # yum install freeradius2 freeradius2-mysql freeradius2-utils
  # yum install mysql mysql-server

二、开启MySQL和Radius服务
  # service mysqld start
  # radiusd –X
  # service radiusd start

三、设置服务开机启动
  # chkconfig mysqld --level 2345 on
  # chkconfig radiusd --level 2345 on

四、做个简单的测试(可选操作)
  ①定义一个radius客户端ip
  # vim /etc/raddb/clients.conf
  删除原来的所有
  配置示例:
  client localhost {
  
      ipaddr = 127.0.0.1
  
      secret = testing123
  
      require_message_authenticator = no
  
      nastype = other
  
}
  ②定义一个用户和密码
  # vim /etc/raddb/users
  在第一行添加
  配置示例:
  testing Cleartext-Password := "password"
  ③以调试模式开启radius
  # radiusd –X
  状态如下:
  Ready to process requests.
  ④测试服务是否正常
  # radtest testing password localhost 0 testing123
  返回结果(关键是返回Access-Accept)示例:

  Sending Access-Request of>  
      User-Name = "testing"
  
      User-Password = "password"
  
      NAS-IP-Address = 127.0.0.1
  
      NAS-Port = 0

  
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812,>
五、创建一个MySQL数据库
  # mysql -uroot –p
  mysql> CREATE DATABASE radius;

  mysql> GRANT ALL ON radius.* TO radius@localhost>  mysql> exit
  # cd /etc/raddb/sql/mysql/
  # mysql -uroot -p radius < schema.sql

六、检查一下是否创建成功
  # mysql -uroot -p
  mysql> show databases;
  +--------------------+
  
| Database         |
  
+--------------------+
  
| information_schema |
  
| mysql            |
  
| radius             |
  
| test               |
  
+--------------------+
  
4 rows in set (0.03 sec)
  mysql> use radius
  mysql> show tables;
  +------------------+
  
| Tables_in_radius |
  
+------------------+
  
| radacct          |
  
| radcheck         |
  
| radgroupcheck    |
  
| radgroupreply    |
  
| radpostauth      |
  
| radreply         |
  
| radusergroup   |
  
+------------------+
  
7 rows in set (0.00 sec)

七、配置FreeRadius使用SQL
  # vim /etc/raddb/sql.conf
  示例:
  sql {
  
      database = &quot;mysql&quot;
  
      driver = &quot;rlm_sql_${database}&quot;
  
      server = &quot;localhost&quot;
  
      login = &quot;radius&quot;
  
      password = &quot;radpass&quot;
  
      radius_db = &quot;radius&quot;
  
      acct_table1 = &quot;radacct&quot;
  
      acct_table2 = &quot;radacct&quot;
  
      postauth_table = &quot;radpostauth&quot;
  
      authcheck_table = &quot;radcheck&quot;
  
      authreply_table = &quot;radreply&quot;
  
      groupcheck_table = &quot;radgroupcheck&quot;
  
      groupreply_table = &quot;radgroupreply&quot;
  
      usergroup_table = &quot;radusergroup&quot;
  
      deletestalesessions = yes
  
      sqltrace = no
  
      sqltracefile = ${logdir}/sqltrace.sql
  
      num_sql_socks = 5
  
      connect_failure_retry_delay = 60
  
      lifetime = 0
  
      max_queries = 0
  
      nas_table = &quot;nas&quot;
  
      $INCLUDE sql/${database}/dialup.conf
  
}
  # vim /etc/raddb/radiusd.conf
  找到:
  $INCLUDE sql.conf
  去掉注释
  以下区段需要注释掉files,去掉sql前的注释(没有则不需要)
  # vim /etc/raddb/sites-available/default
  authorize{}
  accounting{}
  session{}
  post-auth{}
  # vim /etc/raddb/sites-available/inner-tunnel
  authorize {}

八、创建测试数据
  ①创建用户组
  ②创建用户密码
  ③创建用户应答属性
  ④创建组应答属性
  下面是一个示例:
  这个例子包含三个用户fredf,barney,dialrouter
  fredf由NAS(网络接入服务器)动态分配ip
  barney分配一个静态的ip
  dialrouter表示的是一个典型的拨号路由
  

  
mysql> select * from radcheck;
  
+----+----------------+--------------------+------------------+------+

  
|>  
+----+----------------+--------------------+------------------+------+
  
|1 | fredf          | Cleartext-Password | wilma            | :=   |
  
|2 | barney         | Cleartext-Password | betty            | :=   |
  
|2 | dialrouter   | Cleartext-Password | dialup         | :=   |
  
+----+----------------+--------------------+------------------+------+
  
3 rows in set (0.01 sec)
  

  
mysql> select * from radreply;
  

  
+----+------------+-------------------+---------------------------------+------+

  
|>  
+----+------------+-------------------+---------------------------------+------+
  
|1 | barney   | Framed-IP-Address | 1.2.3.4                         | :=   |
  
|2 | dialrouter | Framed-IP-Address | 2.3.4.1                         | :=   |
  
|3 | dialrouter | Framed-IP-Netmask | 255.255.255.255               | :=   |
  
|4 | dialrouter | Framed-Routing    | Broadcast-Listen                | :=   |
  
|5 | dialrouter | Framed-Route      | 2.3.4.0 255.255.255.248         | :=   |

  
|6 | dialrouter |>  
+----+------------+-------------------+---------------------------------+------+
  
6 rows in set (0.01 sec)
  

  
mysql> select * from radgroupreply;
  
+----+-----------+--------------------+---------------------+------+

  
|>  
+----+-----------+--------------------+---------------------+------+
  
| 34 | dynamic   | Framed-Compression | Van-Jacobsen-TCP-IP | :=   |
  
| 33 | dynamic   | Framed-Protocol    | PPP               | :=   |
  
| 32 | dynamic   | Service-Type       | Framed-User         | :=   |
  
| 35 | dynamic   | Framed-MTU         | 1500                | :=   |
  
| 37 | static    | Framed-Protocol    | PPP               | :=   |
  
| 38 | static    | Service-Type       | Framed-User         | :=   |
  
| 39 | static    | Framed-Compression | Van-Jacobsen-TCP-IP | :=   |
  
| 41 | netdial   | Service-Type       | Framed-User         | :=   |
  
| 42 | netdial   | Framed-Protocol    | PPP               | :=   |
  
+----+-----------+--------------------+---------------------+------+
  
12 rows in set (0.01 sec)
  

  创建测试用户
  INSERT INTO radcheck (username,attribute,op,value) VALUES ('dialrouter','Cleartext-Password',':=','dialup');
  
INSERT INTO radreply (username,attribute,op,value) VALUES ('dialrouter','Framed-IP-Address',':=','2.3.4.1');
  
INSERT INTO radreply (username,attribute,op,value) VALUES ('dialrouter','Framed-IP-Netmask',':=','255.255.255.255');
  
INSERT INTO radreply (username,attribute,op,value) VALUES ('dialrouter','Framed-Routing',':=','Broadcast-Listen');
  
INSERT INTO radreply (username,attribute,op,value) VALUES ('dialrouter','Framed-Route',':=','2.3.4.0 255.255.255.248');
  
INSERT INTO radreply (username,attribute,op,value) VALUES ('dialrouter','Idle-Timeout',':=','900');
  
INSERT INTO radgroupreply (groupname,attribute,op,value) VALUES ('netdial','Service-Type',':=','Framed-User');
  
INSERT INTO radgroupreply (groupname,attribute,op,value) VALUES ('netdial','Framed-Protocol',':=','PPP');

九、测试是否创建成功
  # radiusd -X
  # radtest dialrouter dialup localhost 1812 testing123

  Sending Access-Request of>  
      User-Name = &quot;dialrouter&quot;
  
      User-Password = &quot;dialup&quot;
  
      NAS-IP-Address = 127.0.0.1
  
      NAS-Port = 1812

  
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812,>  
      Framed-IP-Address = 2.3.4.1
  
      Framed-IP-Netmask = 255.255.255.255
  
      Framed-Routing = Broadcast-Listen
  
      Framed-Route = &quot;2.3.4.0 255.255.255.248&quot;

  
       >
十、配置RouteOS 使用radius认证
  # vim /etc/raddb/clients.conf
  client RouterOS {
  
      ipaddr = 192.168.137.50
  
      secret = 111
  
      shortname = RouterOS
  
      nastype = other
  
}
  RouteOS的配置如下:


  附上参考链接:
  http://wiki.freeradius.org/guide/SQL-HOWTO
  http://wiki.freeradius.org/config/Operators
  http://www.cnblogs.com/fly1988happy/archive/2011/12/15/2288554.html
  http://www.cnblogs.com/eastson/archive/2012/07/11/2584937.html


页: [1]
查看完整版本: CentOS 5.7安装FreeRADIUS 1.1.3+MySQL 5.0.77结合RouteOS