分类 wifidog openwrt 下的文章

Wifidog_FAQ--part2【网关,认证服务器】

网关常见问题:
关于Wifidog网关的问题

问:我的客户端在1到5分钟后会断开链接
答:跟其它解决方法不同,Wifidog无需一直打开认证页面用脚本来保持连接。网关只会在数秒中没有获得任何来自客户端的流量时,才判断为超时断开连接。确保客户端没有因为闲置而超时,网关将会在每个时间间隔来重新ping每个客户端来检测流量。遗憾的是,有些所谓防火墙设置很讨厌,防ping,造成检测时完全丢包被误判为离线。这也是经常超时的原因。

问:运行网关的要求是什么?
答:网关的要求是:
1) Linux的操作系统
2) Linux内核当中编译了netfilter 及iptables
3) IP信息包过滤系统
也可以视情况而定的进行宽带限制:
1) iproute2,特别是tc
问:我如何安装?
答:Wifidog跟其它开源项目一样,使用标准的自动化工具,使得安装更加便捷。打开TAR包获取来自SVN的最新资源,然后按以下步骤:
./autogen.sh
make
make install

如果你没有用make install来安装,二进制文件会保存在src/wifidgo。

问:我如何在Linksys WRT54G家庭路由器安装它?
答:如果你不习惯使用Linux并且不知道如何编辑这些问题,你可以使用别人编辑的OpenWRT和Wifidog。他们肯定会为你的特殊版本的OpenWRT编译。注意的是开源版本的IPK包或者由你自己的资源建立的,都是我们唯一提供服务的包。如果你使用了由其它组织发布的包,你必须向他们寻求服务。
1) 下载一个重新编辑的OpenWRT固件镜像
2) 通过路由器的网络接口安装固件镜像。
3) 重点:在你安装Wifidog之前,确保连接在你OpenWRT路由器的客户端能够正确的使用网络
4) 下载一个官方由Wifidog项目建立的.IPK文件。
5) 安装Wifidog
6) 按照文件的说明操作,一切将不言自明。

问:我可以登录,但当我点击开始按钮时,我被返回到登录界面
答:确保ipt_mac.o核心模块和ipt_mark核心模块已加载完毕。这些是IP信息包过滤系统的可选部分,经常被默认设置否认。在大多数Linux发布中,核心模块被配置在"/etc/modules.conf" or "/etc/modules".
认证服务器常见问题
Wifidog认证服务器相关问题

问:运行认证服务器的要求是什么?
答:1)网络服务器:Apache,IIS
2) 拥有PHP5模块的网络服务器
3) PostgreSQL >= 8.0
根据不同的特性,你需要:
1) 为RSS支持,扩大PHP DOM。
2) 为RADIUS认证支持,PEAR Radius。
3) 为网络相薄的内容,Phlick API。

问:我可以用MySQL代替PostgreSQL吗?
答:不可以。不考虑支持MySQL。要做到支持两者并要保证质量,是非常有压力的。这不是你的简单的互联网应用或者CMS。如果你想了解更多,在邮箱列单里有长篇文档。

问:CMS太复杂了,我想将HTML代码加到门户网页。
答:我们意识到我们需要提供一个更好的文档。然而这个问题的答案很简单。你只要简单的使用“TrivialLangstring”目录,在文本框里加入一些HTML代码,并将这目录与门户网页绑定在一起就可以了。

问:我可以用XML格式提取热点状态数据吗?
答:可以,可以输出XML格式的热点状态数据列表。事实上,谷歌地图整合Wifidog部分就是依赖这一特性。Ile Sans Fil也在他的主页面上使用XSL样式表来创建特定格式的展示。

问:我的认证服务器之前特别快,但现在越来越慢,甚至无加载
答:你需要
1) 建个脚本,经常运行一下VACUUM ANALYZE(清理数据库表垃圾空间并优化查询)
2) 确保上诉脚本能正常运行
3) 如果发现你的认证服务器逐渐变慢,动行一次VACUUM FULL ANALYZE,然后进入第二步
注解:如果你有规律的运行VACUUM ANALYZE,那么你就不需要VACUUM FULL ANALYZE。然而如果你很长时间没有运行VACUUM ANALYZE了,那么你需要运行一次VACUUM FULL ANALYZE.
问题在于没有进行资料移除处理,那么联接和节点表格会逐渐增加。简单的数据移除不会收回被旧元组占用的空间,只是使他们能够被重新利用。如果你长时间没有运行VACUUM,你可能会有大量一天内无法用完的空余元组。VACUUM FULL ANALYZE弥补了这点。你必须每处理20M时运行一次VACUUM,这样可以避免XID产生更多信息。
选择性的运性周期性VACUUM,可以使autovacuum daemon在近期的PostgreSQL版本中得以实现。那时当数据库符合要求,PostgreSQL将自动移除此数据库。

问:认证页上有错误信息出现
答:检查认证服务器上显示的常见警告错误信息。

问:法语和日语字出现乱码
答:确认config.php有合适的设置区域。你也可能需要去规定Apache的字符集,把这行加入到你的httpd.conf:
AddDefaultCharset UTF-8

问:我的服务器不能发送邮件
或者会得到下列错误提示
1 PHPMailer无法发送邮件。错误是:不能实例化mail函数
答:默认状态下,wifidog是通过PHPMailer来使用PHP 的mail()函数的。这信息是实际上是错误的。它是想说呼叫PHP的 mail()函数失败,大概是因为你的系统里没有安装邮件客户端。你也可以:
1) 安装一个,并且确保他能够成功发送邮件
2) 将wifidog/config.php改换成SMTP服务器来代替mail()
3) 有时PHP能够用mail()来发送邮件但仍无效

本文章由http://www.wifidog.pro/2014/12/26/wifidog-%E6%95%99%E7%A8%8B.html整理编辑,转载请注明出处

Wifidog_FAQ-part1

一般常见问题

关于Wifidog 强制网络门户的一般问题

问:Wifidog 是什么?
答:Wifidog 是用来创建无线热点的软件。它是替代NoCat 的下一代产品。如果想了解更多相关细节和历史,请浏览Wifidog 主页。

问:谁开发了Wifidog?
答:ile Sans Fil 技术团队创建了Wifidog 项目。有一些人仍然参与其中,并且有来自世界各地的成员加入。

问:谁可以使用Wifidog?
答:在获得合法许可的前提下,任何人都可以使用Wifidog。这是一个GPL软件。实际上,我们都喜欢得到的答案是面向“每个人”,然而这是不现实的。Wifidog的主要目标用户是网络管理员,热点管理员和“知道他们在做什么的”黑客。可能产生的情况是一般终端用户不会受益,或者能够正确地设置和持续管理Wifidog安装。如果此软件曾得到一次完整的指向-点击缓解,使我们感觉到普通使用者能够进行安全管理,那么我们会将文件升级。

问:它能做什么?
答:1)强制网络门户可以使热点拥有者与使用者之间进行交流。
2)Wifidog网关是为GNU/Linux服务器和嵌入式linux设备而设计。例如:拥有OpenWRT的Linksys WRT54G。
3)支持多语种检索(通过浏览器检测或用户选择),能够使用PO Eeditor增加更多语种
4)通过Ping命令来检测网络活动用以维持用户(热点用户)联络,以此取代不科学的javascript脚本检测方式。这使得掌上电脑,手机和其它没有javascript 服务的设备可以进行联接。
5)可以为不同种类的热点提供服务
6)用户可以直接从任何热点建立一个工作帐号。新用户可以从任何热点进行登录,建立他们的帐号,并且允许确认邮件15分钟。如果他们不进行操作,他们将被断开联接并必须重新注册。
7)热点使用“双向心跳包”监测,所以中央服务器可以了解哪个热点/节点在线,不依赖动态DNS和防火墙等等。
8)可以生成自动节点。

问:它由什么组成?
答:它由两部分组成:
1) 客户端是守护进程,它安装于每一个无线路由器
2) 认证服务器是网络应用,它可安装于管理中心

问:它与NoCat之间有哪些不同?
答:它的客户端更小,没有过多对其他软件包的依赖,并且在嵌入式设备中运行良好。在认证服务器方面,可制定性更高,适合建设热点门户和社区。

问:它是如何运作的?
答:客户端守护进程通过防火墙规则来控制路由器的流量。当一个新用户试图打开一个网页,客户端将透明地将他们重定向至认证服务器以便登录或注册新用户。客户端和认证服务器将协商如何处理该上网用户和是否允许其访问网络。客户端每X分钟就向认证服务器发起请求,以便对其进行动态统计及资料更新,内容包括:正常运行时间,负载,上网用户的流量监测以及在/离线状态。

问:它是如何运行的?
答:客户端可在任何Linux机器中运行,但机器中需安装netfilter 以及iptables 。认证服务器运行于任何支持PHP的web服务器。

问:我可以在同一个Linux box中安装并运行Wifidog认证服务器和Wifidog网关吗?
答:可以。

问:如果要使用Wifidog,我的系统必须要有无线网卡吗?还是只要有个无线路由器就可以?
答:在网关运行的机器不需要无线网卡,但是对于每个无线客户端,Wifidog被设置在入口,网关必须被链接在第二层到以太网关接口处。实际上,无线路由器必须被用作是纯粹的接入点,只有将LAN端口(不是WAN端口)和在网关运行的机器的接口相联接才能实现。

问:我需要使用无线接入点吗?如果不使用无线接入点,我可以使用Wifidog无线路由器吗?
答:一些无线路由器做nat,这种情况会使从无线路由器中获取的MAC地址将客户端的MAC地址进行替换。如果产生这种问题,Wifidog的身份验证将失效,因为它依赖MAC地址去允许/不允许进入。

问:我可以写自己的客户端吗?
答:当然可以,但是为什么呢?我们已经完成了所有的工作。客户端已经用C语言写好,并且足够轻量级,这使得它在像Linksys WRT54G这样的嵌入式环境中都可以平稳运行。这个客户端是久经测试的,并且相当的稳定。它已被广泛用于ile Sans Fil部属的热点中。

问:我可以写自己的认证服务器吗?
答:重申一次,我们已经完成了所有的工作。但是如果你觉得我们所提供的不适合你的需求,并且你希望从头开始写你自己的服务器,整个系统中的客户端必须使用同一种协议。

问:Wifidog的界面是什么样的?
答:客户端是在后台运行的守护进程。没有终端用户所关注的立即可视的用户界面,但它可以为管理员提供一个简单的命令行和基于网络的界面来查询状态。

问:我可以从哪里获取帮助?
答:如果你需要获取关于Wifidog安装的技术支持,你的信息需包括:
1) 你的Wifidog客户端的版本(ipk 或者你自己编辑的版本)
2) 配置安装(请删除默认配置)
3) Wifidog除错输出信息(命令:Wifidog-f-d 7)

问:我可以使用Wifidog在运行无身份验证的热点运行吗?
答:可以,只要将每个无身份验证的热点在网络设置页面中激活便可。

问:我可以只运行Wifidog网关吗(没有认证服务器)?
答:不可以,这不是Wifidog设计的初衷。你可以试试NoCatSplash,它是为此而设计的。

问:Wifidog支持RADIUS,WISP或者WPA吗?
答:目前Wifidog支持RADIUS用户认证和流量统计。

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

OpenWRT-Wifidog之利用Luci认证

上一篇文章:OpenWRT下实现Portal认证(WEB认证) 我介绍了OpenWRT环境下实现Wifidog认证的办法,文末我曾经写道“有的人可能还会问,能不能把这些脚本集成到路由器当中,我的回答是能,只要你的脚本的功能不多,问题应该不大,但是这么做的风险比较大,路由的负载比较高,导致路由的运行会很不稳定,甚至经常死机,这也是笔者亲身实践的结果,所以笔者不建议这么做”。

折腾间突然冒出一个想法,既然OpenWRT有uhttpd和Luci作为Web服务提供图形配置界面,那么可否把Wifidog的认证页面集成到Luci当中呢?之前笔者曾经测试把Wifidog的Web认证页面集成到OpenWRT当中,其实现方法是用传统的LMNP方案,即在OpenWRT上安装Nginx、PHP和Mysql,部署Wifidog的认证服务。但是效果十分不理想,OpenWRT将长期处于高负载状态,甚至影响到了用户的正常上网,稳定性也得不到保证,经常死机,故这种方案不可取,也是我不建议这么做的原因。

OpenWRT中集成了uhttp和Luci作为Web服务提供图形配置界面。uhttpd是一个轻量级的Web服务器,而Luci是用Lua这种轻量级的脚本语言编写的,其性能十分优秀,这也是OpenWRT选择他们的原因。

详细研究Lua和Luci的文档以及相关资料后,终于实现了这个想法,并把程序编译成ipk(下载见文末),需要说明的是Wifidog需自行安装。

安装完成后,Wifidog的默认登录地址是http://192.168.1.1/cgi-bin/luci/login/(路由的lan IP不是192.168.1.1的需自行修改),默认的用户名是root,密码是admin,注意须在Wifidog开启的情况下登录才能成功。如果想新增用户和修改密码,修改/etc/wifidog.auth文件,其格式为username:password,中间用英文半角冒号分隔,每个用户分别占一行。

关于安装完成后Wifidog的配置,我在ipk里加入了wifidog.conf.example,安装完成后位于/etc/目录下,但仍需要根据你的环境作相应的配置,需要配置的参数有ExternalInterface、GatewayInterface、GatewayAddress,其中ExternalInterface指的是你的路由的WAN的接口,如果是VLAN接口就填写VLAN接口;GatewayInterface指的是你的路由的LAN的接口,一般是br-lan;GatewayAddress指的是你的路由的LAN的IP地址。关键配置AuthServer已经提供,如果你想了解AuthServer的配置细节,你可以参见本博客的相关文章。
如果你有HTML+CSS甚至是DIV+CSS编程基础和经验,你可以自定义登录认证页面,其htm页面位于/usr/lib/lua/luci/view/wifidog/文件夹下,CSS等资源文件位于/www/wifidog/文件夹下。
经过测试,其稳定性果然提高不少。不过笔者仍然建议,如果你的WIFI接入用户数大于10,独立的认证服务器仍然是很有必要的。另外,特别提醒,如果你的WIFI是开放的,Luci配置登录界面也会暴露,你的ROOT密码如果过于简单,就会存在安全风险。

附件下载:
http://talk.withme.me/download/luci-app-wifidog-authmini_1.0-1_all.ipk(全平台通用)

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

OpenWRT下实现Portal认证(WEB认证)

首先简单介绍一下什么是Portal认证,Portal认证,通常也会叫Web认证,未认证用户上网时,设备强制用户登录到特定站点,用户可以免费访问其中的服务。当用户需要使用互联网中的其它信息时,必须在门户网站进行认证,只有认证通过后才可以使用互联网资源。现金很多中国移动CMCC、中国联通、中国电信ChinaNet的WIFI都使用这种认证接入方式。

在OpenWRT上实现Portal认证,实际上早已有解决方案:

  1. chillispot,但原维护作者停止更新,被chillispot.info接管继续开发;
    2.coova-chilli,它是基于chillispot开发拓展的,功能最为强大;可以去官方看一下Coova-chilli;
    3.wifidog
    前两个由于原维护作者停止更新,笔者也没有深入研究,重点钻研了wifidog,Wifidog也是OpenWRT和DD-WRT中实现Portal比较出名的。

但是,Wifidog只是实现AP认证网关,需要配合外部的Portal服务器才能使用,Portal主要是提供认证所需的WEB页面且实现认证计费等的功能。虽然这也有很多商用解决方案,例如wiwiz、wifiap等,但是这些商业解决方案的目标都是盈利,即使可以免费使用,免费账号的功能和权限都受到了很大的限制,例如不能自定义页面,Web认证页面有广告等等。有条件的人可能打算自己搭建Portal服务器,但是看看Wifidog的官方Wiki,对搭建过程实在是难以理解。后来,笔者发现网络上还有一个authpuppy方案,官方网站www.authpuppy.org,是一个已实现好的Wifidog认证服务器,里面包含各种插件供你使用,官方的安装过程也很简单,如果你懂的HTML和面向对象编程的相关知识且拥有一个服务器,可以自行修改认证页面,使用authpuppy也是一个不错的方案。
但是,即便如此,这些方案还是不够灵活,经过笔者认真钻研,查阅大量资料并经过多次抓包分析,终于理解了Wifidog的工作原理。接下来笔者将会跟你介绍如何自行编写一个轻量级的Web Portal认证服务器。当然,这需要你具有程序设计基础,HTML、CSS当然是少不得的,后端开发语言可以使用PHP或Python或Java等。
首先,需要简单介绍一下Wifidog的工作原理:
1.客户端发出初始化请求,比如访问 www.baidu.com。
2.网关的防火墙规则将这个请求重定向到本地网关的端口上。这个端口是Wifidog监听的端口。
3.Wfidog提供一个HTTP重定向回复,重定向到Web认证页面,重定向的Url的Querystring中包含了Gateway的ID,Gateway的FQDN以及其他的信息。
4.用户向认证服务器发出认证请求
http://portal_server:port/login_script?
gw_id=[GatewayID, default: “default”]
gw_address=[GatewayAddress, internal IP of router]
gw_port=[GatewayPort, port that wifidog Gateway is listening on]
url=[user requested url];
5.网关返回一个(可以是自定义的)splash(也称作“登录”)页面。
6.用户提供他的凭据信息,比如用户名和密码。
7.成功认证的话,客户端将会被重定向到网关的自己的web页面上,并且带有一个认证凭据(一个一次性的token),内容比如:
http://GatewayIP:GatewayPort/wifidog/auth?token=[auth token];
8.用户就是用获取到的凭据访问网关。
9.网关去认证服务器询问token的有效性。
10.认证服务器确认token的有效性。
11.网关发送重定向给客户端,以从认证服务器上获取 成功提示页面,重定向到 http://portal_server:port/portal_script 这个位置。
12.认证服务器通知客户请求成功,可以上网了。
图解:
55.jpg

然后考察一下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认证,我的回答是能,至于具体做法,以后再介绍。

本文章由 http://www.wifidog.pro/2014/12/17/OpenWRT-portal%E8%AE%A4%E8%AF%81.html 整理编辑,转载请注明出处