Chrome 能联网,Codex 还是断网:Tailscale + VPS 出口节点实操记录
文章目录
这次配置里最容易误判的一步,不是安装 Tailscale,而是判断流量到底走了哪条线路。
我遇到的实际情况是:Windows 和手机已经显示 VPS 的公网 IP,Chrome 也能打开网页,但 Codex 仍然无法联网。最后查到的原因不是出口节点失效,而是 Windows 用户环境变量里还留着旧代理地址。
所以这篇除了记录搭建步骤,还会拆开三个容易混在一起的问题:
-
VPS 有没有正确成为出口节点。
-
Windows 和 Android 有没有真的选择它。
-
浏览器正常、桌面应用异常时,该从哪里继续排查。
本文以 AlmaLinux 9 VPS、Windows 和 Android 为记录对象。官方安装脚本也支持多种主流 Linux,但没有逐一实测的系统不写成已经跑通。
安全提醒:文中的服务器 IP、账号和密码均使用通用名称。不要公开 root 密码、Tailscale 授权链接、完整 VPS 公网 IP、邮箱、订单号或发票信息。
实测环境记录:
| 项目 | 当前材料能够确认的内容 |
|---|---|
| VPS 系统 | AlmaLinux 9 |
| 客户端 | Windows、Android |
| 具体系统版本 | Windows 11 25H2、Android 16 |
| Tailscale 客户端版本 | Windows / Linux 1.98.9、Android 1.98.2 |
| 实际测试日期 | 2026-07-26 |
下图是本次使用的 VPS 控制面板。公网 IP 和物理位置已经在原截图中遮挡:
[VPS 控制面板,公网 IP 与位置已遮挡](./assets/tailscale-vps-exit-node-v2/01-vps-control-panel-redacted.png)
最后会得到什么
配置完成后的路径是:
Windows / Android
↓
Tailscale
↓
AlmaLinux 9 VPS(出口节点)
↓
互联网
选择这台 VPS 作为 Exit Node 后,普通互联网流量会从 VPS 转发,对外显示的公网 IP 通常会变成 VPS 的公网 IP。目标网站是否可用、速度如何,仍受线路、服务器状态和网站策略影响。
开始前准备
- 一个 Tailscale 账号
Windows、Android 和 VPS 需要加入同一个 Tailscale 网络,也就是同一个 Tailnet。
- 一台 Linux VPS
本次使用 AlmaLinux 9。购买前确认:
-
有公网 IPv4。
-
支持 SSH。
-
支持 TUN/TAP。
-
月流量能够覆盖自己的使用量。
-
服务商允许当前用途。
套餐流量的重置周期以服务商控制面板为准,不要根据付款周期推断。
- Windows 和 Android 客户端
-
Android:Google Play 或 Tailscale 官方渠道
两台设备使用同一个 Tailscale 账号登录。
第一步:从 Windows 登录 VPS
在 Windows 中打开 PowerShell,运行:
ssh root@服务器IP
第一次连接出现下面的提示时输入 yes:
Are you sure you want to continue connecting (yes/no/[fingerprint])?
再输入 root 密码。SSH 不会显示星号或字符,输入完整密码后按回车。
看到类似提示符,说明已经登录:
[root@服务器名称 ~]#
这里使用 root 密码只为了完成首次配置。确认出口节点可用后,建议尽快改用 SSH 密钥,不要长期依赖 root 密码登录。
如果出现 Connection closed
依次确认 VPS 为 Running、SSH 端口正确、临时密码没有失效。必要时在服务商控制面板执行 Root password reset,等待几十秒后重试。
本次使用的 KiwiVM 控制面板中,重置入口如下:
[KiwiVM 的 Root password reset 页面](./assets/tailscale-vps-exit-node-v2/02-root-password-reset.png)
第二步:在 VPS 安装 Tailscale
登录 VPS 后运行官方安装脚本:
curl -fsSL https://tailscale.com/install.sh | sh
安装完成后运行:
tailscale up
终端会显示一次性授权链接。
-
复制链接。
-
在自己的浏览器中打开。
-
使用与 Windows、Android 相同的 Tailscale 账号登录。
-
完成连接授权。
这条链接相当于临时凭证,不要发给其他人。
授权后运行:
tailscale status
能够看到其他设备,说明 VPS 已加入 Tailnet。
下图表示 Tailscale 软件包已经安装完成,终端提示下一步运行 tailscale up:

第三步:开启 IP 转发并宣告出口节点
Linux 设备要转发其他设备的流量,需要先开启 IP forwarding。
在 VPS 中依次执行:
echo 'net.ipv4.ip_forward = 1' | tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | tee -a /etc/sysctl.d/99-tailscale.conf
sysctl -p /etc/sysctl.d/99-tailscale.conf
正常会看到:
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
本次实际执行成功后的终端如下,两项转发值都为 1:
[IPv4 和 IPv6 转发已经启用](./assets/tailscale-vps-exit-node-v2/04-ip-forwarding-enabled.png)
然后宣告出口节点:
tailscale set --advertise-exit-node
命令没有输出也可能正常,最终以管理后台的机器状态为准。
第四步:在管理后台批准
打开:
<https://login.tailscale.com/admin/machines\>
然后:
-
找到刚加入的 Linux VPS。
-
点击最右侧的 …。
-
打开 Edit route settings,中文界面通常显示为“编辑路线设置”。
-
勾选 Use as exit node。
-
保存。
先从机器右侧的菜单进入“编辑路线设置”:
[Tailscale 机器菜单中的编辑路线设置](./assets/tailscale-vps-exit-node-v2/05-edit-route-settings-menu.png)
再勾选“用作出口节点”并保存。部分中文界面可能把 Save 翻译成“节省”,这里实际表示保存:
[批准 Linux VPS 用作出口节点](./assets/tailscale-vps-exit-node-v2/06-exit-node-approved.png)
如果没有这个选项,回到 VPS 再运行一次:
tailscale set --advertise-exit-node
然后刷新管理后台。
第五步:让 Windows 和 Android 使用 VPS
Android
打开 Tailscale:
-
确认状态为 Connected。
-
打开 Exit Node。
-
选择 Linux VPS 的机器名称。
-
返回主页确认当前出口。
如果需要访问当前 Wi-Fi 下的打印机、NAS 或路由器后台,可以开启 Allow LAN access。只在信任当前局域网时使用;在公共 Wi-Fi 下不建议随手开启。
Windows
在系统托盘找到 Tailscale:
-
右键 Tailscale 图标。
-
打开 Use exit node 或 Exit nodes。
-
选择 Linux VPS。
如果列表里出现相似名称,不要只看 Recommended,选择后用公网 IP 验证。Windows 只需要使用 VPS 出口;若之前开启过 Run exit node,可以取消。
第六步:验证是否真的生效
- 检查 Tailscale 状态
VPS 中运行:
tailscale status
确认目标设备在线。
- 检查公网 IP
打开一个公网 IP 查询网站。结果应显示:
-
当前公网 IP 是 VPS 的公网 IP。
-
地区与 VPS 所在地区一致。
手机和 Windows 分别检查一次,不要只根据 Connected 判断。
下图是出口节点生效后,Windows 浏览器能够正常打开 Google 的结果:
[出口节点生效后 Google 可以正常打开](./assets/tailscale-vps-exit-node-v2/07-google-access-success.png)
公网 IP 查询截图包含真实服务器 IP,因此没有放入公开教程。实际验收时只需要确认查询结果与 VPS 控制面板中的公网 IP 和地区一致。
- 检查 OpenAI API 的网络可达性
Windows PowerShell 可以运行:
curl.exe --noproxy "*" -sS -o NUL -w "%{http_code}`n" --max-time 15 https://api.openai.com/v1/models
401 表示请求抵达 API,但没有有效 API 密钥;超时或无法解析域名则仍有网络、DNS、防火墙或代理问题。它只能证明这个端点可达,不能证明 ChatGPT、Codex 或账号状态一定正常。
浏览器能联网,但 Codex 仍然断网
这是本次配置里真正卡住我的地方。
Chrome 已经走 Tailscale 出口,Codex 却仍然尝试连接一个已经关闭的旧本地代理。原因是 Windows 用户环境变量中还保存着旧代理地址。
检查旧代理环境变量
-
按 Win + R。
-
输入:
sysdm.cpl
-
打开“高级”。
-
点击“环境变量”。
-
在“用户变量”中检查:
HTTP_PROXY
HTTPS_PROXY
ALL_PROXY
如果这些变量仍指向已经停用的地址,例如 127.0.0.1:端口,并且确定不再使用对应代理软件,只删除这几个旧代理变量。
不要修改无关的系统变量。
删除后重启 Windows,保持旧代理关闭,重新选择 VPS,再启动 Codex。桌面应用可能一直保留启动时读取的环境变量,只刷新浏览器不够。
只有域名打不开时,再处理 DNS
如果公网 IP 已经变成 VPS 的 IP,但域名仍无法解析,再检查 DNS。出口节点正常时,不需要为了“配置完整”强制改成 Cloudflare DNS。
打开:
<https://login.tailscale.com/admin/dns\>
可尝试:
-
在 Nameservers 中添加 Cloudflare Public DNS。
-
根据自己的 Tailnet 需求决定是否开启 Override DNS servers。
-
保留正常的 MagicDNS 配置。
Windows 中运行:
ipconfig /flushdns
然后把 Exit Node 切到 None 再重选 VPS,并重开目标应用。
100.100.100.100 是 Tailscale 客户端用于 DNS 处理的虚拟地址,看到它不等于 DNS 出错。
常见问题速查
| 现象 | 优先检查 | 处理方法 |
|---|---|---|
SSH 提示 Connection closed | VPS 状态、SSH 端口、root 密码 | 在 VPS 后台确认状态和端口,必要时重置密码 |
| 后台看不到 VPS | VPS 尚未登录 Tailnet | 运行 tailscale up 并完成网页授权 |
| VPS 不出现在 Exit Node 列表 | 未宣告或未批准 | 运行 tailscale set --advertise-exit-node,再到后台批准 |
| 选了出口节点,公网 IP 没变化 | 选错机器或切换未生效 | 切到 None 后重选 VPS,再检查公网 IP |
| IP 已变化,但域名打不开 | DNS 配置或缓存异常 | 再进入 DNS 排错,不要一开始就强制修改 |
| Chrome 能联网,Codex 不能 | 旧代理环境变量仍在生效 | 检查 HTTP_PROXY、HTTPS_PROXY、ALL_PROXY 并重启 |
| 手机选择出口后没网 | VPS 离线、DNS 异常或出口失效 | 先选 None 恢复网络,再逐项检查 |
日常开关、流量和维护
使用时确认 VPS 在线,开启 Tailscale,选择 Linux VPS,并保持其他全局代理关闭;不用时选择 Exit Node → None。
出口流量会消耗 VPS 套餐。高清视频、下载、同步和系统更新消耗较多,应定期查看后台。
首次配置后改用 SSH 密钥登录,定期更新系统与 Tailscale,不开放无关端口;设备丢失后立即从 Tailnet 移除。
常用命令:
tailscale status
systemctl status tailscaled
最终验收清单
-
[ ] Windows、Android 和 VPS 加入同一个 Tailnet
-
[ ] VPS 在管理后台显示 Connected
-
[ ] VPS 已开启 IPv4/IPv6 转发
-
[ ] VPS 已宣告并获准成为 Exit Node
-
[ ] Windows 和 Android 选择的是 Linux VPS
-
[ ] 公网 IP 查询结果与 VPS 地区一致
-
[ ] 旧全局代理已关闭
-
[ ] Windows 没有继续使用失效的旧代理环境变量
-
[ ] 浏览器和目标桌面应用分别完成联网验证
-
[ ] 只有出现 DNS 问题时,才修改 Tailnet DNS
-
[x] 已保存脱敏后的配置与验证截图
官方参考
-
Tailscale Linux 安装:<https://tailscale.com/docs/install/linux\>
-
Tailscale 出口节点:<https://tailscale.com/docs/features/exit-nodes/how-to/setup\>
-
Tailscale CLI:<https://tailscale.com/docs/reference/tailscale-cli\>
-
Tailscale DNS:<https://tailscale.com/docs/features/magicdns\>
-
OpenAI 网络建议:<https://help.openai.com/en/articles/9247338-network-recommendations-for-chatgpt-errors-on-web-and-apps\>
当前证据边界
本文根据一次已经成功运行的 AlmaLinux 9、Windows 和 Android 配置整理。命令与操作路径已按本次记录和官方资料核对,但不同 Linux 发行版、Tailscale 客户端版本、管理后台语言及 VPS 服务商界面可能不同。
本文已补入本次操作过程中的七张截图,包括 VPS 控制面板、root 密码重置、Tailscale 安装、IP 转发、出口节点批准和网页验证。含邮箱、完整公网 IP、Tailscale 地址或账号信息的原始截图未纳入教程,因此截图数量与实际操作记录并不一一对应。
沿着这个主题继续读
从一篇文章,找到相关的教程、经验和阅读路径。



