天天看點

openwrt 認證收費_OpenWrt wifidog 實作收費提醒效果

需求場景

有一個免認證的 Wifi SSID,比如叫:OpenWrt,附近的同學可以随便連上這個 SSID,沒有繳過費的同學不管通路什麼位址,都會被跳轉到收費提醒頁面,而繳過費的同學就可以開心上網了。

解決辦法

從需求上來說,這是一個非常标準的 WifiDog 效果,如果未來有很複雜的需求,可以直接通過 WifiDog 來實作跳轉,然後再通過 AuthPuppy 來實作賬戶管理,不過想在 OpenWrt 上同時部署 WifiDog 與 AuthPuppy 也不是一件很容易的事情。

是以我們準備考慮直接通過 iptables 來實作這個需求,未來如果有複雜的擴充需求,也不影響擴充到 WifiDog 來實作。

實作流程

通過 SSH 登入到 OpenWrt,打開 /etc/config/uhttpd,在檔案的最頂部增加以下配置

config uhttpd 'portal'

list listen_http '0.0.0.0:11990'

option home '/www/portal'

option error_page '/index.html'

然後在 /www/portal 下建立一個名為 index.html 的靜态檔案,檔案内容可以如下

Wifi

Email: [email protected]

之後再打開 /etc/firewall.user 檔案,在末尾添加如下配置:

iptables -t nat -A prerouting_lan_rule -p tcp -m tcp --dport 80 -m mark ! --mark 8 -j REDIRECT --to-ports 11990

iptables -t filter -A forwarding_lan_rule -m mark ! --mark 8 -j REJECT

儲存後執行 /etc/init.d/firewall restart 重新載入 iptables 的配置

然後再執行 /etc/init.d/uhttpd restart 重新載入 uhttpd 的配置

然後用手機連接配接這個無線網絡,你就會發現總是彈出這個提示頁面了

使用者授權

當有使用者繳費了之後,向他要到他的MAC位址,同樣打開 /etc/firewall.user 檔案,比如這個使用者有 2 個裝置,MAC 位址分别是 00:00:00:00:BB:AA 與 00:00:00:00:BB:BB 則添加以下 2 條 規則,以後這 2 個裝置就可以随便上網了!

iptables -t mangle -A fwmark -m mac --mac-source 00:00:00:00:BB:AA -j MARK --set-mark 8

iptables -t mangle -A fwmark -m mac --mac-source 00:00:00:00:BB:BB -j MARK --set-mark 8

添加後同樣需要執行 /etc/init.d/firewall restart 以使配置生效

注意事項

如果通過以太網口通路 OpenWrt luci 管理界面也是那個收費提示,隻需要把該機器的 MAC 位址同樣授權一樣即可