注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

_

_

 
 
 

日志

 
 

wifidog配置文件详解  

2015-01-25 06:02:01|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

wifidog配置文件详解

(2014-09-08 20:39:24)

wifidog配置文件详解 - redtea - _转载?

标签:

it

Wifidog的配置文件/etc/wifidog.conf,关键的配置项是:

AuthServer {

Hostname? (Mandatory; Default: NONE)

SSLAvailable? (Optional; Default: no; Possible values: yes, no)

SSLPort? (Optional; Default: 443)

HTTPPort? (Optional; Default: 80)

Path? (Optional; Default: /wifidog/ Note:? The path must be both prefixed and suffixed by /.? Use a single / for server root.)

LoginScriptPathFragment? (Optional; Default: login/? Note:? This is the script the user will be sent to for login.)

PortalScriptPathFragment (Optional; Default: portal/? Note:? This is the script the user will be sent to after a successfull login.)

MsgScriptPathFragment? (Optional; Default: gw_message.php? Note:? This is the script the user will be sent to upon error to read a readable message.)

PingScriptPathFragment? (Optional; Default: ping/? Note:? This is the script the user will be sent to upon error to read a readable message.)

AuthScriptPathFragment? (Optional; Default: auth/? Note:? This is the script the user will be sent to upon error to read a readable message.)

}

# Listen on this port

GatewayPort 2060

# Parameter: CheckInterval

# Default: 60

# Optional

#

# How many seconds should we wait between timeout checks.? This is also

# how often the gateway will ping the auth server and how often it will

# update the traffic counters on the auth server.? Setting this too low

# wastes bandwidth, setting this too high will cause the gateway to take

# a long time to switch to it’s backup auth server(s).

CheckInterval 60

# Parameter: ClientTimeout

# Default: 5

# Optional

#

# Set this to the desired of number of CheckInterval of inactivity before a client is logged out

# The timeout will be INTERVAL * TIMEOUT

ClientTimeout 5

AuthServer是Portal服务器的配置项;GatewayPort是Wifidog监听的地址,默认是2060,一般保持默认即可;CheckInterval是心跳时长,单位是秒,什么是心跳呢,客户端认证成功之后,如果有网络访问动作,Wifidog getway就会每隔一段时间访问Portal服务器的一个脚本,用于认证计费,当然,如果客户使用超时或超流量,也可以通过心跳强制客户端下线。ClientTimeout是用户一次认证成功后的网络访问时长,超过这个时间需要重新认证,这个时长并非由ClientTimeout单独决定,取决于INTERVAL * TIMEOUT。详细的配置信息可以访问:http://dev.wifidog.org/browser/trunk/wifidog/wifidog.conf

我们重点讨论Portal服务器的配置项,Hostname是Portal服务器的ip或者是域名,SSLAvailable和SSLPort是SSL加密配置,如果你的Portal服务器有配置HTTPS加密,则需要配置这两项;Path是指你的脚本路径(举例,http://a.com/to/,则a.com是域名,/to/是路径),注意路径必须以“/”开头和结尾,如果是根路径,则填一个“/”即可;接下来的5个配置指明你的脚本名,这说明了我们需要写五个脚本,我会详细说明。(以下文中涉及的“第几步”均是指Wifidog认证过程的步骤)

LoginScriptPathFragment配置项配置的是登陆脚本,它通过GET方式接受传入参数gw_address、gw_port、gw_id、mac和url,gw_address是AP Getway的ip地址;gw_port是Wifidog监听的端口,即上面介绍的wifidog.conf中的GatewayPort配置;gw_id是AP Getway的id,配置文件wifidog.conf中可以配置,默认值是default,这个值的作用是当存在多个AP是,服务器或管理员可以根据不同的id确定用户的接入点;mac是客户计算机的网卡物理地址,注意不是AP网关的mac,这个mac是用来识别客户计算机的;url是客户初始访问的Url,这些Querystring都是AP Getway向客户端发出重定向请求自动生成的。这个脚本同时需要提供登陆页面,如果登陆成功,需要向客户;端返回302重定向,重定向到:http://gw_address:gw_port/wifidog/auth?token=[token];即实现第7步,其中[token]是你自己自动生成的token字符串,随机生成一个字符串即可,但是长度最好长些,安全性更高,另外,token需要根据不同用户保存,最好保存于数据库中,之后的AP Getway询问token有效性(第9步)还需要用到。这里最好使用cookie或session,使之后的登陆成功页面可以判断用户已经成功,阻止未登录成功的人访问认证成功页面。

PortalScriptPathFragment配置项配置的是登陆成功后服务器展示的脚本(第11步),它通过GET方式接受1个传入参数,gw_id,这个脚本比较简单,告知用户登陆成功即可,当然,最好重定向到用户之前想要方位的url,即第1步用户输入的URL。

MsgScriptPathFragment配置项配置的是错误信息展示脚本,它通过GET方式接受一个传入参数message,这个脚本也很简单,展示message的内容即可,目的是当认证过程出现错误,AP Getway会重定向到这个脚本,URL中含有错误的信息。

PingScriptPathFragment配置项配置的是心跳脚本,这个脚本它通过GET方式接受5个传入参数,gw_id,sys.uptime,sys.memfree,sys.load,wifidog.uptime,其中,sys.uptime指的是AP Getway的启动时间,sys.memfree指的是AP Getway的空闲内存,sys.load指的是AP Getway的CPU负载,wifidog.uptime指的是wifidog的启动时间,这个脚本每隔一段时间(Wifidog.conf里配置的CheckInterval),Wifidog会自动访问,但是其目的不是用户验证,而是帮助管理员管理AP节点,了解AP节点的负载情况,适时增加节点等,Wifidog访问这个脚本时,需要这个脚本返回Pong,如果你没有统计AP节点负载数据的需求,可以丢弃这些数据,直接回应Pong,注意,这个回应只包含“Pong”字符串,无需包含其他html标签。

AuthScriptPathFragment是用户认证脚本,实现的是第10步的功能,这个脚本它通过GET方式接受7个传入参数:stage、ip、mac、token、incoming、outcoming和gw_id。其中stage的值是login,ip是客户端的ip,注意不是AP Getwap的ip;mac是客户端的网卡物理地址,token就是你在认证脚本生成并返回给客户端的;incoming和outcoming用于流量控制,默认值为0;gw_id同上。如何识别用户登录成功,通过mac和token吧,LoginScriptPathFragment登陆脚本在用户登陆成功后需要记录用户的mac和token,然后在此处验证,如果匹配,回复Auth: 1,否则,回复Auth: 0。另外,这个脚本也是心跳脚本,每隔一段时间Wifidog会自动访问,如果用户使用时间超过限制或流量超过额度,服务器可以及时回应Auth: 0结束用户的访问。另外需要注意的是,回应同样无需包含html标签,另外,在Auth后的冒号和0/1之间,有一个空格,缺少这个空格也会导致出错。

在配置Wifidog的配置文件wifidog.conf是,配置脚本的配置项都必须以“?”结尾,否则以GET方式传递的QueryString会因Url缺少问号访问错误的脚本。

看到了吧,仅仅5个简单脚本,就可以实现利用Wifidog的Portal认证,当然,这过中还可以有很多应用尚未发掘,比如流量控制、带宽控制、结合Radius服务器实现认证等,你的开发也可以更上一层楼,实现更多功能。不过笔者还有一个建议,在登录页面除了用户名和密码意外,最好加个验证码,防止不怀好意之人暴力破解。

这样,你只需要一个免费的空间,甚至是简单的百度云、新浪SAE等,就可以实现一个认证服务器;有的人可能还会问,能不能把这些脚本集成到路由器当中,我的回答是能,只要你的脚本的功能不多,问题应该不大,但是这么做的风险比较大,路由的负载比较高,导致路由的运行会很不稳定,甚至经常死机,这也是笔者亲身实践的结果,所以笔者不建议这么做。

最后?嗦提醒的是,WiFidog是使用iptables基于三层协议工作的,所以使用Wifidog的结果是,不仅是Wifi接入需要Portal认证,有线接入同样需要认证。避免这种情况最简单的做法是设立mac白名单。可能有的人又会问,能不能做到仅是Wifi接入需要认证,有线接入的无需认证,有的人可能想更上一层楼,能不能开两个Wifi,仅其中一个Wifi需要认证,另一个Wifi和有线网络不需要Portal认证,我的回答是能,至于具体做法,以后再介绍。

  评论这张
 
阅读(546)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017