猫言猫语

严以律己·宽以待人·自强不息·知行合一

在 OpenWrt 中实现 Wifi Portal 效果

| 在 OpenWrt 中实现 Wifi Portal 效果已关闭评论

什么是 Wifi Portal,简单的说,就是当你连上 Wifi 之后,就会强制弹出某个页面,这个页面就是 Wifi Portal,要实现 Wifi Portal 需要 iptables 与 web 服务器的配合才可以 :)

在 OpenWrt 中,打开 Network/Firewall,再打开 Custom Rules,输入以下内容

iptables -t nat -A prerouting_lan_rule -p tcp -m tcp --dport 80 -j REDIRECT

然后再打开 /etc/config/uhttpd,在配置段适当的位置加上

option error_page '/error.html'

最后再编辑 /www/error.html 文件,内容如下



  


这样当你连接到 Wifi 的时候,你就会被带到 luci 的登录页,至于怎么美化,就看大家发挥了

iOS CaptiveNetworkSupport 原理与注意

| iOS CaptiveNetworkSupport 原理与注意已关闭评论

使用过苹果手机的同学如果连接过一些公共 Wifi,就会遇到过这样的现象,当你连接上 Wifi 后,会自动弹出一个Web网页让你进行认证,比那些纯密码认证的 Wifi 要高大上不少,这其中究竟是什么原理呢?

其实原理并不复杂,当 iOS 连接上 Wifi 后,就会连接到他的测试 URL 地址上进行测试,看看返回的网页与期望的网页是否一致,如果一致,则认为这个 Wifi 是可以成功连接的,如果是一个跳转页,则会弹出一个 Web 容器窗口,而跳转页就会在这个容器中显示出来。

但 iOS 对外请求时使用的是 HTTP 1.0 协议,如果返回的是 HTTP 1.1 的 302 则可以直接识别跳转,如果返回的也是 HTTP 1.0 的 302,iOS 就无法识别不会弹窗了,这个时候我们就应该使用 HTML head 里的 refresh 来进行跳转

不过 HTTP 1.0 协议里也是有 302 代码的,可就是不知道为什么 iOS 不识别 1.0 的 302

为 OpenWrt 安装 ipset 功能

| 为 OpenWrt 安装 ipset 功能已关闭评论

一、安装

opkg update
opkg install ipset
reboot

二、测试

ipset create WifiQRCode bitmap:ip,mac range 192.168.96.0-192.168.96.255
ipset -L