wifidog和authpuppy配合使用,实现wifi认证

通过在路由器系统(比如dd-wrt,openwrt)安装wifi看门狗程序wifidog,在认证服务器安装authpuppy wifi认证程序,可以实现类似在商场、机场、银行经常看到的免费wifi使之前看到的认证页面或产品、企业广告、介绍页面的功能。(wifidog 和 authpuppy 都是开源项目)

wifidog
官网地址:http://dev.wifidog.org/

authpuppy
官网地址:http://www.authpuppy.org

openwrt安装wifidog方法
http://wiki.openwrt.org/doc/howto/wireless.hotspot.wifidog?s[]=wifidog

linux安装authpuppy方法
可以看下这篇文章:
http://blog.csdn.net/sdvch/article/details/16350763
也可以在官网查看http://www.authpuppy.org

如果自己没有服务器搭建authpuppy认证程序,但是路由器是dd-wrt,openwrt系统可以通过安装wificat实现无线认证功能,可参考如下两篇文章
dd-wrt 安装wificat方法:http://bbs.pcpop.com/forum.php?mod=viewthread&tid=10646786
openwrt安装wificat方法:http://www.right.com.cn/forum/thread-141807-1-1.html

本文章由 http://www.wifidog.pro/2014/12/12/wifidog%E5%92%8Cauthpuppy.html 整理编辑,转载请注明出处

ddwrt+wifidog搭建热点认证系统(无线路由器web认证)

先来说说什么是热点认证系统,如果你有用过酒店或者机场的wifi,当你连上网络后试图去浏览某些页面的时候就会被从定向到一个特定的页面要求你登录啊什么的,是的,这就是热点登陆系统,可能也可以叫做wifi login portal。不管是什么,如果你理解了这概念,或者觉得有用,那么我们就来实际的搭建一下吧。

准备工作:
1、一个支持ddwrt的路由器,关于如何得到这个路由器以及那些是兼容的请上ddwrt官网自行搜索,个人比较推荐的是上淘宝买个二手的linksys wrt54g的路由器,一般这样的一个机器都有被改造过,扩充flash容量以便能安装完全版的ddwrt固件。所以下文将不会讲如何安装ddwrt固件,其实我只是自己也没安装过罢了。。

2、internet环境(其实不连应该也没什么关系,不过我没测试过)。首先有一点很重要的是,如果你把路由器只接个lan口当做交换机来用的话是无法成功的,所以这里我们必须在wan口上插根网线,并在设置里配置好二级路由,开启dhcp服务。

3、一台机器,通过lan口连接路由器,用来配置鉴权服务器。

准备完成后,举例配置如下:
ddwrt路由器 ip:192.168.11.1
鉴权服务器ip:192.168.11.128
就可以进行配置了。先配置服务器吧,wifidog官网上说使用了新的验证服务器authpuppy,于是就下载之,之后如果你想省去麻烦的php和mysql等等配置工作,建议直接使用xampp。
然后把解压的文件夹authpuppy扔到xampp默认的访问目录htdocs下,修改authpuppy部分目录的权限(详细的参看官网设置,这里就整个目录777了)。

开打浏览器输入localhost/authpuppy/web/后来到安装页面,根据要求安装就是了,这部应该没什么问题,需要你建立数据库就按照要求建个就是了,用户名则可以随便分配。
安装完之后用新建的管理员账号登陆,选择manage node,新建一个node,注意这里有个GW ID的设置,随便设个,但必须在路由器端的wifidog设置中也使用这个id,不然无法进行认证。到此为止鉴权服务器的简单功能应该算是配置完成了,之后加入复杂的功能等等则可以通过官网提供的插件和api或者自己看源码理解,可能我下次会说到,这里就不提了。

接着是路由器的配置,点开"服务"标签,二级标签选"热点",在里面会看到被禁用的狗狗,开启之,依下设置(图片稍后奉上):
网管ID,就是前面服务器设的那个GW ID
服务器名,随意了
下面一些默认不要动
鉴权服务器主机名,安装authpuppy服务器的ip地址192.168.11.128
SSL服务禁用
端口,还是看你服务器的配置,默认是80。
鉴权服务器路径,/authpuppy/web/
填写完成后按应用就可以了。这时候你可以登录到路由器上的wifidog看看dog是否正常工作。在浏览器中输入:192.168.11.1:2060/wifidog/status
状态如图(继续稍后。。。)就说明成功了,不过此时还有一部非常重要的事要做,那就是进入路由器管理菜单,重启路由器,之前一直由于这个原因搞了我很久。

测试,随便找个带wifi的电脑或手机,连上我们设的热点后,任意访问个页面,此时如果页面成功跳转了那么便大功告成,没有的话检测看看原因,一般如果wifidog状态正常的话是不会出问题的。
over~其实配置起来还是蛮简单的,关键还是在于后续的开发和管理上面。

本文章由 http://www.wifidog.pro/2014/12/12/ddwrt-wifidog%E8%AE%A4%E8%AF%81%E7%83%AD%E7%82%B9.html 整理编辑,转载请注明出处

编写自己的WifiDog认证服务器

使用的是php来编写auth_server服务器,因为这样比较简单。
1· 首先是login.php:
路由器协议:gw_address=%s&gw_port=%d&gw_id=%s&url=%s
gw_id 我这里使用的是路由器的MAC

<?php  
    include './tool/MySQLHelper.php';  
    if (!empty($_GET["gw_id"])){  
        $result = selectMacByToken($_GET["gw_id"]);  
        if (!empty($result)){  
            header("location: http://192.168.1.1:2060/wifidog/auth?token=".$result);  
        }  
        else {  
            header("location: http://xxxxx/WelcomePage.php?mac=".$_GET["gw_id"]);  
        }  
    }  
    else {  
        header("location: http://xxxxx/WelcomePage.php?mac=".$_GET["mac"]);  
   }  
?> 

2· 然后是 ping.php:
路由协议:http://auth_sever/ping/?gw_id=%s&sys_uptime=%lu&sys_memfree=%u&sys_load=%.2f&wifidog_uptime=%lu
这里没有做额外的处理,只是简单地向wifidog回应一个Pong

<?php
    echo "Pong";
?>

3· 接着是 auth.php:
路由协议:http://auth_server/auth/?stage=%s&ip=%s&mac=%s&token=%s&incoming=%s&outgoing=%s
这里根据一些参数来获取$result,从而决定是否允许认证

<?php
    if ($_GET["token"] == "123"){
         echo "Auth: 1";
        return;
    }

    if (!empty($_GET["token"]) && isset($_GET["token"])){
        isValidate($result);
        return;
    }
    else if((!empty ($_GET["mac"])) && isset($_GET["mac"])){
        $result = isSubscribeByMac($_GET["mac"]);
        isValidate($result);
        return;
    }
    else
    {
        echo "Auth: 0";
    }
    function isValidate($result){
        if ($result == 1){
            echo "Auth: 1";
        }
        else {
            echo "Auth: 0";
        }
    }
?>

本文章由 http://www.wifidog.pro/2014/12/11/WifiDog%E8%AE%A4%E8%AF%81%E6%9C%8D%E5%8A%A1%E5%99%A8.html 整理编辑,转载请注明出处

wifidog+authpuppy搭建web认证系统

authpuppy的安装配置可参考http://www.authpuppy.org/doc/Getting_Started, 除了部分细节,基本可完全按其成功配置。
同时需要安装mysql(数据库)和 Apache(http server).

附wifidog配置wifidog.conf:

GatewayID default
ExternalInterface pppoe-wan
GatewayInterface br-lan
AuthServer {
  Hostname 192.168.1.111
  HTTPPort 80
  Path /authpuppy/web/
}
HTTPDMaxConn 100
ClientTimeout 10
FirewallRuleSet global {
  FirewallRule allow to 123.150.205.139 #S
  FirewallRule allow to 125.39.111.239 #S
  FirewallRule allow to 42.121.98.148 #S
  FirewallRule allow to 74.117.62.156 #S
  FirewallRule allow to 74.117.62.157 #S
  FirewallRule allow to 8.8.8.8 #S
}
FirewallRuleSet validating-users {
  FirewallRule allow to 0.0.0.0/0
}
FirewallRuleSet known-users {
  FirewallRule allow to 0.0.0.0/0
}
FirewallRuleSet unknown-users {
  FirewallRule allow udp port 53
  FirewallRule allow tcp port 53
  FirewallRule allow udp port 67
  FirewallRule allow tcp port 67
  FirewallRule block udp port 8000
}

wifidog.conf字段的含义可参考http://dev.wifidog.org/browser/trunk/wifidog/wifidog.conf

本文章由 http://www.wifidog.pro/2014/12/11/wifidog-authpuppy-1.html 整理编辑,转载请注明出处