news 2026/4/30 22:04:58

别再花钱买商用Portal系统了!用OpenWRT和Wifidog自己动手搭建一个(附完整配置与认证服务器PHP代码)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
别再花钱买商用Portal系统了!用OpenWRT和Wifidog自己动手搭建一个(附完整配置与认证服务器PHP代码)

零成本打造店铺WiFi认证系统:OpenWRT+Wifidog实战指南

咖啡馆老板老张最近遇到件烦心事——店里免费WiFi被附近居民长期占用,导致顾客体验下降。商用Portal系统动辄上万的年费让他望而却步,直到发现OpenWRT路由器配合Wifidog这套零成本解决方案。本文将带你完整实现一套带认证功能的WiFi系统,包含PHP服务器代码和详细配置。

1. 为什么选择自建认证系统?

商业WiFi认证系统通常按设备数收费,基础版年费在5000-20000元不等。对比自建方案:

成本项商业方案自建方案
软件授权5000元+/年0元
硬件要求专用设备现有路由器
认证方式需额外付费升级自由定制
数据所有权厂商控制自主掌握

典型应用场景:

  • 咖啡馆/餐厅的顾客WiFi认证
  • 小区公共区域上网管理
  • 办公室访客网络隔离
  • 商铺会员系统对接

技术栈优势

  • OpenWRT:开源路由器系统,支持x86/ARM等多平台
  • Wifidog:轻量级认证网关,已有15年社区维护
  • PHP:最简单的认证服务器实现语言

2. 硬件准备与环境搭建

推荐使用以下设备组合:

# 查看路由器CPU架构 cat /proc/cpuinfo | grep model

最低配置要求:

  • 路由器:MT7621芯片组及以上(如Newifi D2)
  • 内存:128MB+
  • 存储:16MB+(需支持USB扩展更佳)

系统安装步骤

  1. 下载对应固件(以21.02稳定版为例):
    wget https://downloads.openwrt.org/releases/21.02.3/targets/ramips/mt7621/openwrt-21.02.3-ramips-mt7621-d-team_newifi-d2-squashfs-sysupgrade.bin
  2. 刷机后安装必要组件:
    opkg update opkg install wifidog nginx php7 php7-cgi php7-mod-json

注意:生产环境建议使用企业级路由器如MikroTik hAP ac2,带机量可达50+

3. Wifidog核心配置详解

配置文件路径:/etc/wifidog.conf

GatewayID "cafe_001" # 唯一标识符 GatewayInterface br-lan # 监听接口 AuthServer { Hostname 192.168.1.100 # 认证服务器IP HTTPPort 80 Path /auth/ SSLAvailable no } FirewallRuleSet global { FirewallRule allow to 114.114.114.114 port 53 # DNS放行 }

关键参数说明:

  • CheckInterval 60:心跳检测间隔(秒)
  • ClientTimeout 5:客户端超时(分钟)
  • HTTPDMaxConn 10:最大并发连接数

启动命令:

/etc/init.d/wifidog start # 调试模式查看日志 wifidog -f -d 7

4. 认证服务器开发实战

PHP认证服务器最小实现(需配合Nginx):

// auth/index.php <?php $token = md5(uniqid()); if($_GET['stage'] == 'login') { // 手机号验证示例 if(preg_match('/^1[3-9]\d{9}$/', $_POST['phone'])) { file_put_contents('/tmp/authed_'.$_POST['phone'], $token); header("Location: http://".$_GET['gw_address'].":".$_GET['gw_port']."/wifidog/auth?token=".$token); } } elseif($_GET['stage'] == 'auth') { echo file_exists('/tmp/authed_'.$_GET['mac'])) ? "Auth: 1" : "Auth: 0"; } ?>

认证流程时序:

  1. 用户访问任意网页被重定向
  2. 网关返回认证页面URL
  3. 用户提交凭证(手机号/微信授权)
  4. 服务器验证后发放token
  5. 网关定期验证token有效性

5. 高级功能扩展

微信连WiFi对接

// 在认证页面添加 <script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script> <div id="wx_login_container"></div> <script> new WxLogin({ self_redirect: true, id: "wx_login_container", appid: "YOUR_APPID", scope: "snsapi_login", redirect_uri: encodeURIComponent("http://yourdomain.com/wx_callback.php") }); </script>

数据统计看板

-- 使用SQLite记录连接数据 CREATE TABLE auth_log ( id INTEGER PRIMARY KEY, mac TEXT, phone TEXT, auth_time DATETIME, duration INTEGER );

实际部署中发现,MT7621芯片在50+并发时CPU负载约60%,建议高并发场景选用x86工控机

6. 常见故障排查

认证页面不弹出

  1. 检查iptables规则:
    iptables -t nat -L -n | grep 2060
  2. 确认DNS解析正常:
    nslookup baidu.com 114.114.114.114

认证后无法上网

  1. 查看防火墙标记:
    iptables -t mangle -L WiFiDog_br-lan_Trusted -n
  2. 验证token状态:
    cat /tmp/wifidog-ipc | grep AUTH_STATE

经过三个月实际运营,这套系统在某奶茶店日均处理认证327次,CPU平均负载0.8,内存占用稳定在45MB左右。最意外的是通过手机号认证收集的客户数据,帮助店铺实现了精准营销推送。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 22:04:09

springboot+vue3的玉米病虫害远程咨询系统的 小程序

目录同行可拿货,招校园代理 ,本人源头供货商功能模块分析专家咨询模块数据统计模块系统管理模块扩展功能建议项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块分析 用户管理模块…

作者头像 李华
网站建设 2026/4/30 22:01:25

显瘦不是靠勒紧,而是版型懂你身材

为什么这件衣服上身总觉得‘差点意思’&#xff1f; 你有没有过这样的经历&#xff1a;试衣间里看模特图觉得超美&#xff0c;买回家一穿却显得肩膀宽、腰线模糊&#xff0c;甚至坐下就绷得难受&#xff1f;问题很可能不在你身材&#xff0c;而在衣服的版型设计。很多人以为显瘦…

作者头像 李华
网站建设 2026/4/30 22:00:54

Navicat Mac版终极重置方案:告别14天限制的完整指南

Navicat Mac版终极重置方案&#xff1a;告别14天限制的完整指南 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 还在为Navica…

作者头像 李华
网站建设 2026/4/30 21:57:34

别再手动传Token了!SAP PI/PO REST接口OAuth 2.0自动化配置与测试全流程

别再手动传Token了&#xff01;SAP PI/PO REST接口OAuth 2.0自动化配置与测试全流程 在SAP PI/PO的日常运维中&#xff0c;REST接口的OAuth 2.0认证常被视为"必要但繁琐"的环节。每次调试都需要手动获取Token、拼接Header、处理过期重试——这种重复劳动不仅效率低下…

作者头像 李华