【原创】架设PPPOEServer及RadiusServer(OpenLDAP+Mysql)Normal0false7.8磅02falsefalsefalseEN-USZH-CNX-NONEMicrosoftInternetExplorer4ContentsPage目录1说明11.1所需软件及下载地址21.2实现过程及功能特性32架设服务器错误!未定义书签。2.1准备工作—编译内核错误!未定义书签。2.2架设PPPOE服务器错误!未定义书签。2.3架设Raius服务器并挂接PPPOE服务器错误!未定义书签。2.5挂接Radius与PPPOE服务器错误!未定义书签。2.6架设OpenLDAP服务器并挂接Radius服务器错误!未定义书签。2.7实现Radius服务器的Web管理功能错误!未定义书签。2.8实现OpenLDAP服务器的Web管理功能错误!未定义书签。1说明1.1所需软件及下载地址1.1.1CentOS5.2-----------------------------------------------------最稳定的linux服务器1.1.2linux-2.6.19.tar.gz------------------------------------------2.6.19内核1.1.3linux-2.6.19-mppe-mppc-1.3.patch.bz2--------------内核的mppe-mppc补丁1.1.4ppp-2.4.3.tar.gz---------------------------------------------PPP主程序1.1.5ppp-2.4.3-mppe-mppc-1.1.patch.gz------------------ppp的mppe-mppc补丁1.1.6rp-pppoe-3.10.tar.gz---------------------------------------PPPOE主程序1.1.7freeradius-server-2.1.3.tar-------------------------------FreeRadius服务器主程序1.1.8mysql-5.0.67-linux-i686.tar.gz---------------------------MySQL数据库主程序1.1.9MySQL-shared-compat-5.0.67-0.rhel5.i386.rpm—MySQL共享库1.1.10freeradius-mysql-1.1.3-1.2.el5--------------------------freeradius与MySQL链接程序1.1.11httpd-2.2.9.tar.gz-------------------------------------------最流行的web服务器1.1.12php-4.4.9.tar.gz----------------------------------------------PHP程序1.1.13ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz----优化PHP程序代码的工具1.1.14phpMyAdmin-2.11.9.4-all-languages.tar.gz-------web方式管理mysql数据库的工具1.1.15db-4.2.52.tar.gz----------------------------伯克利数据库—openldap的后台数据库1.1.16gettext-0.17.tar.gz------------------------OpenLDAP实现web管理方式的后台语言支持工具1.1.17openldap-2.4.11-stable-20080813.tgz-------------OpenLDAP主程序1.1.18phpldapadmin-0.9.8.4.tar.gz--------------------------OpenLDAP的WEB访问工具1.2实现过程及功能特性我们的试验网络拓扑如下图所示:首先编译内核,以加入对mppe和mppc的支持,然后架设PPPOE服务器,实现终结用户PPPOE拨号的功能,此时,对用户的验证以文本文件(存储在PPPOE程序组)的方式进行。然后架设Radius服务器,将用户的PPPOE拨号请求转送到Radius服务器进行验证。Radius服务器分别挂接OpenLDAP服务器和MySQL服务器,其中的OpenLDAP服务器实现对用户名、密码等信息的验证和属性返回,Mysql服务器实现对用户带宽、连接时间、产生流量等的记录和属性返回。最后实现Radius服务器、MySQL服务器、OpenLDAP服务器的Web管理功能,从而能够批量产生用户,并方便管理用户(新建、删除、修改属性等)。通过以上步骤建立的一个服务器体系完全能够适应现代网络对拨号快速认证、属性返回等要求,达到物理服务器的水平,如RedbackSmartEdge、JuniperERX。但却拥有更高的性价比。同时Radius服务器和OpenLDAP服务器同现在各省市正在使用的服务器拥有相近的稳定性和性能,甚至有的省份只采用Radius来管理用户,并没有OpenLDAP服务器,如浙江省。具体步骤不再赘述,主要配置文件如下:1.[root@mmmodules]#cat/etc/ppp/optionslockcrtsctsnobsdcompnodeflatenopcomp#require-mppe#mppe-40#mppe-128#mppe-statelessplugin/etc/ppp/plugins/radius.soradius-config-file/etc/ppp/radius/radiusclient.conf2.[root@mmmodules]#cat/etc/ppp/pppoe-server-options#PPPoptionsforthePPPoEserver#LIC:GPL#require-pap#login#lcp-echo-interval10#lcp-echo-failure2##############################################authrequire-chap#require-mppedefault-mrudefault-asyncmaplcp-echo-interval60lcp-echo-failure5ms-dns202.101.172.35ms-dns202.101.172.47noipdefaultnoipxnodefaultroutenoproxyarpnoktune172.16.1.10:172.17.1.254netmask255.255.255.255logfile/var/log/pppd.log3.OpenLDAP的数据库设置如下:dn:cn=radius,ou=profils,dc=mm,dc=comobjectClass:radiusObjectProfileobjectClass:radiusprofilecn:radiusradiusGroupName:radiusradiusServiceType:Framed-UserradiusFramedProtocol:pppradiusFramedIPAddress:10.10.10.11radiusFramedIPNetmask:255.255.255.0uid:ldaptest1radiusFramedCompression:Van-Jacobsen-TCP-IPradiusFramedRouting:Broadcast-ListenradiusFramedMTU:1500radiusFilterId:std.pppuserPassword:ldaptest1radiusAuthType:chap4.然后在MYSQL中加入该用户信息(ldaptest1),以便计费:mysqlinsertintoradcheck(username,attribute,op,value)values('ldaptest1','User-Password','==','ldaptest1');然后把用户加到组里:mysqlinsertintousergroup(username,groupname)values('ldaptest1','user');5.设置radius的ldap认证模块/usr/local/freeradius/etc/raddb/modules/ldap,修改如下:ldap{server=localhostidentity=cn=Manager,dc=mm,dc=compassword=testing123basedn=ou=profils,dc=mm,dc=comfilter=(uid=%{Stripped-User-Name:-%{User-Name}})ldap_connections_number=5timeout=4timelimit=3net_timeout=1tls{start_tls=no}password_attribute=userPasswordedir_account_policy_check=noset_auth_type=yes}6.修改/usr/local/freeradius/etc/raddb/sites-available/,来指定Radius认证方式,相应部分修改如下:authorize{ldap}authenticate{Auth-TypeLDAP{ldap}}accounting{sql}其它的方式全部注释掉即可。通过以上配置,我们就完成了全部服务器的配置:#radiusd-X验证过程如下:(包括认证请求、计费开始请求、计费结束请求三个部分)rad_recv:Access-Requestpacketfromhost127.0.0.1port32768,id=10,length=114Service-Type=Framed-UserFramed-Protocol=PPPUser-Name=ldaptest1CHAP-Challenge=0x7abcb9ac6f368f318969c7351fbdb7b615a49eCHAP-Password=0x242e7e2035dad2d954264e4eef46c00047Calling-Station-Id=00:1C:C4:CD:68:06NAS-IP-Address=127.0.0.1NAS-Port=0+-enteringgroupauthorize{...}++[preprocess]returnsok[chap]Setting'Auth-Type:=CHAP'++[chap]returnsok++[mschap]returnsnoop[ldap]performinguserauthorizationforldaptest1[ldap]WARNING:Deprecatedconditionalexpansion:-.Seemanunlangfordetails[ldap]expand:(uid=%{Stripped-User-Name:-%{User-Name}})-(uid=ldaptest1)[ldap]expand:ou=profils,dc=mm,dc=com-ou=profils,dc=mm,dc=comrlm_ldap:ldap_get_conn:CheckingId:0rlm_ldap:ldap_get_conn:GotId:0rlm_ldap:performingsearchinou=profils,dc=mm,dc=com,withfilter(uid=ldaptest1)[ldap]AddedUser-Password=ldaptest1incheckitems[ldap]loo