首页 经验教程内容详情

用openwrt固件的路由器怎么实现连接上一个wifi信号的时候,自动打开一个网页,登录以后才能正常上网 2025-07-07 50 summer1986

要在 OpenWrt 固件的路由器上实现连接 WiFi 后自动弹出登录页面(即 Captive Portal 认证),需配置以下组件:dnsmasq(DHCP/DNS 服务)、uhttpd(Web 服务器)、luci-app-guest-wifi(可选,用于隔离访客网络)和wifidogCoovaChilli(认证服务)。以下是具体步骤:

一、安装必要软件包

通过 SSH 登录路由器,执行以下命令安装认证组件(以wifidog为例):


bash
opkg update
opkg install wifidog luci-app-wifidog  # 安装wifidog及LuCI界面opkg install dnsmasq-full  # 安装完整版本的dnsmasq

二、配置 WiFi 网络

  1. 创建独立的访客网络(推荐,增强安全性):
    • 登录 LuCI 界面(http://192.168.1.1),进入 网络 → 无线

    • 点击 添加,选择与主网络不同的 SSID(如 "Guest-WiFi");

    • 选择加密方式(如 WPA2-PSK)并设置密码;

    • 在 高级设置 中,将 网络 指定为新创建的guest接口。

  2. 配置防火墙规则
    • 进入 网络 → 防火墙,添加新区域guest

    • 将 输入转发 设置为 拒绝输出 设置为 接受

    • 在 覆盖默认区域设置 中勾选 允许 DHCP 请求

    • guest区域关联到guest网络接口。

三、配置 wifidog 认证

  1. 基本设置
    • 网关接口 选择guest网络;

    • 认证服务器 选择本地认证服务器

    • 重定向 URL 设置为登录页面 URL(如http://192.168.1.1:8080/wifidog-login)。

    • 进入 服务 → WiFi 认证(LuCI 界面);

    • 在 基本设置 中:

  2. 自定义登录页面
    • 登录页面位于/www/wifidog/目录,可修改默认模板:

      bash
      mkdir -p /www/wifidogcp /usr/share/wifidog/htdocs/* /www/wifidog/


    • 编辑/www/wifidog/login.html自定义页面内容,添加表单提交地址:

      html
      预览
      <form action="/wifidog/auth" method="post">
          <input type="hidden" name="token" value="$token">
          <input type="text" name="username" placeholder="用户名">
          <input type="password" name="password" placeholder="密码">
          <button type="submit">登录</button></form>


  3. 认证脚本(可选):
    • 编辑/etc/wifidog/wifidog.conf,添加认证脚本路径:

      conf
      AuthServer {
          URL "/wifidog/auth"
          Script "/etc/wifidog/auth.lua"  # 自定义认证脚本
      }


    • 默认使用本地认证,可通过 Lua 脚本扩展认证逻辑(如连接 LDAP/MySQL):

四、配置 DNS 劫持

确保所有 HTTP 请求重定向到登录页面:


  1. 编辑/etc/dnsmasq.conf,添加:

    conf
    address=/#/192.168.1.1  # 将所有域名解析到路由器IP


  2. 重启 dnsmasq 服务:

    bash
    /etc/init.d/dnsmasq restart


五、自定义认证逻辑

若需实现用户名 / 密码验证,可编写 Lua 认证脚本(/etc/wifidog/auth.lua):


lua
function auth_check(username, password)
    -- 简单示例:验证用户名和密码是否匹配
    if username == "admin" and password == "password" then
        return 1  -- 认证通过
    end
    return 0  -- 认证失败end

六、测试与优化

  1. 重启服务
    bash
    /etc/init.d/wifidog restart


  2. 连接测试
    • 用手机连接访客 WiFi,尝试访问任意网站;

    • 应自动跳转到登录页面,输入凭据后点击登录;

    • 验证成功后,检查是否可正常访问互联网。

  3. 常见问题
    • 无法跳转登录页:检查 dnsmasq 配置和防火墙规则;

    • 认证失败:查看/var/log/wifidog.log排查错误;

    • 性能问题:若 CPU 负载过高,可考虑升级硬件或改用轻量级认证方案(如nodogsplash)。

七、替代方案(简化配置)

若希望快速实现,可使用nodogsplash(轻量级 Captive Portal):


bash
opkg install nodogsplash luci-app-nodogsplash


配置方法类似,但界面更简洁,资源占用更低,适合 MT7621 等低性能设备。


通过以上配置,路由器将在用户连接 WiFi 后强制跳转登录页面,验证通过后才允许访问互联网。可根据需求扩展认证方式(如短信验证码、微信扫码)或集成广告系统。