开发者社区> 科技小能手> 正文

freeradius+mysql+pppoe认证

简介:
+关注继续查看

1.首先下载要安装的软件包如下:

radiusclient-0.3.2.tar.gz  

ppp-2.4.3.tar.gz 

freeradius-server-2.1.12.tar.gz 

在安装之前要确保pppoe-server已经安装

[root@localhost ~]# rpm -q rp-pppoe ppp

rp-pppoe-3.5-32.1

ppp-2.4.4-2.el5

2.安装freeradius-server

[root@localhost ~]# tar  xvf freeradius-server-2.1.12.tar.gz

[root@localhost freeradius-server-2.1.12]# ./configure

[root@localhost freeradius-server-2.1.12]# make && make install

进入以下目录就会看到安装的信息

[root@localhost freeradius-server-2.1.12]# cd /usr/local/bin/

[root@localhost bin]# ls

radclient    radcrypt      radlast      radtest  radzap

radconf2xml  radeapclient  radsqlrelay  radwho   smbencrypt

[root@localhost bin]# cd /usr/local/sbin/

[root@localhost sbin]# ls

checkrad      radacct   radexample  radlogin  radstatus  rc.radiusd

login.radius  raddebug  radiusd     radmin    radwatch

[root@localhost sbin]# cd /usr/local/etc/raddb/

[root@localhost raddb]# ls

acct_users                 clients.conf       ldap.attrmap    sites-available

attrs                      dictionary         modules         sites-enabled

attrs.access_challenge     eap.conf           policy.conf     sql

attrs.access_reject        example.pl         policy.txt      sql.conf

attrs.accounting_response  experimental.conf  preproxy_users  sqlippool.conf

attrs.pre-proxy            hints              proxy.conf      templates.conf

certs                      huntgroups         radiusd.conf    users

3.测试radius

[root@localhost raddb]#vi users

去掉前面的注释  steve  Cleartext-Password := "testing"

[root@localhost]#radius  -X

 ... adding new socket proxy address * port 52873

Listening on authentication address * port 1812

Listening on accounting address * port 1813

Listening on command file /usr/local/var/run/radiusd/radiusd.sock

Listening on authentication address 127.0.0.1 port 18120 as server inner-tunnel

Listening on proxy address * port 1814

Ready to process requests.

证明能正常启动

[root@localhost]#radtest steve  testing   localhost 0 testing123

看到Access-Accept证明测试成功 

4.安装radiusclient

不安装就会缺少依赖的文件

[root@localhost ~]# tar xvf radiusclient-0.3.2.tar.gz 

[root@localhost radiusclient-0.3.2]# ./configure

[root@localhost radiusclient-0.3.2]# make && make install

5.配置pppd使其与radius一起工作

[root@localhost ~]# tar xvf ppp-2.4.3.tar.gz 

[root@localhost ]#mkdir  /etc/ppp/radius

[root@localhost ]#cp   ppp-2.4.3/pppd/plugins/radius/etc/*   /etc/ppp/radius

6.配置pppoe

配置/etc/ppp/pppoe-server-options文件 

# PPP options for the PPPoE server

# LIC: GPL

require-chap

login

lcp-echo-interval 10

lcp-echo-failure 2

ms-dns 202.106.0.20

ms-dns 8.8.8.8

noipdefault

noipx

nodefaultroute

proxyarp

noktune

plugin         /usr/lib/pppd/2.4.4/radius.so

radius-config-file /etc/ppp/radius/radiusclient.conf

logfile /var/log/pppd.log //记录拨号信息

配置/etc/ppp/ chap-secrets

# Secrets for authentication using CHAP

# client        server  secret                  IP addresses

ttt    *       123     *

然后可以启动pppoe服务了,命令是: # /usr/sbin/pppoe-server -I eth0 -L 192.168.85.132 -R 172.16.10.20 -N 20

通过电脑就可以拨号连接了

7.通过数据库拨号认证,下来安装配置数据库

yum install mysql-server  mysql-devel

创建数据库

[root@localhost ~]mysql  -p 

#create database radius;

#exit;

[root@localhost ~]cd /usr/local/etc/raddb/sql/mysql

[root@localhost ~]mysql -p radius <./schema.sql

[root@localhost ~]mysql -p radius <./nas.sql

8.修改配置文件

vi sites-enabled/default ,去掉sql前的注释,注释掉files

authorize { 

chap

mschap

suffix

eap

#files

sql

pap

}

 

accounting{

detail

unix

radiutmp

sql

}

session { 

radutmp 

# # See "Simultaneous Use Checking Queries" in sql.conf 

sql }


修改与mysql数据库连接的配置文件/usr/local/etc/raddb/sql.conf //只修改这几处

server ="localhost"

login = “root”

password = "数据库登录密码"

radius_db = "数据库名"

修改radius的配置文件,在目录/usr/local/etc/raddb/radiusd.conf中

去掉这一行的注释

$ INCLUDE sql.conf

此时启动radius -X会报错

现在来安装一下rlm_sql_mysql

cd  /root/freeradius-server-2.1.12/src/modules/rlm_sql/drivers/rlm_sql_mysql

./configure  --with-mysql-dir=/usr/share/mysql/  --with-mysql-lib/=/usr/lib/mysql/

make

make  install

9.向数据库添加用户测试

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 radgroupcheck (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');


mysql> select *  from  radcheck;

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

| id | username | attribute     | op | value |

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

|  1 | test     | User-Password | := | test  | 

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

1 row in set (0.00 sec)

现在来测试有没有成功:
[root@localhost raddb]# radiusd -X

安装完后默认只允许本机的client客户端访问radius服务器

[root@localhost raddb]# vim clients.conf 

# 只允许本机的客户端访问

client localhost {

       ipaddr = 127.0.0.1

       secret = testing123

}

# 添加一个子网 192.168.230.0/24 的网段可访问

client 192.168.230.0/24 {

       secret          = testing123

       shortname       = lan-w3pc

}

另开一个终端测试本机
[root@localhost]# radtest test test 127.0.0.1 0 testing123

看Access-Accept 字样就说明成功了

10.pppoe结合radius认证

让pppoe服务使用freeradius服务器进行验证 
首先更改/etc/ppp/pppoe-server-options,添加一行设置

# PPP options for the PPPoE server

# LIC: GPL

require-chap

login

lcp-echo-interval 10

lcp-echo-failure 2

ms-dns 202.106.0.20

ms-dns 8.8.8.8

noipdefault

noipx

nodefaultroute

proxyarp

noktune

plugin         /usr/lib/pppd/2.4.4/radius.so

radius-config-file /etc/ppp/radius/radiusclient.conf

logfile /var/log/pppd.log

最重要的是配置/etc/ppp/radiuds/radiusclient.conf

# General settings

auth_order      radius

login_tries     4

login_timeout   60

nologin /sbin/nologin

issue   /etc/ppp/radius/issue

authserver      【服务器IP】:1812

acctserver      【服务器IP】:1813

servers         /etc/ppp/radius/servers

dictionary      /etc/ppp/radius/dictionary

login_radius    /usr/local/sbin/login.radius

seqfile         /var/run/radius.seq

mapfile         /etc/ppp/radius/port-id-map

default_realm

radius_timeout  10

radius_retries  3

login_local     /bin/login

主要就是修改相应文件的路径,根据自己选择

编辑 servers ,设定radius 服务器的位置

[root@localhost radius]# cat  servers 

#Server Name or Client/Server pair              Key

【服务器IP】       testing123

编辑 dictionary ,修改一些路径设置,主要是最后一个dictionary.microsoft 的路径设置

vi   /etc/ppp/radius/dictionary

INCLUDE /etc/ppp/radius/dictionary.microsoft

11.拨号认证

在电脑上打开宽带连接

wKioL1m6gAaRQoDHAADgi1SXpgs105.jpg-wh_50

连接成功后可以看到分配的Ip

wKiom1m6gEzCbpFjAAAIwSs2HVs925.jpg-wh_50

到此结束

本文转自 Linux_woniu 51CTO博客,原文链接:http://blog.51cto.com/linuxcgi/1965321


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
技术圈高级认证,MySQL高级SQL语句,别藏了,就是你应该知晓的好文 下
技术圈高级认证,MySQL高级SQL语句,别藏了,就是你应该知晓的好文 下
22 0
技术圈高级认证,MySQL高级SQL语句,别藏了,就是你应该知晓的好文 中
技术圈高级认证,MySQL高级SQL语句,别藏了,就是你应该知晓的好文 中
18 0
技术圈高级认证,MySQL高级SQL语句,别藏了,就是你应该知晓的好文 上
技术圈高级认证,MySQL高级SQL语句,别藏了,就是你应该知晓的好文 上
11 0
【Shiro】Shiro从小白到大神(二)-Subject认证结合MySQL
【Shiro】Shiro从小白到大神(二)-Subject认证结合MySQL
87 0
Mysql 8.0 OCP认证考试原题题库整理(CUUG内部资料)-第8题
Mysql 8.0 OCP认证考试原题题库整理(CUUG内部资料)-第8题
220 0
Mysql 8.0 OCP认证考试原题题库整理(CUUG内部资料)-第7题
Mysql 8.0 OCP认证考试原题题库整理(CUUG内部资料)-第7题 Choose the best answer. You want to log only the changes made to the database objects and data on the MySQL system. Which log will do this by default? A) slow query log B) binary log C) error log D) general query log E) audit log
213 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
让 MySQL 原生分布式触手可及
立即下载
好的 MySQL 兼容可以做到什么程度
立即下载
云数据库RDS MySQL从入门到高阶
立即下载