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

先来说说什么是热点认证系统,如果你有用过酒店或者机场的wifi,当你连上网络后试图去浏览某些页面的时候就会被从定向到一个特定的页面要求你登录啊什么的,是的,这就是热点登陆系统,可能也可以叫做wifi login portal。不过是什么,如果你理解了这概念,或者觉得有用,那么我们就来实际的搭建一下吧。
准备工作:
1、一个支持ddwrt的路由器,关于如何得到这个路由器以及那些是兼容的请上ddwrt官网自行搜索,个人比较推荐的是上tb买个二手的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/2015/01/19/ddwrt-wifidog.html 整理编辑,转载请注明出处

wifidog 配置,实现强制网关跳转

最开始想用openwrt,刷了一个,结果发现不会用,里面的配置太复杂了,被wan lan搞晕了,一直无法联网,因为在公司路由器本来就在一个局域网下,没办法请公司SA帮忙搞了下,也没有搞定,换DDWRT吧,这个可是有中文页面的,顿时亲了很多。

ddwrt确实方便很多了,不过一定要注意呀,因为我要用WIFIDOG,之前下了几个版本都没有wifidog的配置,好像可以自己装,没试过,因为最开始测试用的wiwiz,下载到路由器上以后,没法安装,最后直接下了dd-wrt.v24_nokaid_generic.bin这个版本的ddwrt,上面可以直接配置wifidog.org相当的方便。

wifidog认证服务用authpuppy.org,web服务配置(nginx)

if(!-e$request_filename){
    rewrite^(.*)/index.php last;
}

ddwrt=>services=>hotspot

gateway id这个很重要,认证服务需要这个

服务器路径一定要注意哈,加/,这个最开始老是不对,研究了很久。发现原来路径里面少了个/,导致无法访问到正确的认证接口,如果是路径的最后还要多加个/哦。亲

认证服务配置
nodes页面里面加一个node,默认会有一个的啦。定义gw_id 就是刚才ddwrt wifidog里面配置的那个。
然后去下载一个plugin,做验证的,apAuthLocalUserPlugin,就它了吧。安装以后里面可以配置,页面信息,注册等等。
现在客户端连接上你的WIFI,去测试下吧,应该可以了哦,亲。
下面说下自己开发wifidog服务接口的问题。
我只实现了4个接口地址,不晓得其他的还有那些哈。E文看的不是很懂,需要的自己可以看http://dev.wifidog.org/wiki/doc/developer/WiFiDogProtocol_V1

/login这个是连接的时候访问的登陆接口,登陆成功以后,返回一个302转向到http://gw_server:gw_port/wifidog/auth?token=xxx,你的token,这样子就可以了。至于是否需要用户名密码等登陆方法。看你自己咯。

/auth这个接口太重要了,之前各种没法验证的原因都是因为没有访问到这个,路由器在刚才拿到login的token之后,会再次访问这个接口,带上一些其他参数如ip/mac等,当然也包括token,服务器可以再次做验证,这个接口的重要是返回给路由器成功与否,结果如下:
Auth: Number
Number如下:
0-AUTH_DENIED
6-AUTH_VALIDATION_FAILED
1-AUTH_ALLOWED
5-AUTH_VALIDATION
-1-AUTH_ERROR
返回1是成功了。

/ping这个接口很简单,返回结果内容包含Pong字符串就可以了。
/port哦,这个还是有点重要的,是认证通过之后,路由器自动定向的页面,当然如果你需要返回到用户之前的页面,在/login接口的时候,路由器传入了一个url地址,那个是用户真的想访问的地址哈。

本文章由 http://www.wifidog.pro/2015/01/19/wifidog%E8%B7%B3%E8%BD%AC.html 整理编辑,转载请注明出处

wifidog认证有效时间

在wifidog的认证配置文件中,参加ClientTimeout是5,CheckInterval是60,是不是5分钟以后,再次使用网络的时候,会提示让我再次进行认证?事实上不是这样子的。

ClientTimeout 5 没有单位
CheckInterval 60 单位秒

检测客户端掉线时间 = CheckInterval x ClientTimeout ,是所说的5分钟,但是判断条件不是上述那样,是客户端不在线(走掉、或关闭wifi)后5分钟,wifidog认为该客户端掉线,就将其踢掉,该客户端再次连接时,是需要重新认证的!

如果是5分钟内不管客户端在不在线都踢掉,那要改变判断条件。

本文章由 http://www.wifidog.pro/2015/01/16/wifidog-%E6%9C%89%E6%95%88%E6%97%B6%E9%97%B4.html 整理编辑,转载请注明出处

wifidog-配置guest WLAN--part2

第四步b:对固件设置的不同修改
我创建了一些规则在guest SSID进行分离guest。我有一些只有WEP才能运行或无认证的设备。WEP与HT模式下在.11n运行的设备不同,所以唯一的选择是wide-open SSID。我也不太希望我的邻居偷用我的网络。此防火墙设置也只允许明确已知联接到互联网的MAC。
编辑/etc/config/firewall并添加新区域节段覆盖guest接口,允许SSH,DNS和DHCP guest。

[..]
# Enable logging
config 'zone'
option 'name' 'guest'
option 'network' 'guest'
option 'input' 'REJECT'
option 'forward' 'REJECT'
option 'output' 'ACCEPT'
# Quick rule to allow SSH in
config 'rule'
option 'name' 'Allow SSH in'
option 'src' 'guest'
option 'dest_port' '22'
option 'proto' 'tcp' o
ption 'target' 'ACCEPT'
# Allow DNS Guest -> Router
config 'rule'
option 'name' 'Allow DNS Queries'
option 'src' 'guest'
option 'dest_port' '53'
option 'proto' 'tcpudp'
option 'target' 'ACCEPT'
# Allow DHCP Guest -> Router
config 'rule'
option 'name' 'Allow DHCP request'
option 'src' 'guest'
option 'src_port' '67-68'
option 'dest_port' '67-68'
option 'proto' 'udp'
option 'target' 'ACCEPT'
# Allow only specific source MAC addresses out to the WAN
config 'rule'
option 'name' 'Allow my Nintendo DS'
option 'src' 'guest'
option 'dest' 'wan'
option 'proto' 'all'
option 'src_mac' '00:ab:00:32:00:00'
option 'target' 'ACCEPT'
# Drop broadcast traffic, it just fills the logs 
config 'rule'
option 'name' 'Drop guest broadcast'
option 'src' 'guest'
option 'dest_ip' '172.16.62.255'
option 'target' 'DROP'
# Another explicit deny at the end.
config 'rule'
option 'name' 'Deny guest -> WAN'
option 'src' 'guest'
option 'dest' 'wan'
option 'proto' 'all'
option 'target' 'REJECT'
[..]

本文章由 http://www.wifidog.pro/2015/01/16/wifidog-guest-wlan2.html 整理编辑,转载请注明出处