ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

RouterOS WEB认证实战:Hotspot登录页、免认证与限速配置

RouterOS WEB认证实战:Hotspot登录页、免认证与限速配置 简介面向公共场所无线网络接入控制场景这份RAR压缩资源聚焦ROSRouterOS的Web认证功能适合网络管理员、运维工程师以及正在学习MikroTik路由器热点认证的读者。压缩包共71个文件整体仅95KB包含登录、注销、错误、重定向、状态提示等HTML页面模板同时配有CSS样式表、JS脚本以及JPG/PNG/GIF图片素材其中图片素材数量较多用于登录页面背景、按钮和提示图标便于自定义认证门户的界面风格和品牌元素另有TXT错误说明与XSD接口定义文件可辅助排查认证异常并理解后台接口格式。已有306人学习下载。通过这套资源读者可以直接获得一套现成的ROS热点登录页面和配套素材直观理解页面跳转、表单提交、用户状态反馈等关键环节。同时还能参照文件结构替换或调整自身网络的认证界面快速搭建符合运营需求的公共Wi-Fi认证入口。1. ROS WEB认证先分清是哪个世界“ROS WEB认证”在搜索框里有两副面孔。一部分人想找的是机器人操作系统 ROS 的认证节点想看节点间怎么鉴权更多的人是手边真有一台 MikroTik 的 RouterOS 设备想让访客连上 WiFi 后先看到登录页输入房间号或工号才能上网。这篇讲的是后者。ROS 是 RouterOS 的常用缩写这类 WEB 认证常被叫作 Hotspot 或强制门户Captive Portal本质不是一道安全墙而是一套流量引导机制网关把未认证终端发出的网页请求截住重定向到一个本地页面认证通过后才放行。它解决的是酒店、民宿、公寓、园区访客网最实际的问题——谁、什么时间、用哪个账号、占了多大带宽都有迹可查还能按套餐限速、按日期到期。适合正在选型测试的运维、做访客 WiFi 集成的工程商以及想给自己门店加一道登录门槛的老板。2. 为什么是 Hotspot三个方案对比与认证重定向原理很多第一次接触这个需求的人会问ROS 里能实现 WEB 认证的又不只 Hotspot为什么最后都选它不把选型和机制搞明白后面配置出问题就不知道往哪里查。这一章把最常见的选择路径和认证链路拆开讲清楚。2.1 三个备选方案PPPoE、802.1X 与 Hotspot 怎么选在 RouterOS 上做接入认证常见做法有三种PPPoE、802.1X、Hotspot也就是 WEB 认证。三者定位完全不同选错会让现场运维痛不欲生。方案客户端要求适合场景主要问题PPPoE手动建拨号连接运营商宽带、包月账号访客不会配置手机体验差802.1X终端需支持并配置企业有线接入手机配置麻烦证书部署复杂Hotspot WEB认证任意浏览器系统自动弹窗访客 WiFi、酒店、校园、门店HTTPS 站点无法直接重定向需引导PPPoE 方案看起来最成熟但它把拨号动作交给了终端用户。酒店客人不会在手机里新建一个 PPPoE 连接门店顾客更不会。802.1X 在企业有线网络里是标准做法可一旦面对访客和手机光是“安装证书”这一步就能劝退九成人。Hotspot 的优势在于终端零配置——手机连上 WiFi 后系统会自动探测是否需要登录然后弹出认证页面。这也是为什么在 RouterOS 语境里搜“WEB认证”最后几乎都落到 Hotspot 上。这里要提醒一句ROS 是 RouterOS 的缩写如果你在找机器人操作系统那套 ROS 学习资料这个标题把你带到了另一个世界。2.2 认证链路拆解从 DHCP 到 Captive Portal 探测Hotspot 的完整认证链路可以拆成四步看。第一步终端连上 WiFi 或有线口通过 DHCP 拿到 IP、网关、DNS。第二步终端发起任意 HTTP 请求RouterOS 拦截了未认证设备发往 80 端口的 TCP 连接直接返回 302 跳转把浏览器导向本地登录页。第三步终端在登录页输入账号密码提交给 RouterOS 的 hotspot 服务。第四步服务校验通过后把这个终端的 IP-MAC 状态标记为 authorized后续流量正常转发。这里有个关键机制值得多说一句手机连上 WiFi 后为什么会自动弹窗原因是 Android 和 iOS 都有 Captive Portal 探测机制系统会向固定的 HTTP 地址发送探测请求用来判断当前网络是否需要认证。RouterOS 把这类探测请求也一并重定向到了登录页手机收到响应后就知道“这个 WiFi 需要登录”于是自动弹出横幅。对终端设备来说这套认证过程更像一个黑匣子连上 WiFi 就知道该弹窗但背后的重定向逻辑用户完全无感。有一点是这个机制的天然边界HTTPS 流量没法被透明重定向。TLS 握手发生在 HTTP 请求之前网关不能解密用户流量也就没法把“打开任意网站”的请求改写成登录页。所以纯 HTTPS 站点比如微信、支付宝不会自动跳到认证页。这不是配置错误是机制限制后面排查章节会再展开。2.3 先记住这几个参数地址池、dns-name、session 与 keepalive不用背全 Hotspot 的所有参数真正影响日常运行的是四个address-pool、dns-name、session-timeout、keepalive-timeout。address-pool 决定给未认证用户发放哪个网段的 IP必须和 DHCP 保持一致。dns-name 是认证服务的对外名称相当于这台路由器对外宣传的“登录页域名”。session-timeout 是认证后的最长在线时长到期后强制重新认证。keepalive-timeout 是空闲多久断开会话用户半天没流量会话就被回收。参数作用常用取值address-pool未认证用户 IP 池与 DHCP 网段一致dns-name登录页对外域名建议用内部域名方便记忆session-timeout认证会话最长时长按套餐定8h / 24h / 7dkeepalive-timeout空闲断开阈值建议 5m太短掉线频繁太长浪费会话资源我一般会在上线前用一条命令把当前生效值全部拉出来核对一遍避免 Web 界面和命令行配置不一致/ip hotspot print detail重点看 session-timeout 和 keepalive-timeout 的数值。门店访客网络 session-timeout 设 24h 就够酒店可以设到套餐截止时间办公访客网建议 8h避免隔夜不用的设备长期占着会话。3. 跑通最小 Hotspot从零到认证成功的完整命令原理聊完这一章直接上手。目标是让一台全新 RouterOS 设备在十分钟内跑起一个能用的认证环境访客连上 WiFi打开网页看到登录页输入账号密码顺利上网。3.1 最小部署四条命令起一个可用认证服务假设路由器上的 bridge1 已经建好并且是给访客网络用的桥接接口。手工配置 Hotspot 只需要四条命令先把地址池、DHCP 和认证服务串起来/ip pool add namehs-pool ranges192.168.100.2-192.168.100.254 /ip dhcp-server network add address192.168.100.0/24 gateway192.168.100.1 dns-server192.168.100.1 /ip dhcp-server add namehs-dhcp interfacebridge1 address-poolhs-pool /ip hotspot add namehs interfacebridge1 address-poolhs-pool第一条命令创建地址池范围避开网关 .1。第二条命令让 DHCP 知道网关和 DNS 都指向路由器自身这样才能保证用户后续的 DNS 请求也被路由器接管。第三条命令把 DHCP 服务挂到 bridge1 上。第四条命令是这个方案的核心在 bridge1 上启用 Hotspot并把刚才的地址池绑定给它。RouterOS 还提供了交互式向导/ip hotspot setup按提示选接口、输入地址池范围就能完成同样的事情。我的习惯是测试环境用向导交付环境用手工命令。手工命令可以存成脚本新设备进场直接跑一遍避免在向导里点错选项。Hotspot 启用后系统会自动生成防火墙和 NAT 规则来配合重定向这一步不需要手工干预。这里有个容易踩的坑如果这台设备之前被人手动清空过防火墙规则Hotspot 的自动规则可能不完整。启用后最好检查一下规则链里有没有 hotspot 相关的条目具体命令放到排查章节再说。3.2 创建用户与 profile密码、限速与到期时间一次配好认证服务起来之后下一步就是建用户。RouterOS 的用户管理逻辑是两层profile 定义一组策略限速、有效期、共享连接数user 是具体的账号密码挂在某个 profile 下面。先建 profile 再建用户/ip hotspot user profile add namevip validity7d rate-limit1024/2048 /ip hotspot user add nameroom801 password2024 profilevip第一条命令创建了一个叫 vip 的套餐有效期 7 天限速 1024/2048。这里的 rate-limit 格式是 rx/tx单位是 kbpsrx 是用户下载方向tx 是上传方向。1024/2048 代表下载 1Mbps、上传 2Mbps实际项目里按运营商带宽反着填就行别把上下行搞反。validity 支持 1h、7d、30d 这类写法到期的用户自动失效。第二条命令创建了一个具体用户 room801密码 2024套用 vip 套餐。如果只是临时测试直接用默认 profile 建一个简单用户就够了/ip hotspot user add namedemo passworddemo123 profiledefault这里有一个常见误用rate-limit 写成“1024k/2048k”或者“1M/2M”。RouterOS 的部分版本能识别带单位的写法但为了脚本通用我一般直接写纯数字单位就是 kbps不会有歧义。3.3 上线验证active 表、host 表与手机实测配置完成后不要急着宣布成功先看两张表。在命令行执行/ip hotspot active print /ip hotspot host print第一张表 active 列出当前已经通过认证的会话能看到用户名、IP 地址、上线时长。第二张表 host 列出网段里所有出现过 DHCP 请求的终端包括还没认证的以及它们的流量计数。用手机连上 WiFi打开任意 HTTP 页面输入 demo 账号然后回来看 active 表有没有多出一条记录。有记录就说明认证链路通了。再做一个更贴近日常的动作手机开飞行模式再关掉重新连接 WiFi。正常情况下系统会在几秒内弹出“需要登录网络”的横幅。如果弹出的登录页能正常提交整条链路就验证完毕。如果手机直接打开了微信、抖音这类纯 HTTPS 应用看不到登录页这不代表配置失败是 HTTPS 重定向的天然限制下一章会专门讲这个现象。4. 把登录页做成能用的样子模板改版、批量建号与免认证最小系统跑通了接下来才是交付阶段真正费功夫的部分登录页要能看、账号要能批量管、内网设备要能免认证。这一章把这三种常见需求逐个落地。4.1 改登录页三个模板变量与一套完整表单RouterOS 的默认登录页是自带的样式简陋且一眼就能看出是路由器厂商的页面。真实交付时客户一定会要求放上自己的 LOGO、服务条款或者联系方式。默认页面文件存放在 Files 里的 hotspot 目录核心文件是 login.html。自己改登录页真正需要掌握的只有三个模板变量$(link-login-only)、$(error)、$(link-login)。写一个最简可用表单form namelogin action$(link-login-only) methodpost input nameusername typetext placeholder工号/房号 input namepassword typepassword placeholder密码 button typesubmit连接网络/button /form p classerror$(error)/p$(link-login-only)是表单的提交地址RouterOS 会把它替换成实际的认证接口$(error)用于回显错误信息比如密码错误、账号到期。表单里的字段名 username 和 password 不能改改了就认证失败。$(link-login)变量在部分模板里用于带原始访问地址的跳转适合做“登录后跳回原网页”的场景。改模板时有一个容易被忽略的细节页面里的 CSS、JS、图片全部要本地存放不要引用外部 CDN。认证前的用户处于未放行状态外部资源加载不出来页面会白屏。默认模板里带了 CHAP 认证相关的隐藏字段自己写表单时最好保留这些字段否则密码会以明文方式传输。这个页面走的是内网风险可控但既然能做对就不要省。4.2 用户批量导入写 rsc 文件比在 Web 界面逐个点快十倍酒店一开就是几十上百个房间号门店一搞促销就要临时生成几百个兑换码在 Web 界面上逐个点击添加用户不是工程师该干的事。RouterOS 支持直接导入脚本文件批量建号的正确姿势是生成一个 rsc 文件内容就是逐条的 add 命令/ip hotspot user add name1001 passwordabc123 profiledefault /ip hotspot user add name1002 passwordabc456 profiledefault /ip hotspot user add name1003 passwordabc789 profiledefault把这个文件上传到路由器的 Files 目录然后在命令行执行/import users.rscRouterOS 会逐条执行文件里的命令并回报每一条的执行结果。用 Excel 拼这样的 rsc 文件和拼 CSV 一样简单第一列是账号第二列是密码第三列是 profile 名下拉填充后导出文本就行。后期要调整某个套餐的限速只需要改 profile 的参数所有挂在该 profile 下的用户会一并生效。再补一个到期管理的细节profile 的 validity 改动不会影响已经在线的用户要等他们下一次认证时才按新策略走。如果客户说“我改了有效期怎么不生效”基本上就是这个原因。批量清理过期用户可以用顺序遍历删掉所有挂某个 profile 的账号但执行前最好先导出备份。4.3 免认证名单ip-binding 与 walled-garden 的分工不是所有设备都需要走登录页。打印机、网络摄像头、AP 管理口这些设备没办法在浏览器里输账号密码必须做免认证。RouterOS 提供两个层面的免认证手段很多人混着用搞不清区别。第一种是针对终端的整体免认证命令是/ip hotspot ip-binding add macAA:BB:CC:DD:EE:FF typebypassed填入设备的 MAC 地址type 指定为 bypassed这台设备就彻底绕开认证流程不弹窗、不限制、直接上网。适合打印机、监控摄像头、以及需要远程运维的 AP 管理地址。第二种是针对目标地址的定向放行叫 walled-garden/ip hotspot walled-garden add dst-hostmp.weixin.qq.com actionallow这条命令的意思是未认证用户也可以访问 mp.weixin.qq.com 这个域名。适合做“仅可上微信”“仅可查订单”这类窄通道场景。注意 dst-host 是精确匹配带 www 和不带 www 是两条规则需要分别添加。要放行 IP 段时写法是 dst-address例如/ip hotspot walled-garden add dst-address114.114.114.114/32 actionallow区分这两个命令是排查免认证问题的关键打印机不上网用 ip-binding访客要能免认证访问某个特定网站用 walled-garden。方向上搞反了配置永远不生效。5. 常见问题与排查5 个让 Hotspot 翻车的细节功能做完整之后最不值钱但最磨人的是现场排错。下面五条是我部署和帮人排查时反复踩过的坑每一条都按现象、原因、解决的顺序写可以直接对应到实际场景。5.1 连上 WiFi 却不弹页面打开 https 网站还报证书错现象是手机连上 WiFi 后没有横幅提示浏览器打开百度能正常跳转登录页但打开微信或某个 HTTPS 站点时要么一直转圈要么弹出“证书不受信任”的警告。原因是 Hotspot 重定向的是 80 端口的明文 HTTP 流量HTTPS 的 TLS 握手在 HTTP 请求之前就完成了网关没法把加密流量改写成登录页。用户访问 HTTPS 站点时路由器只能把连接引到自己的认证服务上浏览器比对证书发现不对劲就报了安全告警。解决的思路不是让 HTTPS 也能弹页而是让用户知道“先打开一个 HTTP 页面”。手机系统自带的 Captive Portal 探测请求走的就是 HTTP所以多数手机会自动弹窗不弹的情况我一般会在前台或楼梯口放一个引导牌写清楚“首次联网请打开任意网页或手动访问 http://wifi 开头的地址”。另外有一种隐蔽情况用户浏览器挂了代理插件流量不经过网关认证页自然出不来。企业场景遇到说不弹页的先让用户关代理再试。5.2 认证通过了还是不能上网防火墙规则被顺手清掉现象是用户在登录页输入账号密码后页面显示“认证成功”但打开任何网站都不通路由器上 active 表里也能看到该用户的会话记录。原因是 Hotspot 启用时自动生成了一套防火墙规则用来放行已认证用户的流量。很多运维习惯把 RouterOS 默认防火墙清空后从头配置结果把 hotspot 的自动规则也带走了。认证逻辑和服务本身没坏但流量在转发阶段被其他规则丢弃了。解决方法是先检查规则链/ip firewall filter print where chain~hotspot正常情况下能看到 hotspot-auth、hotspot-toclients、hotspot-fromclients 等链。如果一条都没有最简单的恢复做法是把 hotspot 服务删掉重新添加一次自动规则会重新生成。我自己在第三方交付项目里遇到过的最典型情况不是这些规则被删而是“Drop All”规则被放在了规则列表最顶部所有转发流量直接被打死。标准做法是把 Drop All 这类兜底规则放在最后hotspot 的放行规则必须在它前面。5.3 打印机、摄像头也要认证IP 绑定与云服务放行现象是网段里的打印机不能云打印网络摄像头连不上厂商的云平台但它们明明已经接在同一个交换机上。原因是这些设备没有交互界面没法在浏览器里输账号密码。它们也被当成未认证终端拦截了哪怕只是访问特定云平台的流量。解决分两种情况。纯内网设备比如打印机只给局域网用不需要任何配置因为 Hotspot 只管出外网的流量内网互访不受影响。需要访问外网云服务的摄像头用 walled-garden 放行厂商云平台的域名或 IP 段如果是完全可信的设备直接用 ip-binding 做整体免认证更省事。有些摄像头厂商的云平台在不同地区部署了多个域名建议抓包确认它实际连的是哪个域名再针对性放行别猜。5.4 限速不生效速率单位、上下行方向与多会话现象是客户明明买了 100M 宽带给访客套餐限速 2M实际测速能跑到 20M 甚至更高。原因多半是 rate-limit 参数写错了。这个参数的单位是 kbps不是 KB/s也不是 Mbps。2048 换算过来就是 2Mbps。写成 2048KB 或者 2M 这种写法部分版本会解析异常导致限速不生效。另一个容易搞混的是方向rate-limit 格式是 rx/txrx 是终端下载方向。运营商说的“下行 100M、上行 20M”填到 RouterOS 里应该是 102400/20480反过来填就变成了下载 20M、上传 100M。还有一种容易被忽略的情况网段里套了多层的 QoS 策略。现场如果还配置了 Simple Queue和 profile 的 rate-limit 会叠加生效表现就是速率比预期更慢或干脆不触发。排查时先用一条命令看有没有多余的队列/queue simple print先把和 Hotspot 无关的队列清掉再回过来看 profile 的限速值。5.5 昨天免认证的设备今天又弹页MAC 白名单的边界现象是给客户的打印机做了 MAC 免认证过了几个月客户打电话说打印机又开始弹认证页了。原因是设备的 MAC 地址变了。打印机换了一块无线网卡或者 Wi-Fi 模块恢复出厂后地址重新分配都会导致旧的 ip-binding 记录失效。还有一种可能是设备没走 hotspot 接口而是从另一个网口出去了。解决方法是把免认证名单当成资产台账来维护。新增设备先确认 MAC 再下发记录定期导出备份/ip hotspot ip-binding print fileipbinding-backup导出文件在 Files 目录里可以下载留档。这里要特别说一个边界MAC 白名单只适合可信设备。现代手机默认开启 MAC 随机化每连接一次 WiFi 就可能换一个地址给员工手机做 MAC 免认证毫无意义。门店场景里员工手机老老实实用账号密码登录比维护一套随时失效的 MAC 白名单省心得多。6. 进阶技巧把认证记录留痕、把登录页做得更像产品功能完整之后还有一个交付素养问题留痕。WEB 认证的价值不只是挡住没账号的人更重要的是出事了能查到“谁在用、什么时候在用”。RouterOS 的 Hotspot 日志默认在内存里滚动覆盖关掉就没了所以我会配合计划任务做定时快照。6.1 离线用户记录system script 定时抓快照用系统计划任务每小时执行一次脚本把当前在线用户表导出成文件:local f hotspot_snapshot /file remove $f /ip hotspot active print file$fprint filexxx会把命令输出写到 Files 目录下的 txt 文件里。配合 scheduler 定时执行就能留下在线用户的历史快照。出问题需要定位时翻当时时间点的快照谁在线一目了然。这个方案够轻量适合中小型现场更大规模的计费和审计需求应该对接 Radius 服务器把计费报文送到独立系统。6.2 上线前 10 分钟快检清单现场交付最怕的是“配完了没验证就走了”。我给自己定了一张上线前检查清单照着走一遍不超过十分钟检查项方法通过标准未认证弹页手机连 WiFi 后访问 http 页面跳转到登录页HTTPS 行为打开一个 https 站点出现证书告警而非正常页面认证成功输入测试账号可访问外网active 表有记录免认证设备打印机开机联网不弹页可直接使用限速效果终端跑一次测速速率接近 profile 设定值到期失效用已过期账号登录提示账号失效拒绝认证我给自己的测试网做这套 WEB 认证时最常栽在“配完没验证”上改完模板后在浏览器里强制刷新看到的还是缓存里的旧页面差点以为模板变量写错了。现在每次上线前必做三件事查自动生成的防火墙规则还在不在、用同一个账号并发登录会不会互相踢、到期时间是不是按本地时区生效。这套东西做到这个程度基本算能交付了剩下的就是把免认证名单维护成日常习惯。希望帮到你。本文还有配套的精品资源点击获取
返回列表