惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Secure Thoughts
The Register - Security
The Register - Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
F
Fortinet All Blogs
The Hacker News
The Hacker News
爱范儿
爱范儿
NISL@THU
NISL@THU
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Apple Machine Learning Research
Apple Machine Learning Research
Help Net Security
Help Net Security
H
Help Net Security
PCI Perspectives
PCI Perspectives
T
Tenable Blog
T
Tailwind CSS Blog
TaoSecurity Blog
TaoSecurity Blog
V
V2EX
T
Threat Research - Cisco Blogs
Hugging Face - Blog
Hugging Face - Blog
N
News and Events Feed by Topic
IT之家
IT之家
C
Cisco Blogs
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
V
Vulnerabilities – Threatpost
F
Full Disclosure
V2EX - 技术
V2EX - 技术
Cisco Talos Blog
Cisco Talos Blog
S
Securelist
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Engineering at Meta
Engineering at Meta
Google DeepMind News
Google DeepMind News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Stack Overflow Blog
Stack Overflow Blog
Hacker News: Ask HN
Hacker News: Ask HN
T
Threatpost
I
Intezer
Attack and Defense Labs
Attack and Defense Labs
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
D
DataBreaches.Net
P
Privacy & Cybersecurity Law Blog
L
LangChain Blog
I
InfoQ
MyScale Blog
MyScale Blog
Microsoft Azure Blog
Microsoft Azure Blog
L
Lohrmann on Cybersecurity
A
About on SuperTechFans
U
Unit 42
H
Heimdal Security Blog

博客园 - lsgxeva

OpenWrt 集成 easycwmpd 成为 TR-069协议中的设备端(CPE) eh.h acu100 bridge vlan config 卫星天线(KA 0.85m 4W_BUC)使用 SatBox331-20 Modem 的性能情况 OpenSpec OPSX 完整指南 Claude Skill Creator 2.0 完整上手攻略 Auto-Memory + CLAUDE.md Conductor 完整上手攻略 GitNexus 完整上手攻略 code-review-graph 完整上手攻略 Claude Code Hooks 完整开发者指南 Openwrt switch vlan配置 llm-course Claude Code 入门教程 MT5专业交易面板 routeros RB750GR3 配置双WAN口 Quectel Modem Wiki sdxlemur 高通5G平台(SDX55\SDX62\SDX65):ping包异常问题排查指南 - lsgxeva - 博客园 高通SDX62平台 MBIM搜网、查询信号等功能异常 Win11数字许可证激活 BirdSat VS100K info wireshark筛选语句详解 linux基线整改方法 windows基线整改方法 NanoPi_R5C ArcBox Config win10远程桌面其他电脑出现如下错误,由于数据加密错误,这个会话讲结束,请重新连接到远程计算机 如何评价杨立昆认为大模型只是对海量文本的模式进行复杂拟合,根本不懂意义? IQ200Board default access problem Win10 输入法卡顿 adaptive_relaxed_optimized 如何下载安装App Store应用旧版本教程 小米澎湃OS 关闭广告 Scrum 模型
OpenWrt 集成 openNDS 进行 强制门户(Captive Portal) 认证
lsgxeva · 2026-06-17 · via 博客园 - lsgxeva

OpenWrt 集成 openNDS 进行 强制门户(Captive Portal) 认证

openNDS 是一个高性能、轻量级的强制门户(Captive Portal)解决方案。它的核心作用是在公共Wi-Fi网络中,作为一道“看门人”,在设备获得完整互联网访问权限之前,先向用户展示一个特定的登录或通知页面(也就是我们常说的“认证页”或“Splash Page”)。

具体来说,它的作用和价值体现在以下几个方面:

🚪 核心作用:公共网络接入管理

它主要扮演一个“边界控制网关”的角色,用于管理从公共局域网到互联网的访问。这个过程通常是自动触发的

  1. 自动拦截:当你的手机或电脑连接到一个由openNDS管理的Wi-Fi网络时,几乎所有现代设备都会自动发起一个网络请求(Captive Portal Detection,CPD)

  2. 展示页面:openNDS会识别并拦截这个请求,然后向你的设备推送一个“Splash Page”

  3. 授予权限:你在页面上完成所需的操作(比如点击“继续”按钮、同意条款或输入凭证)后,才能获得完整的互联网访问权限

✨ 两种开箱即用的方式

为了适应不同场景,openNDS默认提供了两种简单的方式

  • “点击继续”(Click to Continue):这是默认模式。用户连接网络后,只需点击一个按钮(比如“我同意条款”)即可上网,主要用于告知服务条款和记录基本设备信息

  • 用户名/邮箱登录(username/email-address login):用户需要输入用户名和邮箱地址才能继续。这种方式可以用于收集用户信息,便于后续统计或营销,同时也能记录访问日志

🛠️ 为什么值得关注:功能强大的“引擎”

openNDS的独特之处在于,它不仅仅是一个简单的页面显示工具,更是一个功能强大的开发平台,被设计为复杂认证系统的“引擎”。这得益于它提供的几个关键API:

  • Forward Authentication Service (FAS):这是最主要的认证服务。它允许你把认证页面放在一个独立的网络服务器上(可以是在路由器本地、局域网内,甚至是云端),从而实现高度定制化的登录逻辑

  • PreAuth:可以看作是FAS的轻量级版本。认证页面直接由openNDS自带的web服务器生成,无需额外搭建独立服务器,非常适合那些硬件资源(如内存、闪存)有限的路由器

  • BinAuth:一种后认证脚本。当用户认证成功后,可以触发执行一个自定义的脚本或程序,用于实现更复杂的后续操作,比如统计流量、设置带宽限制等

📜 项目起源:与NoDogSplash的渊源

openNDS源自一个叫NoDogSplash的老牌强制门户项目。后来开发者为了能更专注于开发和创新,决定将其拆分为两个项目

  • openNDS:目标是开发定制化、功能丰富的强制门户解决方案,也就是现在我们在讨论的这个。

  • NoDogSplash:则专注于保持极简和轻量,以兼容硬件资源极其有限的旧设备

所以,可以简单地把openNDS理解为NoDogSplash的“进化加强版”,它在易用性的基础上,提供了更广阔的开发和定制空间。

支持 流量配额 上下行限速 以及 通过 FAS 集成 Radius 计费

  • 流量配额:支持对单个客户端设置上传和下载的数据总量配额,单位是KB。当客户端使用量超过配额后,会被强制下线,需要重新认证才能继续上网

  • 上下行限速:支持限制客户端的上下行速率,单位是Kb/s。它内置了动态令牌桶过滤器,允许客户端在短时间内突发高速传输(比如快速加载网页),但如果平均速率持续超过阈值,就会开始限速,从而实现“公平使用策略”。你还可以通过配置OpenWrt的SQM(智能队列管理)软件包来实现更精细的流量整形

  • 通过FAS集成Radius计费:这是可行的,主要通过以下两种方式实现:

    1. FAS (Forward Authentication Service) 的三种级别

      • 级别 3 (fas_secure_enable=3):这是最标准的方式,使用Authmon守护进程。FAS可以决定每个客户端的配额和速率,并覆盖全局配置,是实现与Radius等外部认证系统集成的推荐路径

      • 级别 0, 1, 2:在这些级别下,也可以通过BinAuth脚本或ndsctl auth命令来传递并覆盖配额和速率值

    2. BinAuth (二进制认证) 脚本:BinAuth是openNDS内置的“后认证”脚本机制,在客户端认证、下线、配额用完等事件发生时被调用。通过编写自定义的BinAuth脚本,你可以:

      • 动态下发策略:脚本可以解析从FAS传来的自定义变量,从而覆盖单个客户端的会话时长、数据速率和数据量配额

      • 响应配额事件:当客户端的下载或上传配额用尽时,BinAuth会收到downquota_deauthupquota_deauth事件,此时脚本可以执行你定义的操作,比如与Radius服务器进行计费结算

⚙️ 配置示例

你可以通过编辑 /etc/config/opennds 文件来设置全局的流量配额和速率限制

请注意:在openNDS的语境中,"上传"指的是客户端向互联网发送数据,"下载"指的是客户端从互联网接收数据。你可以在社区论坛找到更详细的讨论,例如关于配置配额后是直接断网还是降低速率的方案

Windows 系统电脑 和 iOS 苹果手机 连接这个网络 进行  强制门户(Captive Portal) 认证

支持主流系统(Windows、Apple iOS、Android 等)的网络探测与认证门户(Captive Portal)检测流程,设备系统无需安装任何第三方软件。

当前的OpenNDS集成了preauthenticated_fqdn_list(预认证客户端的条件FQDN访问)功能,可以理解是一个白名单功能,用于在未登录的情况仅能访问指定URL的充值网站,反馈网站等,提升用户体验。

image

image

============ End