本文介绍一种 不使用跳板机、在只有公网 IPv4 的本地网络下,登录仅有 IPv6 地址的 VPS 的实用方法。
背景问题
相较于双栈 VPS,IPv6-only 的 VPS 在一般情况下具有更好的性能与带宽,且价格相对较低。而国内大多数运营商仍然默认仅提供 IPv4 网络,导致无法从本地直接连接 IPv6-only 的 VPS,包括最基本的 SSH 登录操作。
常见的解决方法是:
配置双栈跳板机或中转服务器
使用 NAT64 / IPv6 隧道
这里提供一种利用Cloudflare反向代理,在只有 IPv4 的网络环境下,登录一个仅有 IPv6 地址的远程 VPS,且不需要额外跳板机的简单方法。
核心思路
在 IPv6-only 的 VPS 上部署一个 VLESS + WebSocket + TLS 代理服务
使用 Cloudflare 的反向代理
本地通过代理连接到 VPS,获取公网IPv6
使用
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 远程登录,是因为:
通过 Cloudflare 成功连上了 VPS 上的 XRay 节点( HTTP 流量 )
在本地代理客户端内发起的 SSH 请求,被 XRay 作为普通 TCP 流量转发
目标地址就是 VPS 自己的 IPv6:22 端口
VPS 上的 XRay 再反向连接自己,完成了连接
等效于通过一条 Web 通道获取公网 IPv6 出口,然后从 VPS 内部去连接 SSH 服务,其实这台 VPS 本身可以被视作跳板机。