分类 wifidog openwrt 下的文章

Wifidog安装网关协议

需求:
1) 熟悉GNU/Linux环境
2) 内核中编译了netfilter的GNU/Linux OS
3) Iptables
4) GNU C 编辑器。其它编辑器可能也适用,但我们没有测试,也不支持。
5) 可以从SourceForge得到最新的Wifidog TAR包

预安装
很多人会在这里遇到问题,所以我们大致陈述一下:
将Wifidog引入到环境之前先要确保一切都是正常运行

l 路由器须boot正确
l 路由器能正确调出界面
l 路由器须联网
l 正确设置DNS,并能正常运行
l 正确设置DHCP
l 装载ipt_mac.o内核模块
l 如果用NAT,路由器必须用iptables设置NAT/masquerading规则
l 获取WIFI的客户端必面能够绑定和联接到互联网
l 当路由器开始运行时,以上所有须自动运行

安装
Wifidog跟其它开源项目一样,使用标准的自动化工具,使得安装更加便捷。打开TAR包获取来自SVN的最新资源,然后按以下步骤:

./autogen.sh
make
make install

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

OpenWrt ipkg
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

如果没有错误,你的包应该保存在~/wifidog.openwrt/OpenWrt-SDK-Linux-i686-1/bin/packages

配置
编辑/etc/wifidog.conf并依照说明操作,一切OK。

首次运行Wifidog
按照以下命令启动Wifidog:
Wifidog –f –d 7

测试:
当客户端获取WIFI后,用浏览器打开你喜欢的网页。
监测运行当中的Wifidog的output。

本文章由 http://www.wifidog.pro/2015/04/01/wifidog%E5%AE%89%E8%A3%85-3.html 整理编辑,转载请注明出处

wifidog安装到OpenWrt固件的无线路由器HotSpot Builder Utility安装指南

1. 系统需求
硬件

  • 已安装了OpenWrt固件的无线路由器(典型的有Linksys WRT54G系列)

软件

  • Wifidog
    你可以尝试执行以下命令安装Wifidog:

    opkg update # Optional
    opkg install wifidog

将无线路由器接入Internet。
设置并启用无线网络,即,使用无线路由器创建一个可用的Access Point。

2. 在Web控制面板中创建热点
登录到Web控制面板,访问http://cp.wiwiz.com/as/
点击“我的热点”,在接下来的页面中点击“创建热点”。根据页面的提示完成各项设置,点击保存。
你将会看到你刚创建热点的Hotspot ID。记下它,接下来的步骤将会用到它。

3. 安装与设置HotSpot Builder Utility组件
将一台PC机连接至你的无线路由器,用SSH方式连接到无线路由器。执行以下命令:

cd; wget http://dl.wiwiz.com/hsbuilder-util-latest-OpenWrt.tar.gz
cd /; tar -zxf /root/hsbuilder-util-latest-OpenWrt.tar.gz
/usr/local/hsbuilder/hsbuilder_setup4openwrt.sh setup

然后按照提示完成设置。
特别地,你需要输入的Hotspot ID就是你在Web控制面板中创建的热点的Hotspot ID(不是热点的名称)。User Name是你在控制面板注册的用户名。

提示:
安装时你将会被提示输入External NIC 与 Internal NIC。External NIC 代表的是连接Internet的网络接口。Internal NIC 代表的是连接局域网的网络接口。如果你不确定,可以执行ifconfig命令,并从执行结果中找到它们。

现在,如果没有报错信息,那么安装已经完成了。

你可以使用一个Wi-Fi客户端(如带WLAN适配器的PC或者支持Wi-Fi的移动电话)测试一下你的热点:

  • 搜索可用Wi-Fi热点,并连接到你的热点。
  • 打开Web浏览器,输入任何一个HTTP开头的网址。如果你的热点的认证页面能够显示出来,就说明你的热点已经正常运转了。

本文章由 http://www.wifidog.pro/2015/03/19/wifidog%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97-1.html整理编辑,转载请注明出处

wifidog 配置中文说明+wifidog域名白名单简单实现

wifidog.conf:

#网关ID
GatewayID default
#外部网卡
ExternalInterface eth0
#无线网卡
GatewayInterface eth0
#无线IP
GatewayAddress 192.168.1.1
#路由状态HTML
HtmlMessageFile wifidog-msg.html 
#验证服务器
#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:  未用户登录重定向地址.)
#   PortalScriptPathFragment (Optional; Default: portal/? Note:  登录成功后重定向地址.)
#   MsgScriptPathFragment    (Optional; Default: gw_message.php? Note:  退出登录后重定向地址.)
#   PingScriptPathFragment    (Optional; Default: ping/? Note:  路由状态心跳地址.)
#   AuthScriptPathFragment    (Optional; Default: auth/? Note:  路由请求服务器验证地址 and 验证心跳地址(stage=counters).)
#}

AuthServer {
    Hostname auth.com
    #SSLAvailable yes
    Path /
}

# 是否后台进程
# Daemon 1
#默认网关端口
# Default: 2060
GatewayPort 80

# HTTP进程名
# HTTPDName WiFiDog

# HTTP最大连接数
# Default: 10
# HTTPDMaxConn 10

# WEB页面加密码后显示名
# Default: WiFiDog
# HTTPDRealm WiFiDog

# WEB加验证
# HTTPDUserName admin
# HTTPDPassword secret

# 心跳间隔时间
# Default: 60
CheckInterval 60

# 心跳间隔次数 验证超时数等于 CheckInterval*ClientTimeout 
ClientTimeout 2

# 信任的MAC地址,加入信任列表将不用登录可访问
#TrustedMACList 00:00:DE:AD:BE:AF,00:00:C0:1D:F0:0D

#其他防火墙设置

#全局
FirewallRuleSet global {
    ## To block SMTP out, as it's a tech support nightmare, and a legal liability
    #FirewallRule block tcp port 25

    ## Use the following if you don't want clients to be able to access machines on 
    ## the private LAN that gives internet access to wifidog.  Note that this is not
    ## client isolation;  The laptops will still be able to talk to one another, as
    ## well as to any machine bridged to the wifi of the router.
    # FirewallRule block to 192.168.0.0/16
    # FirewallRule block to 172.16.0.0/12
    # FirewallRule block to 10.0.0.0/8

    ## This is an example ruleset for the Teliphone service.
    #FirewallRule allow udp to 69.90.89.192/27
    #FirewallRule allow udp to 69.90.85.0/27
    #FirewallRule allow tcp port 80 to 69.90.89.205
}

# 新验证用户
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 to baidu.com
    FirewallRule allow udp port 53
    FirewallRule allow tcp port 53
    FirewallRule allow udp port 67
    FirewallRule allow tcp port 67
}

#锁住用户
FirewallRuleSet locked-users {
    FirewallRule block to 0.0.0.0/0
}

域名过滤支持:
fw_iptables.c
iptables_compile 修改:

    if (rule->mask != NULL) {
        char *mask=rule->mask;
        int mask_len=strlen(mask);
        int is_domain=0,
            i=0;
        for(;i<mask_len;i++){
            if((mask[i]>=46&&mask[i]<=57)||mask[i]==32){
                continue;
            }else{
                is_domain=1;
                break;
            }
        }
        char * ip =NULL;
        if(is_domain){
            struct in_addr * h_addr =wd_gethostbyname(mask);
            if(h_addr){
                ip= safe_strdup(inet_ntoa(*h_addr));
                free(h_addr);
            }
            if(ip){
                mask=ip;
            }else{
                debug(LOG_ERR, "doamin %s not find ip try again!",mask);
                mask="0.0.0.0";
            }
        }
        snprintf((command + strlen(command)), (sizeof(command) -
                    strlen(command)), "-d %s ", mask);
        if(ip){
            free(ip);
        }
    }

conf.c
_parse_firewall_rule 修改:

    for (i = 0; *(mask + i) != '\0'; i++)
            if (!isdigit((unsigned char)*(mask + i))
                    &&!isalpha((unsigned char)*(mask + i))
                    && (*(mask + i) != '-')
                    && (*(mask + i) != '.')
                    && (*(mask + i) != '/'))
                all_nums = 0; /*< No longer only digits */

本文章由 http://www.wifidog.pro/2015/03/18/wifidog-%E9%85%8D%E7%BD%AE%E4%B8%AD%E6%96%87%E8%AF%B4%E6%98%8E.html整理编辑,转载请注明出处

openwrt 配置wifidog interface 的 DHCP

DHCP
在设置DHCP时,如果你想得到更多的控制权,你可能会考虑到从wifidog gateway box运行DHCP而不是从无线接入点。你可以通过安装DHCPD后在Debian操作。
首先让你所需的DHCP服务器运行apt-get install dhcpd
安装你所需的DHCP服务器后,首先运行以下命令:

/etc/init.d/dhcp stop

这将停止DHCP服务器,这样你可以更改配置脚本。你需要安装接口卡,DHCP服务器需要在此卡上操作服务,并且还要向此卡传送一系列IP地址和向终端PC用户传送的网络信息。
更改接口,DHCP服务器将在此接口运行。你需要编辑/etc/init.d/dhcp并在此输入你的网络接口。

# Defaults
INTERFACES="eth0"

注意也许还有必须编辑/etc/default/dhcp文件来确保INTERFACE在/etc/init.d/dhcp具有同等值。
更改由DHCP服务器发布的网络信息,你需要编辑/etc/dhcpd.conf文件。我使用了一个举过的例子。阅读不同components的注释:

default-lease-time 10800;
max-lease-time 28800;

subnet 10.0.1.0 netmask 255.255.255.0 {
range 10.0.1.2 10.0.1.254;
option routers 10.0.1.1;
option domain-name-servers 150.237.47.200;
} 
  • default-lease-time =你的客户端发布一个IP地址所用的默认时间
  • max-lease-time =你的客户端发布一个IP地址所用的最长时间
  • subnet 10.0.1.0 =你发布给客户端的IP地址范围的子网络,在这种情况下10.0.1.0就是10.0.1.2/254的子网络(将地址范围最后的数字去掉,并改成0)
  • netmask =应用于子网络范围的掩码为IP地址提供有效号码。在这种情况下255.255.255.0只允许IP地址最后部分可以被更改。
  • range =客户端从DHCP获取的IP地址范围
  • option routers =在DHCP运行的网关的网络接口卡
  • option domain-name-servers =DNS服务器

    当你操作完选项,并确保一切正常运行时,你可能要重启DHCP:

    /etc/init.d/dhcp start

现在DHCP已经安装,如果你想测试,或者通过已被桥接的接口点连接到无线,或者往网关以太网卡和另一台PC上连接一个交叉连接线,看看会显示什么信息。

本文章由 http://www.wifidog.pro/2015/03/09/openwrt%E9%85%8D%E7%BD%AEDHCP.html整理编辑,转载请注明出处