PHP / Ruby强制网络门户第一个域似乎被缓存

时间:2014-09-29 14:42:53

标签: php ruby apache iptables

我用iptables创建了一个强制门户网站

我使用了许多人似乎使用的东西:用户可以请求DNS,数据包标记为99. 99表示没有其他用户可以访问的互联网。

当用户访问页面时,例如堆栈溢出。用户获得免责声明。他/她点击好了。发生的事情是服务器执行以下规则:

`sudo /sbin/iptables -t mangle -I captivePortal 1 -m mac --mac-source {$mac} -j RETURN`;
    `sudo /sbin/iptables -t mangle -I captivePortal 1 -s {$_SERVER['REMOTE_ADDR']} -j RETURN`;

我尝试了什么:

使用sinatra独自站着薄。用erb渲染模板。当用户在验证后重新加载时,他们在访问初始域时获得免责声明。当访问另一个他们没有得到免责声明页面。

用php设置apache2,在php中重写。添加了meta标签以防止在浏览器中缓存但结果相同。原始域名总是重定向到免责声明,但其他网站都没问题。

我想要实现的目标

用户需要在免责声明上点击接受才能使用WIFI。

编辑:重新加载apache2确实解决了这个问题。

1 个答案:

答案 0 :(得分:1)

如下所述使用rmtrack:http://www.andybev.com/index.php/Using_iptables_and_PHP_to_create_a_captive_portal

/usr/sbin/conntrack -L \
    |grep $1 \
    |grep ESTAB \
    |grep 'dport=80' \
    |awk \
        "{ system(\"conntrack -D --orig-src $1 --orig-dst \" \
            substr(\$6,5) \" -p tcp --orig-port-src \" substr(\$7,7) \" \
            --orig-port-dst 80\"); }"