把 Wi-Fi 门户登录与 VPN 登录分开
两个不同的系统要的是同一件事:登录。门户管本地接入,VPN 管私有网络接入。在每个窗口问一句:谁才真正能校验这个秘密?
两个不同的系统会在你还没连上公有网络里任何有用的东西之前就请你登录:场所的 Wi-Fi 和你的 VPN 网关。它们在屏幕上长得一样,授权的事情却完全不同。门户决定这台设备能不能用本地网络,VPN 决定你能不能到达别处的私有网络。 我的办法是每个窗口只问一句:谁才真正能校验这个秘密?下面是我在酒店、机场和会议场所用的清单,也包括我什么时候直接停手不填。
把每次登录对应到真正校验它的服务
一次酒店连接可能涉及四道互相独立的检查,只有其中一部分会要你输入。先把它们按顺序摆好,因为屏幕很少告诉你它属于哪一步。
| Stage | Who checks it | What you give it | What it proves |
|---|---|---|---|
| Wi-Fi association | The access point | WPA2 passphrase or 802.1X credentials | That the device may join this SSID |
| Portal authorization | The venue or its portal provider | Room number, booking name, voucher, email or access code | That a guest may use local access |
| VPN authentication | Your gateway or identity provider | Client certificate, password, one-time code or SSO approval | That the user or device may enter the private network |
| Application login | Each internal service | That service's own account | That you may use that service |
办公室和大学里常见的 802.1X 网络会把前两行糊在一起。在那类网络里,Wi-Fi 登录本身就是一次对 RADIUS 服务器的身份校验,客户端可以出示路由身份,而真正的账号在加密交换里走。即便这样,校验针对的仍是接入网络,它并不授权隧道,VPN 网关也不会把它当成任何证据。
顺序比标签重要。强制门户之所以存在,是因为接入可以在关联之后才授予,场所因此可以把页面交给专门的服务商。IETF 的RFC 8952把门户当作独立组件,所以陌生域名是核对的理由,而不是诈骗本身的证据。把域名和场所的书面说明比一比,把字段和表格比一比。
检查门户可以问什么
门户字段对应的是资格,不是身份:房间号、预订姓氏、代金券码、印在钥匙套上的码、临时通行用的邮箱、接受条款。场所本来就知道谁订了房间,所以它可以比对这几项,而不需要学到任何能让它在别处冒充你的东西。
超出这份清单的任何一项都值得停一下。热点页无法校验你的域密码也是这样,它同样无法校验你的一次性 VPN 码、恢复码或私钥,也没有理由要。唯一正当的例外是组织管理的网络:办公室访客 SSID 或会议 Wi-Fi 可能把你转给你工作时已经在用的身份提供商。它仍然可辨:登录主机是你日常那个,同意页会写出你的租户,流程在可见的浏览器标签里打开。
营销邮件另算:用旅行别名就能把字段填掉,而不必交出工作身份。
检查 VPN 客户端是否在要它自己那份凭据
客户端只要它配置文件里配好的东西,所以预期出现的窗口是配置文件的属性,而不是你碰巧所在网络的属性。证书类配置通常先显示一个配置选择,然后静默连接。用户名加密码的配置会同时要两项,常常还带一次性码。SSO 配置会打开浏览器到身份提供商,再带着令牌回来。WireGuard 又是另一种:它用公钥认证设备,没有用户登录,所以一个要 WireGuard 用户名和密码的窗口,描述的并不是 WireGuard。
出发前读一遍配置。OpenVPN里auth-user-pass表示预期会出现密码提示,而cert、key或pkcs12意味着应该由证书来完成。如果平时不需要提示就能连上的配置突然要密码,就该怀疑这份配置没能加载证书,或者退回了别的方式。提示并不是邀请你把工作密码敲进任何一个冒出来的窗口。
没有哪个正当的 VPN 客户端会要房间号、门户代金券或 Wi-Fi 口令来当认证输入。出现这种情况,要么客户端不是它自称的东西,要么是强制门户在隧道成形之前劫持了流量,而你读的是一个做成登录样子的 HTML 页面。
在这五个条件上停手
这些是我停手的地方,而不是继续走一条看着合理的绕路。每一条核对起来都便宜,错了都很贵。
- 门户或 SSO 页面上出现证书或 TLS 警告。不要点过去进网。
- 页面索要只有 VPN 网关或身份提供商才能校验的秘密:域密码、一次性码、恢复码、私钥。
- 域名和场所的书面说明对不上,或者和你们组织为自家服务记录在案的登录主机对不上。
- 要求你安装根证书、配置文件或辅助程序,而它并非来自你的设备管理。
- 收到一个你没有发起的 MFA 确认,或者 VPN 客户端要酒店凭据。
替代方案不是换一个密码。用手机热点,到前台问清楚网络的确切名字和接入方式,把这个页面报给管网络的人或你的 IT 台。这些都不需要拿凭据去试探一个你无法归因的页面。
把故障归到正确阶段
两个阶段都过了以后,故障照样会发生,而错误信息通常会点出阶段,只要你按顺序读:关联、拿到地址、门户授权、隧道建立,然后是内网资源。因为门户码过期就去改 VPN 密码,既浪费时间,也把真正的问题留在原处。
几个测试能把阶段分开。门户登录之后,请求一个普通的公网 HTTPS 页面。如果回来的还是门户,说明那一层的授权从来没有完成。如果 VPN 客户端报连不上网关,问题在隧道之下:门户会话、名字解析,或者一个封了端口的网络。如果隧道起来了,只有一个内网主机名不通,那更该怀疑私有网络里的名字解析或策略。
门户会话也会独立于隧道过期。场所撤销接入时,已经建立的 VPN 连接会掉,尽管它的凭据从来没有错过。重新授权门户,然后重连 VPN,让它重新协商。这时候去轮换 VPN 密码什么也修不好,还可能把你锁在外面。
每个秘密只交给能校验它的系统,把和表格对不上的请求当成停车标志,而不是需要绕过去的一步。如果两个阶段都过了、隧道仍然拒绝,先抓下客户端的确切报错,再去动任何凭据。