WifiDog:A captive portal suite

What is it composed of ?

A: It is composed of 2 components:

  1. The client is a daemon process - this gets installed on every wireless router
  2. The auth server is a web application - this gets installed in a central location

    What do I need ?

    1. Basic proficiency in a GNU/Linux environment
    2. A GNU/Linux OS with netfilter compiled into the kernel
    3. The iptables package
    4. The GNU C compiler (gcc). Other compilers may work, but we have not tested and will not support them.
    5. The latest Wifidog tarball which can be obtained from SourceForge

    Pre-installation

    This is where a lot of people run into problems, so let's state this in bold:

    MAKE SURE EVERYTHING WORKS FIRST BEFORE INTRODUCING Wifidog INTO THE ENVIRONMENT

    That especially means:

    • The router must boot properly
    • The router must bring up the interfaces properly
    • The router must set up the routes properly
    • The router must connect to the internet properly
    • DNS settings must be set or obtained properly. DNS must work.
    • DHCP settings (client, server or both) must be set or obtained properly.
    • The ipt_mac.o kernel module must be loaded.
    • If using NAT, the router must setup NAT/masquerading rules with iptables properly
    • Clients on the desired (WIFI) network must be able to bind, associate, lease and connect the internet properly
    • All the above must happen automatically when the router starts or gets rebooted

    Do NOT proceed with installing Wifidog until you've satisfied the above. It will not work otherwise and you will waste lots of time.

    Installation

    Wifidog, like many open source projects, is distributed with standard autotools utilities to make installation easy. Unpack the tarball (from Sourceforge) or get the lastest source from SVN (see Download menu), then follow the standard:

    ./autogen.sh
    make
    make install

    If you do not install it with make install, then you will find the compiled wifidog gateway binary in src/wifidog (also don't forget to copy wifidog.conf to /etc).

    OpenWrt? ipkg

    More details can be found in the README.openwrt file.

    mkdir ~/wifidog.openwrt
    cd ~/wifidog.openwrt
    wget http://downloads.openwrt.org/whiterussian/newest/OpenWrt-SDK-Linux-i686-1.tar.bz2
    tar -jxvf OpenWrt-SDK-Linux-i686-1.tar.bz2
    svn checkout https://dev.wifidog.org/svn/trunk/wifidog
    cd wifidog
    ./autogen.sh
    make ipk OPENWRTSDK=~/wifidog.openwrt/OpenWrt-SDK-Linux-i686-1

    If there were no errors, your package should be in ~/wifidog.openwrt/OpenWrt-SDK-Linux-i686-1/bin/packages

    Configuration

    Edit /etc/wifidog.conf and follow the instructions in the file. Things should be self-explanatory.

    Running Wifidog for the first time

    Run Wifidog with the following switches:

    wifidog -f -d 7
    -f means to run in foreground (do not become a background daemon)
    -d 7 increases debug output level to the maximum

    Testing

    As a client on the WiFi network (or whatever interface is configured as the LAN interface in /etc/wifidog.conf), open a web browser and try to browse to your favourite web site.

    Monitor the output of the running Wifidog to see what it's doing.
    aaarticlea/png;base64,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" alt="" />

WifiDog系统的更多相关文章

  1. 2012高校GIS论坛

    江苏省会议中心 南京·钟山宾馆(2012年4月21-22日) 以"突破与提升"为主题的"2012高校GIS论坛"将于4月在南京举行,由南京大学和工程中心共同承办 ...

  2. 海蜘蛛WiFiDog固件 MTK7620 OEM,带云AC功能、探针、广告插入,MTK7620解包打包维修默认参数

    修改内容: 1.系统默认管理员员帐号密码 2.系统默认LAN 接口地址 3.系统默认DHCP及保留地址 4.系统默认云AC远程地址及协议内容 5.系统默认JS插入地址 6.系统默认探针位置 7.默认顶 ...

  3. 极路由1s,固件需要刷入RipOS系统的加40块

    极路由1s,固件需要刷入RipOS系统的加40块,集成wifidog功能,wifi广告路由器的理想选择功能. 经过测试,无线性能稳定,无线可带32个手机客户端. 具体配置: 7620CPU ,主频58 ...

  4. wifidog源码分析 - 认证服务器心跳检测线程

    引言 但wifidog启动时,会自动启动认证服务器心跳检测线程,此线程默认每隔60s与认证服务器交互一次,会将路由器的信息(系统启动时长,内存使用情况和系统平均负载)告知认证服务器,并通过一个&quo ...

  5. wifidog接口文档(转)

    目录(?)[-] 网关心跳协议 请求信息 回复格式 例子 用户状态心跳协议 请求格式 注意 回复格式 状态码 例子 跳转协议 请求格式 例子 注册协议 请求格式 例子 wifidog是搭建无线热点认证 ...

  6. Wifidog的协议梳理

    上篇文章结合wifidog的协议,讲解了如何实现wifi认证.这篇文章会详细讲解一下wifidog的协议. wifidog的认证流程图 用户连接WIFI会跳转到以下地址: 1 2 3 4 5 6 7 ...

  7. Wifidog初分析

    一.综述 wifidog是搭建无线热点认证系统的解决方案之一,他比nocat.nodog更适合互联网营销思路.常见的使用在openwrt系统上,它实现了路由器和认证服务器的数据交互,在路由器方(客户端 ...

  8. Wifidog及认证过程初分析

    Wifidog初分析 一.综述 wifidog是搭建无线热点认证系统的解决方案之一,他比nocat.nodog更适合互联网营销思路.常见的使用在openwrt系统上,它实现了路由器和认证服务器的数据交 ...

  9. wifidog用php实现验证流程

    原创性声明 此博文的出处 为 http://blog.csdn.net/zhujunxxxxx/article/details/25384909假设进行转载请注明出处.本文作者原创,邮箱zhujunx ...

随机推荐

  1. 在CentOS 7上利用systemctl加入自己定义系统服务

    CentOS 7继承了RHEL 7的新的特性,比如强大的systemctl,而systemctl的使用也使得以往系统服务的/etc/init.d的启动脚本的方式就此改变,也大幅提高了系统服务的执行效率 ...

  2. Cocos2d-x3.0游戏实例之《别救我》第二篇——创建物理世界

    这篇我要给大家介绍两个知识点: 1. 创建游戏物理世界 2. 没了(小若:我噗) 害怕了?不用操心.这太简单了~! 笨木头花心贡献.啥?花心?不呢.是用心~ 转载请注明,原文地址:http://www ...

  3. Laravel 4 Blade模板引擎

    http://my.oschina.net/5say/blog/201290 模板输出 基本输出 1 <!-- app/views/example.blade.php --> 2 < ...

  4. 普通用户登录PLSQL后提示空白OK对话框错误

    问题描述: 1.普通域账号登录域成员服务器后,打开PLSQL正常,输入用户名密码登录后提示一个空白的OK对话框,点确定后又返回到输入用户密码界面. 2.在CMD窗口下调用SQLPLUS登录数据库时报如 ...

  5. PL/SQL破解方法(不需要注册码)

    打开注册表在run下输入regedit删除1.HKEY_CURRENT_USER/Software/Allround Automations2.HKEY_CURRENT_USER/Software/M ...

  6. (转)Windows Server 2008 默认"照片库查看器" 无法打开图片, 只能用画图程序打开

    1.解决[启用Win2008照片查看器] Win2008 中放了一些图片,本来以为可以象Win7那样直接用“照片查看器”打开,可是Win2008默认竟然是用“画图”打开的,非常不方便. 再仔细一看,“ ...

  7. Material 字体样式与排版

    Material 字体样式与排版 Google Material 设计规范文档 Style– Typography 字号 再好的布局也会被过多的字号和样式会毁掉.要规定好在这个布局上合适的 字号集合 ...

  8. Android黑科技,读取用户短信+修改系统短信数据库

    安卓系统比起ios系统最大的缺点,相信大家都知道,就是系统安全问题.这篇博客就秀一波“黑科技”. 读取用户短信 Android应用能读取用户手机上的短信,相信已经不是什么新鲜事,比如我们收到的短信验证 ...

  9. hbase 单机模式安装

    1:下载安装包(我下载的0.94版本,如果考虑后期与hadoop兼容,需要找合适的版本) http://mirrors.hust.edu.cn/apache/hbase/hbase-0.94.20/h ...

  10. C#中的表达式树的浅解

    表达式树可以说是Linq的核心之一,为什么是Linq的核心之一呢?因为表达式树使得c#不再是仅仅能编译成IL,我们可以通过c#生成一个表达式树,将结果作为一个中间格式,在将其转换成目标平台上的本机语言 ...