我按照本指南:
http://aryo.info/labs/captive-portal-using-php-and-iptables.html
我正在使用iptables实现强制门户.我在linux路由器上设置了web服务器和iptables,一切正常.
我可以允许用户访问互联网
sudo iptables -I internet -t mangle -m mac --mac-source USER_MAC_ADDRESS -j RETURN
我可以删除访问权限
sudo iptables -D internet -t mangle -m mac --mac-source USER_MAC_ADDRESS -j RETURN
但是,在删除时,用户仍可以多次打开上次查看的页面(如果他重新启动以太网适配器,将来的连接将被关闭).在博客页面上我找到了一个脚本
/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\"); }"
哪个应该删除它们的“重定向”连接轨道,因为它是编写的,但是当我执行该脚本时,没有任何反应 – 用户仍然可以访问该页面.
当我执行/usr/sbin / conntrack -L |时执行脚本后grep USER_IP我没有返回任何内容,所以我的问题:还有什么可以帮我清理这些轨道吗?显然 – 我不能重置也不能用,也不能用户网络适配器.
更新:
为了避免潜在的误解 – 上面的命令是我在我的机器上执行的原始命令,因此PHP的exec()和类似的不是这种行为的原因.所有命令都执行良好 – 因为删除用户无法访问除他正在浏览的最后一个站点之外的任何其他网站.