pptp是常用的vpn软件,翻墙利器.传统的pptp是使用文档方式来实现用户的认证的,管理用户时需要操作chap-secrets文件来,添 加修改用户.使用起来不方便.而且没有对用户流量监控,以及分组管理的功能.可不可以实现通过数据库来管理用户,以及记录PPTP用户使用的流量,限制一 个账号同时登陆人数呢?答案是:有.
 想知道吗?且看下面分解
 一、安装pptp
 PPTP VPN 服务器安装
1、安装相关软件
 32位版:
 yum install -y ppp iptables
 wget http://poptop.sourceforge.net/yu … -1.rhel5.1.i386.rpm
 rpm -ivh pptpd-1.3.4-1.rhel5.1.i386.rpm
 64位版:
 yum install -y ppp iptables
 wget http://poptop.sourceforge.net/yu … .rhel5.1.x86_64.rpm
 rpm -ivh pptpd-1.3.4-1.rhel5.1.x86_64.rpm
2、配置文件编写
 ①、配置文件/etc/ppp /options.pptpd
 mv /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak
 vi /etc/ppp/options.pptpd
 输入以下内容:
 name pptpd
 refuse-pap
 refuse-chap
 refuse-mschap
 require-mschap-v2
 require-mppe-128
 proxyarp
 lock
 nobsdcomp
 novj
 novjccomp
 nologfd
 ms-dns 208.67.222.222
 ms-dns 208.67.220.220
②、 配置文件/etc/ppp/chap-secrets
 mv /etc/ppp/chap-secrets /etc/ppp/chap-secrets.bak
 vi /etc/ppp/chap-secrets
 输入以下内容
 # Secrets for authentication using CHAP
 # client        server  secret                  IP addresses
 myusername pptpd mypassword *
 注: 这里的myusername和mypassword即为PPTP VPN的登录用户名和密码
例:
 admin           pptpd   63700                        192.168.0.110
 jijianlin       pptpd   jijianl@vpn                   192.168.0.111
如果多人使用同一个账 号登陆,ip地址的位置写*
 jijianlin       pptpd   jijian@vpn                   *
③、 配置文件/etc/pptpd.conf
 mv /etc/pptpd.conf /etc/pptpd.conf.bak
 vi /etc/pptpd.conf
 输入以下内容:
 option /etc/ppp/options.pptpd
 logwtmp
 localip 192.168.9.1
 remoteip 192.168.9.11-30
 注:为拨入VPN的用户动态分配 192.168.9.11~192.168.9.30之间的IP
④、 配置文件/etc/sysctl.conf
 vi /etc/sysctl.conf
 修改以下内容:
 net.ipv4.ip_forward = 1
保存、退出后执行:
 /sbin/sysctl -p
3、 启动PPTP VPN 服务器端:
 /sbin/service pptpd start
4、 启动iptables:
 /sbin/service iptables start
 /sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.9.0/24 -j MASQUERADE
 测试:拨号测试,没问题继续下面的.
二、安装系统自 带的mysql,apache  php等环境(我使用的是centos系统,所以用yum来安装,也可以使用其他方法,自便)
 yum -y install httpd php mysql mysql-server php-mysql httpd-manual  mod_ssl mod_perl mod_auth_mysql php-mcrypt php-gd php-xml  mysql-connector-odbc mysql-devel libdbi-dbd-mysql
 三、下载安装freeradius
 #wget ftp://ftp.freeradius.org/pub/fre … server-2.1.3.tar.gz
 # tar zxvf freeradius-server-2.1.3.tar.gz
 # cd freeradius-server-2.1.3 (2.1.3 版本才能够与myql 5.0.45的版本匹配,高于次版本不能够编译成功mysql模块)
 ./configure –prefix=/usr/local/freeradius
 make
 make install
vi /etc/profile
 export PATH=$PATH:/usr/local/freeradius/sbin:/usr/local/freeradius/bin
 source /etc/profile
 vi /etc/ld.so.conf
 /usr/local/freeradius/lib
 ldconfig -v
 cd /usr/local/freeradius
 vi +76  etc/raddb/users取消注释
 radiusd -Xs
 radtest steve testing localhost 1812 testing123
 出现Access-Accept字样说明成功。
 测试成功后把/etc/raddb/users改回去。
 四、freeradius和mysql的集成
 # mysqladmin -u root -p create radius
 mysql -u root -p radius < etc/raddb/sql/mysql/schema.sql
 mysql -u root -p radius < etc/raddb/sql/mysql/nas.sql
 mysql -u root -p radius < etc/raddb/sql/mysql/ippool.sql
 mysql -u root -p radius < etc/raddb/sql/mysql/wimax.sql
 mysql -u root -p
 mysql> GRANT SELECT ON radius.* TO ‘radius’@'localhost’ IDENTIFIED BY ‘radpass’;
 mysql> GRANT ALL on radius.radacct TO ‘radius’@'localhost’;
 mysql> GRANT ALL on radius.radpostauth TO ‘radius’@'localhost’;
 先加入一些组信息:
 mysql> insert into radgroupreply (groupname,attribute,op,value) values (‘user’,'Auth-Type’,':=’,'Local’);
 mysql> insert into radgroupreply (groupname,attribute,op,value) values (‘user’,'Service-Type’,'=’,'Framed-User’);
 mysql> insert into radgroupreply (groupname,attribute,op,value) values (‘user’,'Framed-IP-Netmask’,'=’,’255.255.255.255′);
 mysql> insert into radgroupreply (groupname,attribute,op,value) values (‘user’,'Framed-IP-Netmask’,':=’,’255.255.255.0′);
 然后加入用户信息:
 mysql> INSERT INTO radcheck (UserName, Attribute, Value) VALUES (‘sqltest’, ‘Password’, ‘testpwd’);
 然后把用户加到组里:
 mysql> insert into radusergroup(username,groupname) values(‘sqltest’,'user’);
 mysql> select * from radcheck where UserName=’sqltest’;
insert into radgroupreply (groupname,attribute,op,value) values (‘user’,'Simultaneous-Use’,':=’,’1′);
限制一个账户同时只能登陆一个,不做下面限制,可以同时登陆多个
 INSERT INTO radgroupcheck (GroupName, Attribute, op, Value) values(“user”, “Simultaneous-Use”, “:=”, “1″);        限制登陆次数
 insert into radcheck (username,attribute,op,value) values (‘test’,'User-Password’,':=’,'test’);  添加用户   
 INSERT INTO radcheck (UserName, Attribute, Value) VALUES (‘sqltest’, ‘Password’, ‘testpwd’);    添加用户  两种方法都可以,效果一样      
 insert into radusergroup (username,groupname) values (‘test’,'user’);            将用户添加到现在组里(user组)
注意:这里使用的freeradius是2.0版本的,1.0版本的数据库sql和2.0的位置不一样.
 1.编辑/usr/local /freeradius/etc/raddb/sql.conf
 mysql用户名,密码根据自己的情况填写
 第88行取消readclients = yes 前的注释
 2.编辑/usr/local/freeradius/etc/raddb/sites-enabled/default
 第145 行files前加注释
 第152 行取消sql前的注释
 第308 行files 前加注释
 第342 行取消sql前的注释
 第374 行取消sql前的注释
 第395 行取消sql前的注释
 3.编辑/usr/local/freeradius/etc/raddb/sites-enabled/inner-tunnel
 第111 行files前加注释
 第118行取消sql前的注释
 第242行取消sql前的注释
 第264行取消sql前的注释
 ###总之就是去掉files模块,开启sql模块
 4.编辑/usr/local/freeradius/etc/raddb/eap.conf
 第30行default_eap_type = md5改为default_eap_type = peap
 5.测试
 # radtest sqltest testpwd localhost 1812 testing123
 出现Access-Accept字样说明成功。
 参考网址:http://linux.chinaunix.net/bbs/thread-1061085-1-2.html
 到目前为止:整合了freeradius+mysql, pptpd还是单独运行.
 五、pptpd+mysql+freeradius整合
 mkdir /etc/radiusclient/
    
 下载源码ppp-2.4.4,解压
 wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.4.tar.gz
 cd ppp-2.4.4/ppp-2.4.4/pppd/plugins/radius/etc
 cp * /etc/radiusclient/
    
 vi /etc/radiusclient/radiusclient.conf
 auth_order      radius
 login_tries     4
 login_timeout   60
 # logins on /dev/ttyS2)   (default /etc/nologin)
 nologin /sbin/nologin
 issue   /etc/radiusclient/issue
 authserver      localhost:1812
 acctserver      localhost:1813
 servers         /etc/radiusclient/servers
 dictionary      /etc/radiusclient/dictionary
 login_radius    /usr/local/sbin/login.radius
 seqfile         /var/run/radius.seq
 # file which specifies mapping between ttyname and NAS-Port attribute
 mapfile         /etc/radiusclient/port-id-map
 default_realm
 # time to wait for a reply from the RADIUS server
 radius_timeout  10
 # resend request this many times before trying the next server
 radius_retries  3
 login_local     /bin/login
 vi /etc/ppp/options.pptpd
 在最后添加:
 # put plugins here
 # (putting them higher up may cause them to sent messages to the pty)
 logfile /var/log/pptpd.log
 plugin /usr/lib64/pppd/2.4.4/radius.so
 #plugin /usr/lib64/pppd/2.4.4/radattr.so
 radius-config-file /etc/radiusclient/radiusclient.conf
 ###注意,我的是64位系统,所以模块在/usr/lib64/pppd/2.4.4 下面。32位的在 /usr/lib/pppd/2.4.4
 vi  /etc/radiusclient/server
 localhost                                       testing123
 vi /etc/radiusclient/dictionary
 添加:
 INCLUDE /etc/radiusclient/dictionary.microsoft
 INCLUDE /etc/radiusclient/dictionary.ascend
 INCLUDE /etc/radiusclient/dictionary.merit
 INCLUDE /etc/radiusclient/dictionary.compat
 否则拨号时后台日志会报错,无法拨入,客户端报691错误:
   Connect: ppp0  /dev/pts/5
   rc_avpair_new: unknown attribute 11  rc_avpair_new: unknown attribute 25
   Peer test failed CHAP authentication
   Connection terminated.   
 哈哈,从启freeradius 与pptpd ,连接就可以通过了。
 如果是无法访问其他的机器,请注意防火墙的设置。这是我的配置文档,绝对的能够跑通。
 后记:
    后来想通过mac地址来帮定客户端,但是实践了后发现ppp根本就不可能实现这个功能,绑定IP对于内网用户来说,没有任何问题,但是对于从公网连接到 公司的用户来说,根本没有作用。只能放弃。
pkill radiusd   关闭radiusd
 radiusd         启动radiusd
 service pptpd stop
 service pptpd start
 检查mysql是否已经开启
测 试:
 在数据库里添加一个用户
 INSERT INTO radcheck (UserName, Attribute, Value) VALUES (‘user1′, ‘Password’, ’123456′);
在 XP系统上用user1 123456 用户登陆。
现在服务器上测试
 [root@localhost ~]# radtest user1 123456 localhost 1812 testing123
 Sending Access-Request of id 93 to 127.0.0.1 port 1812
         User-Name = “user1″
         User-Password = “123456″
         NAS-IP-Address = 127.0.0.1
         NAS-Port = 1812
 rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=93, length=20
显示如上说明成功
备注:
 本文参考了网上几篇文章,亲手安装测试总结而成.可以说是目前网上能找到的比较全的安装使用文档.
 参 考文档:
 http://linux.chinaunix.net/techd … 06/23/1119944.shtml
 http://linux.chinaunix.net/bbs/thread-1061085-1-2.html
对radius库的一些说明
 radius 库有10张表
                                                        
          nas                                                                  0          MyISAM           latin1_swedish_ci             1.0 KB
     -  
          radacct                                                                  4          MyISAM           latin1_swedish_ci              10.6 KB
     -  
          radcheck                                                                  2          MyISAM           latin1_swedish_ci             3.1  KB
     -  
          radgroupcheck                                                                  0          MyISAM           latin1_swedish_ci              1.0 KB
     -  
          radgroupreply                                                                  4          MyISAM           latin1_swedish_ci              3.2 KB
     -  
          radippool                                                                  0          MyISAM           latin1_swedish_ci             1.0  KB
     -  
          radpostauth                                                                  14          MyISAM           latin1_swedish_ci              2.6 KB
     -  
          radreply                                                                  0          MyISAM           latin1_swedish_ci             1.0  KB
     -  
          radusergroup                                                                  1          MyISAM           latin1_swedish_ci              2.0 KB
     -  
          wimax                                                                  0          MyISAM           latin1_swedish_ci             1.0 KB
     -
其 中重要的有
 radacct   用来用户登陆后,详细信息,包括登陆和下线时间,上传和下载字节数
 radcheck   用来记录用户账户、密码
 radpostauth  记录所有用户没一次登陆的开始时间及状态
—————————————————————————————————————————
需要翻墙利器? 请安装Wuala,查找和添加gfwblog为好友,就可高速下载翻墙软件,或访问http://tinyurl.com/gfwblog直接下载。
 
推特用户请点击这里免翻墙上推特
请点击这里下载翻墙软件 
更多翻墙方法请发电邮(最好用Gmail)到:fanqiang70ma@gmail.com 
 
请阅读和关注中国数字时代、翻墙技术博客GFW BLOG(免翻墙) 
 
--
Posted By GFW BLOG 功夫网与翻墙 to GFW BLOG(功夫网与翻墙)|翻墙:goo.gl/q2Cqo at 10/07/2011 09:32:00 PM --
1、翻墙利器赛风3下载地址: http://dld.bz/caonima326 ,http://dld.bz/caonima745/
2、我们的订阅地址:http://feeds2.feedburner.com/chinagfwblog
3、停止订阅,请发邮件到
gfw-blog+unsubscribe@googlegroups.com
翻越防火长城,你可以到达世界上的每一个角落。(Across the Great Firewall, you can reach every corner in the world.)
没有评论:
发表评论