好文集ChatGPT Plus¥119

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。目标网站是否可用、速度如何,仍受线路、服务器状态和网站策略影响。

开始前准备

  1. 一个 Tailscale 账号

Windows、Android 和 VPS 需要加入同一个 Tailscale 网络,也就是同一个 Tailnet。

  1. 一台 Linux VPS

本次使用 AlmaLinux 9。购买前确认:

  • 有公网 IPv4。

  • 支持 SSH。

  • 支持 TUN/TAP。

  • 月流量能够覆盖自己的使用量。

  • 服务商允许当前用途。

套餐流量的重置周期以服务商控制面板为准,不要根据付款周期推断。

  1. Windows 和 Android 客户端

两台设备使用同一个 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

终端会显示一次性授权链接。

  1. 复制链接。

  2. 在自己的浏览器中打开。

  3. 使用与 Windows、Android 相同的 Tailscale 账号登录。

  4. 完成连接授权。

这条链接相当于临时凭证,不要发给其他人。

授权后运行:

tailscale status

能够看到其他设备,说明 VPS 已加入 Tailnet。

下图表示 Tailscale 软件包已经安装完成,终端提示下一步运行 tailscale up:

![AlmaLinux 中完成 Tailscale 安装](./assets/tailscale-vps-exit-node-v2/03-tailscale-installed.png)

第三步:开启 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\>

然后:

  1. 找到刚加入的 Linux VPS。

  2. 点击最右侧的 …。

  3. 打开 Edit route settings,中文界面通常显示为“编辑路线设置”。

  4. 勾选 Use as exit node。

  5. 保存。

先从机器右侧的菜单进入“编辑路线设置”:

[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:

  1. 确认状态为 Connected。

  2. 打开 Exit Node。

  3. 选择 Linux VPS 的机器名称。

  4. 返回主页确认当前出口。

如果需要访问当前 Wi-Fi 下的打印机、NAS 或路由器后台,可以开启 Allow LAN access。只在信任当前局域网时使用;在公共 Wi-Fi 下不建议随手开启。

Windows

在系统托盘找到 Tailscale:

  1. 右键 Tailscale 图标。

  2. 打开 Use exit node 或 Exit nodes。

  3. 选择 Linux VPS。

如果列表里出现相似名称,不要只看 Recommended,选择后用公网 IP 验证。Windows 只需要使用 VPS 出口;若之前开启过 Run exit node,可以取消。

第六步:验证是否真的生效

  1. 检查 Tailscale 状态

VPS 中运行:

tailscale status

确认目标设备在线。

  1. 检查公网 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 和地区一致。

  1. 检查 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 用户环境变量中还保存着旧代理地址。

检查旧代理环境变量

  1. 按 Win + R。

  2. 输入:

sysdm.cpl
  1. 打开“高级”。

  2. 点击“环境变量”。

  3. 在“用户变量”中检查:

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\>

可尝试:

  1. 在 Nameservers 中添加 Cloudflare Public DNS。

  2. 根据自己的 Tailnet 需求决定是否开启 Override DNS servers。

  3. 保留正常的 MagicDNS 配置。

Windows 中运行:

ipconfig /flushdns

然后把 Exit Node 切到 None 再重选 VPS,并重开目标应用。

100.100.100.100 是 Tailscale 客户端用于 DNS 处理的虚拟地址,看到它不等于 DNS 出错。

常见问题速查

现象优先检查处理方法
SSH 提示 Connection closedVPS 状态、SSH 端口、root 密码在 VPS 后台确认状态和端口,必要时重置密码
后台看不到 VPSVPS 尚未登录 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] 已保存脱敏后的配置与验证截图

官方参考

当前证据边界

本文根据一次已经成功运行的 AlmaLinux 9、Windows 和 Android 配置整理。命令与操作路径已按本次记录和官方资料核对,但不同 Linux 发行版、Tailscale 客户端版本、管理后台语言及 VPS 服务商界面可能不同。

本文已补入本次操作过程中的七张截图,包括 VPS 控制面板、root 密码重置、Tailscale 安装、IP 转发、出口节点批准和网页验证。含邮箱、完整公网 IP、Tailscale 地址或账号信息的原始截图未纳入教程,因此截图数量与实际操作记录并不一一对应。

全文完
查看原文

沿着这个主题继续读

从一篇文章,找到相关的教程、经验和阅读路径。

CodexCodex 中文入门与项目实战,从基本操作到网站、小程序和 Skills 工作流。