<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.photonicat.cn/index.php?action=history&amp;feed=atom&amp;title=Photonicat_2_%E8%AE%BF%E5%AE%A2%E9%97%A8%E6%88%B7_Captive_Portal</id>
	<title>Photonicat 2 访客门户 Captive Portal - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.photonicat.cn/index.php?action=history&amp;feed=atom&amp;title=Photonicat_2_%E8%AE%BF%E5%AE%A2%E9%97%A8%E6%88%B7_Captive_Portal"/>
	<link rel="alternate" type="text/html" href="https://wiki.photonicat.cn/index.php?title=Photonicat_2_%E8%AE%BF%E5%AE%A2%E9%97%A8%E6%88%B7_Captive_Portal&amp;action=history"/>
	<updated>2026-08-31T05:13:31Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://wiki.photonicat.cn/index.php?title=Photonicat_2_%E8%AE%BF%E5%AE%A2%E9%97%A8%E6%88%B7_Captive_Portal&amp;diff=252&amp;oldid=prev</id>
		<title>Guangyingmao：​创建页面，内容为“{| class=&quot;wikitable&quot; |- ! 适用 / Applies to | Photonicat 2, photonicatWrt '''26.04+'''（含 OpenNDS、fw4/nftables 的固件）与 pcat-manager-web 2026-06 及以后版本 / Photonicat 2, photonicatWrt 26.04+ images (with OpenNDS on fw4/nftables) and pcat-manager-web builds from 2026-06 onward |}  '''访客门户（Captive Portal）'''功能让 photonicat 2 成为一台'''强制门户网关'''：连接它 WiFi/LAN 的访客必须先看到 Photonicat 品牌…”</title>
		<link rel="alternate" type="text/html" href="https://wiki.photonicat.cn/index.php?title=Photonicat_2_%E8%AE%BF%E5%AE%A2%E9%97%A8%E6%88%B7_Captive_Portal&amp;diff=252&amp;oldid=prev"/>
		<updated>2026-08-30T06:27:44Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“{| class=&amp;quot;wikitable&amp;quot; |- ! 适用 / Applies to | Photonicat 2, photonicatWrt &amp;#039;&amp;#039;&amp;#039;26.04+&amp;#039;&amp;#039;&amp;#039;（含 OpenNDS、fw4/nftables 的固件）与 pcat-manager-web 2026-06 及以后版本 / Photonicat 2, photonicatWrt 26.04+ images (with OpenNDS on fw4/nftables) and pcat-manager-web builds from 2026-06 onward |}  &amp;#039;&amp;#039;&amp;#039;访客门户（Captive Portal）&amp;#039;&amp;#039;&amp;#039;功能让 photonicat 2 成为一台&amp;#039;&amp;#039;&amp;#039;强制门户网关&amp;#039;&amp;#039;&amp;#039;：连接它 WiFi/LAN 的访客必须先看到 Photonicat 品牌…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 适用 / Applies to&lt;br /&gt;
| Photonicat 2, photonicatWrt '''26.04+'''（含 OpenNDS、fw4/nftables 的固件）与 pcat-manager-web 2026-06 及以后版本 / Photonicat 2, photonicatWrt 26.04+ images (with OpenNDS on fw4/nftables) and pcat-manager-web builds from 2026-06 onward&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''访客门户（Captive Portal）'''功能让 photonicat 2 成为一台'''强制门户网关'''：连接它 WiFi/LAN 的访客必须先看到 Photonicat 品牌的欢迎页并点击&amp;quot;同意并连接&amp;quot;，才能访问互联网——就像酒店、机场的 WiFi 登录页。这与 [[Photonicat 2 Smart WAN 智能上网|Smart WAN]] 正好相反：Smart WAN 是让设备'''通过'''别人的门户上网，本功能是让设备'''发布'''自己的门户。&lt;br /&gt;
&lt;br /&gt;
The '''Captive Portal''' feature turns the photonicat 2 into a '''captive gateway''': guests joining its WiFi/LAN must pass a Photonicat-branded splash page (&amp;quot;Agree &amp;amp; Connect&amp;quot;) before reaching the internet — like hotel or airport WiFi. It is the inverse of [[Photonicat 2 Smart WAN 智能上网|Smart WAN]]: Smart WAN gets the device '''through''' someone else's portal; this feature '''serves''' your own.&lt;br /&gt;
&lt;br /&gt;
== 中文说明 ==&lt;br /&gt;
&lt;br /&gt;
=== 工作原理 ===&lt;br /&gt;
* 基于 '''OpenNDS'''（nodogsplash 的持续维护继任者），原生运行在 fw4/nftables 防火墙上。&lt;br /&gt;
* 访客设备（iPhone/Android/Windows）连上 WiFi 后，操作系统的联网探测会'''自动弹出'''登录页；点击'''同意并连接'''即放行该设备的 MAC。&lt;br /&gt;
* 当前为'''一键点击直连'''模式（无需账号密码）；门户页为 Photonicat 品牌定制版，'''首次点击即完成授权'''，不会卡在中间页。&lt;br /&gt;
* 会话按 MAC 记录，超过 &amp;lt;code&amp;gt;sessiontimeout&amp;lt;/code&amp;gt; 后需重新点击。&lt;br /&gt;
&lt;br /&gt;
=== 开启方法 ===&lt;br /&gt;
# 打开管理界面 → '''设置（/settings）'''页面。&lt;br /&gt;
# 找到'''访客门户 Captive Portal''' 开关，打开即可；关闭同理。启停结果和失败原因都会在页面上提示。&lt;br /&gt;
# 开启后约 10–15 秒内防火墙规则重建，新客户端可能短暂无法弹页，属正常现象，稍候重试即可。&lt;br /&gt;
&lt;br /&gt;
=== 注意事项 ===&lt;br /&gt;
* '''访客必须通过 DHCP 获取地址'''：手动配置静态 IP 的客户端会被 OpenNDS 拒绝（403 &amp;quot;IP not allocated by dhcp&amp;quot;）。&lt;br /&gt;
* '''HTTPS 无法被拦截重定向'''：弹页依赖操作系统的 HTTP 探测。若没自动弹出，请手动访问任意 http:// 网站。&lt;br /&gt;
* 门户默认作用于 '''br-lan'''（含有线口）；生产环境建议为访客单独建一个 SSID/网络再启用。&lt;br /&gt;
* 与 Smart WAN 可'''同时使用'''：上行做别人门户的客户端、下行发布自己的门户，互不冲突。&lt;br /&gt;
* 管理页面、DNS 与系统更新域名（如 dl.photonicat.com）已加入'''白名单（walled garden）'''，认证前也可访问，避免把自己锁在门外。&lt;br /&gt;
&lt;br /&gt;
=== 命令行验证（SSH） ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ndsctl status          # 守护进程状态&lt;br /&gt;
ndsctl json            # 客户端及认证状态（authenticated / preauthenticated）&lt;br /&gt;
nft list ruleset | grep -i nds    # 查看门户防火墙规则&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
反向验证：第二台'''未点击同意'''的设备应无法访问互联网（https 站点超时），直到它也完成点击。&lt;br /&gt;
&lt;br /&gt;
== English ==&lt;br /&gt;
&lt;br /&gt;
=== How it works ===&lt;br /&gt;
* Built on '''OpenNDS''' (the maintained successor of nodogsplash), running natively on the fw4/nftables firewall.&lt;br /&gt;
* When a guest device (iPhone/Android/Windows) joins, the OS's connectivity probe '''auto-pops''' the login sheet; tapping '''Agree &amp;amp; Connect''' authorizes that device's MAC.&lt;br /&gt;
* Current mode is '''click-through''' (no credentials); the splash is Photonicat-branded and '''authorizes on the first tap''' — no stranded intermediate pages.&lt;br /&gt;
* Sessions are per-MAC and expire after &amp;lt;code&amp;gt;sessiontimeout&amp;lt;/code&amp;gt;, requiring a fresh tap.&lt;br /&gt;
&lt;br /&gt;
=== Enabling ===&lt;br /&gt;
# Open the manager UI → '''Settings (/settings)'''.&lt;br /&gt;
# Toggle '''Captive Portal''' on or off; the page reports success and surfaces start/stop failures with reasons.&lt;br /&gt;
# For ~10–15 s after enabling, nftables rules are rebuilding and new clients may briefly fail to get the splash — normal, just retry.&lt;br /&gt;
&lt;br /&gt;
=== Caveats ===&lt;br /&gt;
* '''Guests must use DHCP''': static-IP clients are rejected by OpenNDS (403 &amp;quot;IP not allocated by dhcp&amp;quot;).&lt;br /&gt;
* '''HTTPS cannot be intercepted''': the popup relies on the OS HTTP probe. If no sheet appears, browse any http:// site manually.&lt;br /&gt;
* The portal gates '''br-lan''' by default (including wired ports); for production, prefer a dedicated guest SSID/network.&lt;br /&gt;
* '''Coexists with Smart WAN''': captive client upstream, captive gateway downstream at the same time.&lt;br /&gt;
* The admin UI, DNS and update domains (e.g. dl.photonicat.com) are '''walled-garden allowed''' pre-auth, so you can't lock yourself out.&lt;br /&gt;
&lt;br /&gt;
=== CLI verification (SSH) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ndsctl status          # daemon state&lt;br /&gt;
ndsctl json            # clients and auth state (authenticated / preauthenticated)&lt;br /&gt;
nft list ruleset | grep -i nds    # portal firewall rules&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Negative test: a second device that has '''not''' tapped Agree must fail to reach the internet (https times out) until it does.&lt;br /&gt;
&lt;br /&gt;
[[Photonicat 2 Smart WAN 智能上网]] ｜ [[Photonicat 2 管理界面新功能 (2026)]]&lt;/div&gt;</summary>
		<author><name>Guangyingmao</name></author>
	</entry>
</feed>