纯 IPv6 服务器获得 IPv4 出站能力:NAT64 DNS + Cloudflare WARP 完整指南
为纯 IPv6 服务器配置 IPv4 出站能力的实战教程。先用 NAT64 DNS 临时应急,再用 Cloudflare WARP 获得长期稳定的解决方案。
问题:纯 IPv6 服务器的困境
你有一台纯 IPv6 服务器,但现实很残酷:
- GitHub、PyPI、Docker Hub 等主要服务还是 IPv4
- 无法下载软件包、安装脚本
- 即使有 IPv6 DNS,也解析不了 IPv4 资源
- 一切都卡在”网络不可达”
这篇文章就是为了解决这个问题。
解决方案:两步走
第一步:NAT64 DNS(临时应急)
用公益 NAT64 服务器临时获得 IPv4 访问能力,这样你就能下载 wgcf。
第二步:Cloudflare WARP(长期方案)
配置 WARP 获得稳定的 IPv4 出站,然后停用 NAT64。
第一步:配置 NAT64 DNS
什么是 NAT64?
NAT64 是 IPv6 到 IPv4 的转换技术。通过配置 NAT64 DNS 服务器,纯 IPv6 服务器可以访问 IPv4 资源。
公益 NAT64 服务器(欧洲):
2001:67c:2b0::42001:67c:2b0::6
配置
# 编辑 /etc/resolv.confcat > /etc/resolv.conf << 'EOF'nameserver 2001:67c:2b0::4nameserver 2001:67c:2b0::6EOF
# 验证cat /etc/resolv.conf
# 测试 DNS 解析nslookup github.com
# 测试连接curl -I https://github.com预期输出: HTTP/2 200
为什么只是临时方案? NAT64 服务通常收费,免费的公益服大多在欧洲。如果你的服务器在美国,流量要先去欧洲再回来,延迟高。不适合长期使用。
第二步:安装 wgcf
现在网络可用了,下载 wgcf 来配置 Cloudflare WARP。
下载 wgcf
cd /rootwget -6 -qO wgcf https://github.com/ViRb3/wgcf/releases/download/v2.2.30/wgcf_2.2.30_linux_amd64chmod +x wgcf
# 验证ls -lah wgcf注册 WARP 账户
cd /rootecho 'yes' | ./wgcf register输出示例:
Successfully created Cloudflare Warp accountAccount Id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx生成 WireGuard 配置
./wgcf generatecat wgcf-profile.conf第三步:配置 WireGuard 接口
Alpine Linux 缺少 ip6tables-restore,所以我们用手动方式配置。
手动启动 WireGuard
# 1. 复制配置文件cp /root/wgcf-profile.conf /etc/wireguard/wgcf.confchmod 600 /etc/wireguard/wgcf.conf
# 2. 创建 WireGuard 接口ip link add wgcf type wireguard
# 3. 设置私钥wg set wgcf private-key <(grep PrivateKey /root/wgcf-profile.conf | awk '{print $3}')
# 4. 配置 IP 地址(从配置文件提取)WARP_IPV4=$(grep "Address = " /root/wgcf-profile.conf | grep -oE "172\.[0-9]+\.[0-9]+\.[0-9]+" | head -1)WARP_IPV6=$(grep "Address = " /root/wgcf-profile.conf | grep -oE "2606:[0-9a-f:]+/128" | head -1)ip address add ${WARP_IPV4}/32 dev wgcfip address add ${WARP_IPV6} dev wgcf
# 5. 设置 MTUip link set mtu 1280 up dev wgcf
# 6. 配置 Peer(Cloudflare WARP 服务器)wg set wgcf peer bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo= \ allowed-ips 0.0.0.0/0,::/0 \ endpoint engage.cloudflareclient.com:2408
# 7. 配置路由(让所有 IPv4 流量走 WARP)ip route add default dev wgcf
# 8. 配置 DNScat > /etc/resolv.conf << 'EOF'nameserver 2606:4700:4700::1111nameserver 2606:4700:4700::1001nameserver 1.1.1.1nameserver 1.0.0.1EOF验证 WireGuard 状态
wg show wgcfip route showcat /etc/resolv.conf第四步:验证 IPv4 出站能力
测试 IPv4 连接
curl -4 ipinfo.io预期输出:Cloudflare IPv4 地址
{ "ip": "104.28.197.244", "org": "AS13335 Cloudflare, Inc.", ...}测试 IPv6 连接(确保不中断)
ping -c 1 2001:4860:4860::8888预期:正常响应
第五步:清理 NAT64 DNS
现在 WARP 已经配置好,停止使用 NAT64 DNS,改用 Cloudflare DNS。
cat > /etc/resolv.conf << 'EOF'nameserver 2606:4700:4700::1111nameserver 2606:4700:4700::1001nameserver 1.1.1.1nameserver 1.0.0.1EOF一键配置脚本
如果想一次性配置,用这个脚本:
#!/bin/bash
# 1. 临时配置 NAT64 DNSecho "配置 NAT64 DNS..."cat > /etc/resolv.conf << 'EOF'nameserver 2001:67c:2b0::4nameserver 2001:67c:2b0::6EOF
# 2. 下载 wgcfecho "下载 wgcf..."cd /rootwget -6 -qO wgcf https://github.com/ViRb3/wgcf/releases/download/v2.2.30/wgcf_2.2.30_linux_amd64chmod +x wgcf
# 3. 注册 WARP 账户echo "注册 WARP 账户..."echo 'yes' | ./wgcf register
# 4. 生成配置echo "生成 WireGuard 配置..."./wgcf generate
# 5. 配置 WireGuardecho "配置 WireGuard..."cp /root/wgcf-profile.conf /etc/wireguard/wgcf.confchmod 600 /etc/wireguard/wgcf.conf
ip link add wgcf type wireguardwg set wgcf private-key <(grep PrivateKey /root/wgcf-profile.conf | awk '{print $3}')ip address add 172.16.0.2/32 dev wgcfip link set mtu 1280 up dev wgcfwg set wgcf peer bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo= \ allowed-ips 0.0.0.0/0,::/0 \ endpoint engage.cloudflareclient.com:2408ip route add default dev wgcf
# 6. 配置 DNSecho "配置 DNS..."cat > /etc/resolv.conf << 'EOF'nameserver 2606:4700:4700::1111nameserver 2606:4700:4700::1001nameserver 1.1.1.1nameserver 1.0.0.1EOF
# 7. 验证echo "验证 IPv4 出站..."curl -4 ipinfo.io
echo "验证 IPv6 连接..."ping -c 1 2001:4860:4860::8888
echo "配置完成!"故障排查
WireGuard 接口创建失败
错误: RTNETLINK answers: File exists
解决:
ip link delete wgcf 2>/dev/nullip link add wgcf type wireguardDNS 无法解析
错误: curl: (6) Could not resolve host
解决:
cat /etc/resolv.confping -c 1 2606:4700:4700::1111nslookup github.com 2606:4700:4700::1111IPv4 出站失败
错误: curl: (7) Failed to connect
解决:
wg show wgcfip route showwg show wgcf peersIPv6 连接中断
症状: SSH 连接断开
原因: 默认路由指向 wgcf,导致 IPv6 流量也走 WARP
解决: 只让 IPv4 流量走 WARP(见第三步的路由配置)
关键要点
| 项目 | 说明 |
|---|---|
| NAT64 DNS | 临时方案,用来下载 wgcf;不适合长期使用 |
| WARP | 长期方案,提供稳定的 IPv4 出站能力 |
| WireGuard | WARP 的底层协议,需要手动配置(Alpine 不支持 wg-quick) |
| DNS 配置 | 使用 Cloudflare DNS(IPv6 优先),确保 DNS 查询可达 |
| 路由配置 | 只让 IPv4 流量走 WARP,IPv6 保持原样 |
参考资源
- NAT64 服务列表: http://nat64.xyz
- Cloudflare WARP: https://www.cloudflare.com/warp/
- wgcf 项目: https://github.com/ViRb3/wgcf
- WireGuard 文档: https://www.wireguard.com/
第六步:安装 komari-agent(可选)
如果你想在那个 Alpine 服务器上安装监控代理,可以用 komari-agent。
下载并安装 komari-agent
# 下载安装脚本wget -qO- https://raw.githubusercontent.com/komari-monitor/komari-agent/refs/heads/main/install.sh | sudo bash -s -- \ -e https://monitor.031003.xyz \ -t YOUR_TOKEN_HERE \ --disable-web-ssh \ --month-rotate 22验证安装
# 检查进程ps aux | grep komari-agent | grep -v grep
# 查看日志tail -20 /tmp/komari-agent.log故障排查进阶
WARP Peer 握手失败
症状: wg show wgcf 显示 peer 信息,但没有 latest handshake 时间
原因: Peer 握手失败,WARP 连接未真正建立
解决:
# 删除旧接口ip link delete wgcf 2>/dev/null
# 重新创建并配置ip link add wgcf type wireguardwg set wgcf private-key <(grep PrivateKey /root/wgcf-profile.conf | awk '{print $3}')ip address add 172.16.0.2/32 dev wgcfip link set mtu 1280 up dev wgcfwg set wgcf peer bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo= \ allowed-ips 0.0.0.0/0,::/0 \ endpoint engage.cloudflareclient.com:2408ip route add default dev wgcf
# 等待握手sleep 5
# 验证wg show wgcf | grep "latest handshake"komari-agent 无法连接到监控服务器
症状: komari-agent 日志显示 Failed to connect to WebSocket
原因: 网络连接不稳定或 DNS 解析失败
解决:
# 检查 DNScat /etc/resolv.confnslookup monitor.031003.xyz
# 检查 WARP 状态wg show wgcf
# 检查路由ip route show
# 重启 komari-agentpkill -f komari-agentsleep 2nohup /opt/komari/komari-agent -e https://monitor.031003.xyz -t YOUR_TOKEN > /tmp/komari-agent.log 2>&1 &总结
通过 NAT64 DNS + Cloudflare WARP 的组合方案,我们成功为纯 IPv6 服务器配置了 IPv4 出站能力。这个方案既解决了初期的网络问题(无法下载软件),又提供了长期稳定的解决方案。
下次遇到纯 IPv6 服务器,你就知道怎么办了。
觉得这篇文章怎么样?
点个赞,让更多人看到!
相关文章
OpenClaw 怎么安装和更新?curl脚本、npm、Docker 全对比
一文讲清 OpenClaw 的 4 种安装方式:官方脚本、npm 全局、源码、容器;并给出对应更新、回滚与排障策略。
在 OpenClaw 服务器上安装并使用 Playwright + Chromium(含 Xvfb)
在无桌面 Linux 服务器上部署 Playwright + Chromium,用于访问、点击、输入与截图,并总结与 OpenClaw 的集成方式与常见坑。
从开发到分享:Docker + GitHub 完整部署指南(以 Domain Checker 为例)
详细讲解如何开发一个 Docker 应用,推送到 Docker Hub,上传到 GitHub,以及别人如何快速使用你的项目。包含完整的代码示例和最佳实践。
进化!我在用 OpenClaw 智脑写博客
告别繁琐的 Git 操作,通过 Telegram 与 OpenClaw 智脑对话,实现全自动化的博文撰写与发布流程。

评论区