工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.51099.com 注册 | 登陆
浏览模式: 标准 | 列表2008年05月的文章

游戏代理VPN

游戏代理VPN

软件:pptp+radius+mysql
平台:linux,可以是各发行版,内核最好是2.6以上的
我的测试平台是RHEL5 beta1,内核 2.6.18-1.2747.el5xen
这个版本有个好处,就是内核已支持MPPE,不用再安装

首先要确定内核是否支持mppe
方法: modprobe ppp-compress-18 && echo ok
如果显示ok,即表示内核已具备了mppe支持

如不支持,需要升级内核以支持mppe
软件下载 http://sourceforge.net/project/showfiles.php?group_id=44827
下载2个rpm包。
dkms-2.0.10-1.noarch.rpm
kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm
dkms是一个新的软件,能让你在不编译内核的基础上,外挂一些内核的模块。
kernel_ppp_mppe就是mppe支持的内核模块
OK后最好重起下你的系统

安装pppd
也可以在上面的地址下载,但只可以下载RPM包,最高版本为 ppp-2.4.3-5.rhel4.i386.rpm,也有FC的
源码下载可以到 http://samba.org/ppp/download.html,最新版本为 ppp-2.4.4b1.tar.gz
最新版已支持 mppe,不用再打补丁
如不支持,可以到此下载 http://mppe-mppc.alphacron.de/#AEN56,包括ppp和内核补丁
检查pppd是否支持mppe
[root@localhost]# strings `which pppd`|grep -i mppe|wc --lines
42
结果大于36,即表示支持
解压安装
tar -zxvf ...
configure,make,make install
用 make install-etcppp 来安装范例配置文件

安装pptpd
下载 http://sourceforge.net/project/showfiles.php?group_id=44827
最新版本,源码包的是 pptpd-1.3.4.tar.gz
RPM包的是 pptpd-1.3.3-1.rhel4.i386.rpm,FC6
解压安装 tar -zxvf ...
configure,make,make install

配置
pppd 的配置文件 /etc/ppp
pptpd 的配置文件 /etc/pptpd.conf
在pptpd.conf
localip 10.10.10.1
remoteip 10.10.110.2-100
localip是pptpd的对外服务的ip,也就是客户端需要拨号的ip
remoteip是拨号服务器分配给拨号用户的ip ,可以用-表示ip范围

添加测试用户 /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
test pptpd test *

认证方式设置 /etc/ppp/options.pp
默认就可以用,如果不mppe,或是不用加密,可以在此文件设置


为方便测试,请打开debug和dump调试,并查看/var/log/messages 文件

启动pptpd后,就可以在XP建立连接测试了

以上一个简单的VPN就完成了.

 

结合radius

软件下载 http://www.freeradius.org
当前最新版本为 freeradius-server-2.0.4.tar.bz2
但与1.X的配置方式上,有比较大的区别.
我开始是用2.X测试的,但没成功,最后用了1.X的.有空再研究2.X的.

解压安装
tar -zxvf ...,configure,make,make install

配置
从pppd的源码目录把下面这个目录复制到/etc/radiusclient/
cp -R ppp-2.4.4b1/pppd/plugins/radius/etc  /etc/radiusclient/

修改 options.pptpd
在最后加入
plugin /usr/local/lib/pppd/2.4.4b1/radius.so

配置 /etc/radiusclient中的servers和radiusclient.conf
在servers中,你需要增加一个radiusd的地址和密码
localhost       vpn
这里localhost表示你的radiusd就在本机,并且访问的密码是vpn

在radiusclient.conf中 加入
authserver      localhost:1812
acctserver      localhost:1813
确认上面也是本地的,默认就是本地,所以一般不需要修改。
同时确保这个文件中radiusclient相关的路径所有的路径都是 /etc/radiusclient 开头的。

配置freeradius
在 freeradius/etc/raddb 下
修改clients.conf
这里说明一下,所有的nas都是radiusd的client,nas就是那个pptpd,所以这个文件就是配置pptpd的登陆权限的。
client 127.0.0.1      {
                        secret = vpn
                        shortname = mm
                        nastype     = other
                        }

修改127.0.0.1部分为上面的样子。secret就是我们刚才在/etc/radiusclient中servers里设置的那个。这两个要一致

在users文件的最上面加入一个用户
ww Auth-Type:= MS-CHAP, User-Password=="ww", Simultaneous-Use:=1
          Service-Type = Framed-User,
          Framed-Protocol = PPP,
          Framed-IP-Address = 255.255.255.254,
          Framed-IP-Netmask = 255.255.255.0

说明一下 ww是用户名
auth-type是验证的类型
第二个ww是密码
Simultaneous-Use是允许这个用户名同时登陆的个数

所有这些都是check属性,要写在第一行
然后第二行开始用tab开头,是服务器返回给radius客户端的(也就是返回给pptpd)时reply属性。
其中ip地址设置为255.255

用debug模式运行radiusd
sbin/radiusd -x

测试,在XP建个VPN连接,用户密码均为 ww

 

结合mysql
mysql安装略过.
建立一个radius数据库,把结构导入即可
库结构文件在 freeradius16/share/doc/freeradius/examples/mysql.sql
配置sql.conf 在安装目录下的etc/raddb
修改sql.conf的连接信息
        # Connect info
        server = "192.168.8.53"
        login = "radius"
        password = "radius"

        # Database table configuration
        radius_db = "radius"

去掉下面的simul。。。。前面的#
打开sql的用户同时连接数测试的语句
        # Uncomment simul_count_query to enable simultaneous use checking
         simul_count_query = "SELECT COUNT(*) FROM ${acct_table1} WHERE UserName='%{SQL-User-Name}' AND AcctStopTime = 0"


配置radiusd.conf

注释掉 authorize {
的files
去掉sql前的注释

注释掉 preacct {
的files

注释掉 accounting {
的radutmp
去掉sql前面的#

注释掉 session{
的radutmp
去掉sql前面的#

去掉 post-auth {
sql前的#

总之就是去掉files模块,开启sql模块


在数据库中添加用户
在usergroup中添加一个test用户,组名为vpn
在radgroupcheck中添加一个vpn组,
attribute为Simultaneous-Use
op为:=
value为1
的纪录

在radcheck中添加
username为test
attribute为 User-Password
op为==
value为test

这样就添加了一个用户为test,组为vpn,密码为test
并且所有的组用户的都只能1个用户名登陆一次

测试
用debug模式启动radiusd

TC流量控制

控制整个网段

tc qdisc add dev eth0 root handle 1: htb r2q 1
tc class add dev eth0 parent 1: classid 1:1 htb rate 10kbit burst 10k
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 10.10.10.0/8 flowid 1:1

freeradius117

gmake[6]: Leaving directory `/usr/src/freeradius-1.1.7/src/modules/rlm_sqlcounter'
Making install in rlm_sqlippool...
gmake[6]: Entering directory `/usr/src/freeradius-1.1.7/src/modules/rlm_sqlippool'
if [ "xrlm_sqlippool" != "x" ]; then \
            /usr/src/freeradius-1.1.7/libtool --mode=install /usr/src/freeradius-1.1.7/install-sh -c -c \
                rlm_sqlippool.la /usr/local/freeradius1/lib/rlm_sqlippool.la || exit $?; \
            rm -f /usr/local/freeradius1/lib/rlm_sqlippool-1.1.7.la; \
            ln -s rlm_sqlippool.la /usr/local/freeradius1/lib/rlm_sqlippool-1.1.7.la || exit $?; \
        fi
libtool: install: `rlm_sqlippool.la' is not a valid libtool archive
Try `libtool --help --mode=install' for more information.
gmake[6]: *** [install] Error 1
gmake[6]: Leaving directory `/usr/src/freeradius-1.1.7/src/modules/rlm_sqlippool'
gmake[5]: *** [common] Error 2
gmake[5]: Leaving directory `/usr/src/freeradius-1.1.7/src/modules'
gmake[4]: *** [install] Error 2
gmake[4]: Leaving directory `/usr/src/freeradius-1.1.7/src/modules'
gmake[3]: *** [common] Error 2
gmake[3]: Leaving directory `/usr/src/freeradius-1.1.7/src'
gmake[2]: *** [install] Error 2
gmake[2]: Leaving directory `/usr/src/freeradius-1.1.7/src'
gmake[1]: *** [common] Error 2
gmake[1]: Leaving directory `/usr/src/freeradius-1.1.7'
make: *** [install] Error 2

快速安装 Pear

Pear 是 PHP 的类库集合,用 tarbal 安装 php 后不一定安装 pear ,这里介绍一个简单快速的办法安装 pear。

lynx -source http://pear.php.net/go-pear | php -q

安装完毕后用 pear -V 命令显示:

PEAR Version: 1.4.9
PHP Version: 4.4.2
Zend Engine Version: 1.3.0
Running on: SunOS hostname 5.10 Generic i86pc


pear install --alldeps channel://pear.php.net/Image_Graph-0.7.2

这样的格式可以安装所需要的包了。

ARA

ARA

Welcome in Asn Radius Admin (ARA) v. 0.6!

 

http://projects.asn.pl/ara/

 
 

ARA (ASN RADIUS admin) is a simple but powerful web interface for managing the great FreeRADIUS server. It allows you to:

  • manage users, groups and Network Access Servers,
  • view online users,
  • view reports on bandwidth usage for each user and NAS,
  • monitor unsuccessful network logins,
  • quickly lookup your users,
  • and much more!

ARA is a PHP web application operating on the storage backend of FreeRADIUS (currently only MySQL is supported).

 
 
 
 
  • ezRADIUS license is GPL.
  • I created this apps inspired by daloRADIUS.
  • ezRADIUS logo is created using The GIMP
  • ezRADIUS is made in Indonesia, created using Dreamwever 8 under Debian GNU/Linux 4.0
  • I'm using Flat-File-Database, a PHP library by John Papandriopoulos
  • You're using ezRADIUS version 0.2.1
  • patch

    patch -p0 <  /download/patch-2.6.10-bk4 或
    patch -p0  -i /download/patch-2.6.10-bk4 
    我认为这样才是真的在做patch
    patch -R //对new和old文件通通应用patch
          -N //忽略反向的或已经应用的补丁
          -f  //不回答[y/n],假定不选择-R
          -t //不回答[y/n],假定选择-R
    例:让它自动完成patch -tp0 < patch-file 
    bzip2 -dc /download/patch-2.6.10-bk4.bz2 |patch -p1
    一次打多个,
    bzip2 -dc /download/patch-*.bz2 |patch -p1
    但要求patch-*.bz2的字母排列顺序和补丁顺序是一样的.

    patch -d dietlibc-0.27 -p1 < dietlibc-0.27-signal.patch

     

    ppp-2.4.3
    patch -p0 -i ppp-2.4.3-mppe-mppc-1.1.patch.gz

     

     

    ppp faq

    691
    用户名错误
    619
    协议或加密方式设置错误

    确定你的内核是否支持mppe
    modprobe ppp-compress-18 && echo ok
    如果显示ok,那么恭喜,你的内核已经具备了mppe支持


    检验PPP是否支持MPPE/MPPC
    [code]
    [root@localhost]# strings `which pppd`|grep -i mppe|wc --lines
    30
    [root@localhost]# strings `which pppd`|grep -i mppc|wc --lines
    7

    updatedb
    locate ppp|grep bin

    mppe/mppc down
    http://mppe-mppc.alphacron.de/#AEN56

    ppp down
    ftp://ftp.samba.org/pub/ppp/

    Q:The remote system is required to authenticate itself
    May 28 16:55:06 rhel4 pppd[2994]: but I couldn't find any suitable secret (password) for it to use to do so.
    A:options.pptpd 里的 name 设置与 chap-secrets 不符