本文介绍一种 不使用跳板机在只有公网 IPv4 的本地网络下,登录仅有 IPv6 地址的 VPS 的实用方法。

背景问题

相较于双栈 VPS,IPv6-only 的 VPS 在一般情况下具有更好的性能与带宽,且价格相对较低。而国内大多数运营商仍然默认仅提供 IPv4 网络,导致无法从本地直接连接 IPv6-only 的 VPS,包括最基本的 SSH 登录操作。

常见的解决方法是:

  • 配置双栈跳板机或中转服务器

  • 使用 NAT64 / IPv6 隧道

这里提供一种利用Cloudflare反向代理,在只有 IPv4 的网络环境下,登录一个仅有 IPv6 地址的远程 VPS,且不需要额外跳板机的简单方法。

核心思路

  1. 在 IPv6-only 的 VPS 上部署一个 VLESS + WebSocket + TLS 代理服务

  2. 使用 Cloudflare 的反向代理

  3. 本地通过代理连接到 VPS,获取公网IPv6

  4. 使用 ssh 命令,通过代理通道访问 VPS 自身,从而实现登录

搭建方法步骤

1. 安装代理面板(以X-UI为例)

远程SSH登录VPS,以root用户执行安装脚本:

1
bash <(curl -Ls https://raw.githubusercontent.com/FranzKafkaYu/x-ui/956bf85bbac978d56c0e319c5fac2d6db7df9564/install.sh) 0.3.4.4

注意,位于IPv4网络环境下将无法访问纯IPv6的远程VPS!一般情况下,运营商会为蜂窝流量分配公网IPv6地址。可以为PC分享移动热点,暂时获得公网IPv6以完成节点配置。

2.配置代理节点

在浏览器访问 [VPS的IPv6地址]:X-UI的端口号,访问X-UI面板。

左侧边栏点击入站列表,新建:

  • 备注填写 vless+ws,协议选择 vless

  • 注意,由于 Cloudflare 官方只支持 HTTP(S)/WebSocket 等基于 HTTP 协议的反向代理服务。所以网络选择 ws,端口填写 https 常用端口,推荐8443。

  • 开启tls加密需要用到证书和密钥,这里暂时不开启。

3. 配置 Cloudflare 反代

  • 添加域名托管到 Cloudflare

  • 将子域名(如 vps.example.com)的 AAAA 记录指向 VPS 的 IPv6 地址

  • 启用橙色小云朵(Cloudflare 代理)

这使得来自 IPv4-only 网络的连接能通过 Cloudflare 的全球 CDN 节点接入,并转发到 IPv6-only 的 VPS。

4. 本地配置代理客户端

在X-UI面板复制节点链接,使用 v2rayN 等客户端添加 VLESS 节点,编辑节点配置:

将节点的网络地址,从 VPS 的 IPv6 修改为在 Cloudflare 上添加的子域名。

连接成功后,相当于在本地获取一个具备公网 IPv6 的出口代理,所有出站 TCP 流量都可以通过这条通道发送到公网。

5. 使用代理通道登录 VPS 自身

由于代理服务部署在 VPS 上,VPS 会收到 SSH 请求(即便目标地址是它自己),于是可以这样登录:

1
ssh root@<VPS的IPv6地址>

后记

事实上,Cloudflare 只能转发 HTTP / WebSocket 协议。之所以可以 SSH 远程登录,是因为:

  1. 通过 Cloudflare 成功连上了 VPS 上的 XRay 节点( HTTP 流量 )

  2. 在本地代理客户端内发起的 SSH 请求,被 XRay 作为普通 TCP 流量转发

  3. 目标地址就是 VPS 自己的 IPv6:22 端口

  4. VPS 上的 XRay 再反向连接自己,完成了连接

等效于通过一条 Web 通道获取公网 IPv6 出口,然后从 VPS 内部去连接 SSH 服务,其实这台 VPS 本身可以被视作跳板机。