LINUX下PPPoe+Freeradius+Mysql配置

LINUX下PPPoe+Freeradius+Mysql配置

 

Written by Openking on 2013-4-22

一:配置环境及准备

1、系统

(1)本教程采用CENTOS 5.6系统(下载链接:ed2k://|file|%5B%E3%80%8ACentOS.5.6%E3%80%8B.x86.%E5%85%89%E7%9B%98%E9%95%9C%E5%83%8F%5D.CentOS-5.6-i386-bin-DVD.iso|4262373376|26d1d42c0bd87d1fa5b78bd53ca1fb3a|h=ebeswxillu5bs4yz5g6v63w3mgkiwd2o|/,其他linux系统亦可,配置稍有区别。

(2) 系统安装完毕应将一些必要软件安装完成,例如gcc编译器(在线安装命令:yuminstall gcc ;离线安装方法自己百度,较麻烦,不推荐)和vim编辑器(在线安装命令:yum-y install vim;离线同样很麻烦。)并测试一些基本命令是否可用,例如ifconfig,如有问题请找度娘。

2、软件

    (1) pppoe:客户端为windows操作系统自带,服务器端centos5.6自带且已安装好,如使用其他Linux系统,可能需自己下载安装(下载链接:http://www.roaringpenguin.com/products/pppoe)。

    (2)Freeradius:服务器端采用freeradius-server-2.1.12(下载链接:ftp://ftp.freeradius.org/pub/freeradius),同系列各种版本区别不大,1.X.X和2.X.X可能有一些较大区别,后面具体配置会提到;

客户端采用ppp协议压缩包ppp-2.4.4.tar.gz自带的radius客户端(下载链接:ftp://ftp.samba.org/pub/ppp/),亦可自己下载freeradius-client(下载链接同freeradius-server)。

(3)Mysql :本例程采用MySQL-server-5.5.30-1.rhel5.i386.rpm以及MySQL-client-5.5.30-1.rhel5.i386.rpm

(下载链接:http://dev.mysql.com/downloads/mysql/#downloads)

   (4)Openssl:freeradius运行需要(下载链接:http://www.openssl.org/);

 MySQL-devel:freeradius-server与Mysql连接需要

(下载链接:http://dev.mysql.com/downloads/mysql/#downloads)。

 

备注:

I、上述软件均可从百度网盘下载,链接:http://pan.baidu.com/share/link?shareid=448605&uk=3457442646

II、软件存放地址均为桌面/home/openking/Desktop,后面安装教程命令也以此为基础。

IIIlinux下所有的rpm包下载地址:http://rpmfind.net/linux/RPM/index.html

      

二:具体配置步骤

1、安装软件

(1)、以root登录系统或以用户名登陆后打开终端切换到root权限(不是root权限可能会导致软件安装不成功,而且会没有权限修改一些敏感文件):

   

附:修改root用户密码命令: 

#sudo passwd root

 

(2)、安装pppoe

首先检查系统上的rp-pppoe以及ppp软件是否安装,命令:
        #rpm -q rp-pppoe ppp          

如果使用的是centos 5.6,那么结果应该是:

     

如果你的系统该命令显示为空,需要自行安装pppoe,命令:

        # cd /home/openking/Desktop

# tar xvzfrp-pppoe-3.11.tar.gz

# cdrp-pppoe-3.11

# ./configure 

# make&& make install

 

(3)、安装freeradius

   首先安装openssl,命令:

#cd /home/openking/Desktop

#tar xvzfopenssl-1.0.0a.tar.gz

#cd openssl-1.0.0a

#make && make install

 

   再装server,命令:

# cd/home/openking/Desktop

# tar xvzffreeradius-server-2.1.12.tar.gz

# cdfreeradius-server-2.1.12

# ./configure

# make &&make install

 

最后装client,由于使用的是ppp包自带的radius客户端,故我们只用将ppp协议包里的radius客户端拷出来即可,命令:

    # cd /etc/ppp                   

    # mkdir radiuds                 

    # cd/home/openking/Desktop

    # tar xvzfppp-2.4.4.tar.gz

    # cd ppp-2.4.4/pppd/plugins/radius/etc/

    #cp * /etc/ppp/radiuds/    

 

(4)、安装Mysql

首先安装Mysql-devel,命令:

#yum install mysql-devel.i386    //

装完理应是:

     


再安装Mysql-server和Mysql-client,命令:

#cd /home/openking/Desktop

#rpm -ivh MySQL-server-5.5.30-1.rhel5.i386.rpm--nodeps --force

#rpm -ivh MySQL-client-5.5.30-1.rhel5.i386.rpm--nodeps --force

全部装完应该是:

    

至此,软件安装全部完成!

 

2、配置PPPOE服务器

(1)修改相关文件参数,命令:

# cd /etc/ppp

# vim options

将文件修改为,其余部分注释(#):(vim修改文件及相关命令操作请找度娘)  

lock
crtscts
        nobsdcomp  //使用bsd压缩
        nodeflate
        nopcomp

# vim pppoe-server-options

将该文件修改为,其余部分注释(#)(具体参数含义可使用命令查看: #man pppd):

# PPP options for the PPPoE server
# LIC: GPL

Auth          //远程用户要验证自己

require-chap   //使用chap验证协议,如果使用pap验证协议,则此行为 require-pap

default-mru

default-asyncmap

lcp-echo-interval 10  //系统每隔10秒发出echo request以确认连线是否正常

lcp-echo-failure 2     //如果2echo request 失败,表示连线已断开

ms-dns 202.112.14.151 //分配给客户端的DNS

ms-dns 202.112.14.161

noipdefault

noipx

#hide-password           //日志里不显示密码

nodefaultroute            //不改变默认路由

proxyarp                //提供porxyarp服务,不提供就是noproxyarp

noktune                 //不改变内核参数

logfile /var/log/pppd.log   //写日志文件

#vim chap-secrets

该文件用于保存客户名及密码,添加一个用户,将文件修改为:

# Secrets for authentication using CHAP
        # client        server        secret                        IP addresses
        test       *        test            *

 

(2)测试运行pppoe服务器,命令:
#pppoe-server-I  eth0  -L 192.168.2.111 -R 192.168.2.112 -N 10

    各参数含义:

-I  eth0 指定pppoe服务器在那个网卡接口监听连接请求
       -L 192.168.2.111
指定pppoe服务器的ip地址。(注意:此IP地址不是网卡的IP地址,而是PPPOE服务器的虚拟IP)(此地址可以任意,若不提供,10.0.0.1将被使用)
       -R 192.168.2.112 pppoe
服务器分配给客户端的IP地址,从192.168.2.112开始,递增(若不提供,10.67.15.1将被使用)
       -N 10
指定最多可以连接pppoe服务器的客户端数量(默认是64 最大是65534
       -C:
用于指定您的PPPoE服务器主机名(此参数可以不要)
       -S:
该选项用于标记特定的服务器,以帮助客户端系统对pppoe服务器进行自我标定。-S选项经常用来保证一些特定客户始终连接到特定服务器,特别是当你的网络上有多个pppoe服务器时。 PPPoE协议的客户端软件可被配置为只登陆有"特殊服务名称"pppoe服务器。如果客户端指定的服务器名称与-S选项服务名称中宣称的名字相符,就会连接到该服务器。
       -T:
超时时间(设置为60秒)

           -k    :使用内核模式PPPoE
           -u    :调用pppd时使用单独的参数
           -r    :随机分配会话数

 

然后在主系统端或另外一台机器上使用pppoe客户端登陆

 

成功登陆代表你的pppoe服务器基本配置好了,不出意外的话,应该连不上外网,接下来:

I、关闭linux系统防火墙,命令:

# serviceiptables stop

Centso5.6也可直接在系统 / 管理 / 安全级别和防火墙里面禁用防火墙

II、更改转发规则,命令:

# iptables -AINPUT -i etho -s 192.168.2.0/24 -j DROP

# iptables -t nat-A POSTROUTING -s 192.168.2.0/24 -j SNAT --to-source                     192.168.1.108

部分参数含义:

-t nat表示进行NAT转化

pppoe-server 命令中参数可以看出分配给客户机的ip地址池为192.168.2.0/24

source 192.168.1.108是本机eth0 IP地址,使用ifconfig命令可以看到。

III、打开ip转发功能,命令:

#vim/etc/sysctl.conf

net.ipv4.ip_forward = 0修改为net.ipv4.ip_forward =1;然后输入命令让配置立刻生效:

# sysctl -p

 

如此,应该就可以连上外网了。

此外,关闭pppoe-server服务器的命令是:

# killallpppoe-server

至此,单一的pppoe服务器配置基本结束,后面的配置过程还会修改部分文件,但以后 启动pppoe-server的命令均为以下三行:(参数根据自己需要更改)

#pppoe-server -Ieth0  -L 192.168.2.111 -R 192.168.2.112-N 10

# iptables -AINPUT -i etho -s 192.168.2.0/24 -j DROP

# iptables -t nat-A POSTROUTING -s 192.168.2.0/24 -j SNAT --to-source      192.168.1.108

 

 

3、配置单一Radius服务器

(1)、相关配置文件修改,命令如下:

#cd /usr/local/etc/raddb

#vim clients.conf

将文件修改为:(供pppoe服务器连入认证使用)

client 127.0.0.1 {
         secret = localhost
         shortname = localhost
         nastype     = other
      }

# vim users

在其顶行加上一句(前面不能有空格):

test Cleartext-Password := “test”

(2)、测试单一radius服务器,在终端里输入以命令:

    

出现下图即表示radius服务器启动成功:

    

附注:关闭radius服务器只要在此界面使用:ctrl + c即可。

 

另开一个终端2 (切记先切换到root),命令如下:

# radtest test testlocalhost 0 localhost

如果出现下图即表示单一radius服务器配置成功:

     

至此,单一的radius服务器配置完毕。

 

 

4、配置PPPoe--Radius服务器

(1)、相关文件修改,命令:

#cd /etc/ppp/radiuds

#vim servers

在文件后添加一行

    localhost   localhost

明显这和在配置radius服务器修改的clients.conf相匹配,表示这个文件是pppoe服务器向radius服务器提供的申请认证的账号和密码

#vim dictionary

将该文件最后一行修改为:

    INCLUDE  /etc/ppp/radiuds/dictionary.microsoft

然后修改文件将pppoe服务器与radius连起来,命令:

# cd /etc/ppp

#vim pppoe-server-options

将文件修改为:

# PPP options for the PPPoE server
       # LIC: GPL

auth

require-chap

default-mru

default-asyncmap

lcp-e       cho-interval 60

lcp-echo-failure 5

ms-dns 202.112.14.151

ms-dns 202.112.14.161

noipdefault

noipx

nodefaultroute

proxyarp

noktune

plugin        /usr/lib/pppd/2.4.4/radius.so       //使用radius来认证授权和记帐

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

logfile  /var/log/pppd.log

接下来修改另一个文件

#cd /etc/ppp/radiuds

#vim radiusclient.conf

将文件修改为:

auth_order     radius

login_tries    4

login_timeout   60

nologin /etc/nologin

issue  /etc/ppp/radiuds/issue

authserver     localhost:1812

acctserver     localhost:1813

servers        /etc/ppp/radiuds/servers

dictionary     /etc/ppp/radiuds/dictionary

login_radius   /usr/local/sbin/login.radius

seqfile        /var/run/radius.seq

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

default_realm

radius_timeout 10

radius_retries 3

login_local    /bin/login

 

(2)、测试运行PPPoe-Radius服务器,终端1命令:(启动radius服务器)

# /usr/sbin/radiusd -X

终端2命令:(启动pppoe服务器)

# pppoe-server -I eth0  -L 192.168.2.111 -R 192.168.2.112 -N 10

# iptables -A INPUT -i etho -s 192.168.2.0/24-j DROP

# iptables -t nat -A POSTROUTING -s192.168.2.0/24 -j SNAT --to-source      192.168.1.108

再使用windows系统连接看看,如果windows能连上并且能够正常上网,那么代表你配置成功了。

至此,PPPoe-Radius服务器配置完毕。

 

5、配置MySQL

(1)、相关参数及文件修改,命令如下:

# echo /usr/lib >> /etc/ld.so.conf

# ldconfig

# cd/home/openking/Desktop/freeradius-server-2.1.12

# cd src/modules/rlm_sql/drivers/rlm_sql_mysql

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

# make && make install

# service mysql start

#mysql -u root -p

     >create database radius;

     >exit;

# cd /usr/local/etc/raddb/sql/mysql

# mysql -u root -p radius <schema.sql   //导入的数据库与radius版本有关,1.1.7版本之前的数据库文件是mysql.sql

# mysql -u root -p

     >use radius;

     >show tables;

建立组信息:

     >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.255');

    >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 radusergroup (username,groupname) values ('test','user');

    >exit;

至此,数据库配置基本完成,下面来配置radius使其通过数据库验证用户信息,命令如下:

# cd /usr/local/etc/raddb/site_enabled

# vim default

 把authorize{} 、accounting {}中的sql前面的#去掉,并把authorize{}中的files前加#;如下示:

  authorize {

        chap

        mschap

        suffix

        eap

        #files

        sql

        pap

    }

 accounting {

        detail

        unix

        #radutmp     //本例程中使用了Simultaneous-Use:=1(同一用户一次只能登陆

        sql            一台机器),有它在radiusd进程意外结束会有问题,所以禁用

}

session {
                 #radutmp
                 sql
       }

然后修改与mysql数据库连接的配置文件,命令如下:

# vim /usr/local/etc/raddb/sql.conf

修改password = “radpass” password = “”

        # cd ../

# vim radius.conf

去掉第700行#   $INCLUDE sql.conf的注释

 

(2)、测试运行完整的PPPOE--Radius--MySQL,终端1命令如下:

# /usr/sbin/radiusd -X

终端2命令:

# pppoe-server -I eth0  -L 192.168.2.111 -R 192.168.2.112 -N 10

# iptables -A INPUT -i etho -s 192.168.2.0/24-j DROP

# iptables -t nat -A POSTROUTING -s192.168.2.0/24 -j SNAT --to-source      192.168.1.108

如果windows客户机(用户名:test, 密码:test)能连上并且能够正常上网,那么你的本地PPPOE--Radius--MySQL已配置成功。


6、配置远程PPPoe--Radius服务器

(1)、PPPoe服务器放置在系统1上,Radius放置在系统2上,两个系统都要是linux系统;

(2)、系统1按照上述过程要配置完整的pppoe和radius-client(在本例程中即是从ppp拷贝出的radius客户端文件);

(3)、系统2不用配置pppoe和radius-client,但是要配置完整的radius-server和mysql。分别配置完成后对部分文件稍作修改:(系统1地址:192.168.1.6,系统2地址:192.168.1.5)

  系统1 命令:

# ifconfig

# cd/etc/ppp/radiuds

# vimradiusclient.conf

将文件中两行:

authserver  localhost:1812

acctserver  localhost:1813

修改为

authserver  192.168.1.5:1812      //系统2IP地址

acctserver 192.168.1.5:1813

# vim servers

修改文件,将localhost localhost

改为  192.168.1.5  farhost       //系统2IP地址和密码 

   系统2命令:

# ifconfig

# cd/usr/local/etc/raddb

# vim clients.conf

在文件尾添加以下内容:

client 192.168.1.6 {

 secret = farhost

 }

(4)、服务器功能测试与运行

系统2启动radius服务器,命令:

# /usr/local/sbin/radiusd -X

系统1启动pppoe服务器,命令:

# pppoe-server -I eth0  -L 192.168.2.111 -R 192.168.2.112 -N 10

# iptables -A INPUT -i etho -s 192.168.2.0/24-j DROP

# iptables -t nat -A POSTROUTING -s192.168.2.0/24 -j SNAT --to-source      192.168.1.6

在windows平台上登录(用户名:test, 密码:test),观察是否能连上及上网,如果可以,表示远程PPPoe--Radius服务器配置成功。

至此LINUX下PPPoe+Freeradius+Mysql配置全部完成!!!

 

附录:

1、如果按照上述步骤如果做不出应有的结果,请仔细检查文件修改的正不正确,一个字母符号都不能错,还不行就去检查系统日志文件(路径:/var/log/messages)查找相关信息排除故障;

 

2、文中配置命令中的openking为你的系统用户名,请根据自己的系统自行更改;

 

3、关于虚拟机软件,推荐使用Oracle的virtubox,至少本例程是使用该软件实现的,没有任何问题,至于vmware还是碰到了一些问题。另外,虚拟系统联网方式一定要选桥接模式,不能使用NAT;

 

4、以命令行方式安装rpm包,在终端中我们可以使用rpm  -i [选项] [rpm 包文件名]来进行安装,常用选项如下:
  -h 使用符号#显示安装进度
  -v 报告每一步操作的情况
  --replacepkge 无论软件包是否已被安装,都强行安装软件包
  --test 安装测试,并不实际安装
  --nodeps 忽略软件包的依赖关系强行安装(一般不能正常运行,因为缺少依赖文件)
  --force 忽略软件包及文件的冲突

 

5、新装linux系统基本命令不识别,例如:

# ifconfig

  提示命令不存在

  但使用 # /sbin/ifconfig 即可

  原因: 系统默认的环境变量设置不对

  在 普通用户和root用户下分别执行echo $PATH,PATH里少了四个地址:/sbin:/usr/sbin:/usr/local/sbin:/usr/kerberos/sbin

  而,ifconfig恰恰就在/sbin里面。

  或者

  cat/etc/profile, 可以发现没有关于/sbin的环境变量。

# su root

# vim /etc/profile

  在文件末加入以下语句:

  PATH=$PATH:/sbin#在PATH变量后追加/sbin目录

export PATH=$PATH:/sbin

vim home/openking/.bash_profile,在PATH后面添加/sbin:/usr/sbin:/usr/local/sbin:/usr/kerberos/sbin这几个路径。

  改完之后,执行命令:. .bash_profile,也可以注销下或者重启才能使刚刚修改的内容生效。

  再来sudoifconfig , 就OK了。

 

6、如果启动radius服务器出现下列情况:

则输下列命令:

# lsof -i

寻找名为radiuds的进程,记录下其PID

#kill  PID

#/usr/lcoal/sbin/radiusd -X

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值