在部署 condev-monitor 时,我为了节约成本购买了一台便宜 VPS。实际使用后发现它是 IPv6-only,这也直接引出了后续的问题:部分仅提供 IPv4 入口的服务无法访问。
最明显的症状是:安装好 Git 后,clone 阿里云效 Codeup 私有仓库时报错 fatal: unable to access ...。并且访问其他外网资源报错。
排查过程
1. 先尝试 Git SSH 协议(失败)
我先按常规流程切换到 SSH 协议并配置密钥:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
cat ~/.ssh/id_rsa.pub
把公钥添加到 Codeup 后继续用 SSH 克隆,依旧失败。说明问题大概率不在账号权限或密钥本身。
2. 检查 DNS 和目标站点的 IPv6 支持
nslookup codeup.aliyun.com
dig codeup.aliyun.com AAAA
host codeup.aliyun.com
检查结果:
nslookup返回A记录(IPv4)dig AAAA没有记录(无 IPv6)
结论:codeup.aliyun.com 没有可用的 IPv6 入口。
因此在 IPv6-only 服务器上,直连会失败。
解决方案:给 IPv6-only 服务器补 IPv4 出站能力
我选择 Cloudflare WARP 作为出站代理。它的作用是把服务器的出站流量通过隧道转发,从而访问 IPv4 资源(例如 Codeup、GitHub、Docker Hub)。
这不会改变服务器的入站能力:
- 你原本通过 IPv6 做 SSH 仍然可用
- 服务器对外提供的 IPv6 服务也不受影响
1. 安装并启用 WARP 并 让 Git 走 WARP 代理
curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list
sudo apt update
sudo apt install -y cloudflare-warp
warp-cli register
warp-cli set-mode proxy
warp-cli connect
git config --global http.proxy http://127.0.0.1:40000
报错很多,选用一键脚本方案
3. 使用一键脚本快速配置双出口
更快得到“IPv6 原生 + IPv4 隧道”双出口,使用 fscarmen 的一键脚本:
wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh && bash menu.sh
验证结果
curl -4 ip.sb
curl -6 ip.sb
当你同时拿到 IPv4 与 IPv6 返回结果时,说明当前机器已经具备双出口能力。
最终状态
- SSH 继续走原生 IPv6,连接稳定
- 访问仅 IPv4 的代码托管和镜像源不再受限
- IPv6-only 服务器可以正常完成日常开发与部署任务