Files
2025-12-24 13:42:39 +08:00
..
2025-12-24 13:42:39 +08:00
2025-12-24 13:42:39 +08:00
2025-12-24 13:42:39 +08:00
2025-12-24 13:42:39 +08:00
2025-12-24 13:42:39 +08:00
2025-12-24 13:42:39 +08:00
2025-12-24 13:42:39 +08:00
2025-12-24 13:42:39 +08:00
2025-12-24 13:42:39 +08:00
2025-12-24 13:42:39 +08:00
2025-12-24 13:42:39 +08:00
2025-12-24 13:42:39 +08:00
2025-12-24 13:42:39 +08:00
2025-12-24 13:42:39 +08:00
2025-12-24 13:42:39 +08:00
2025-12-24 13:42:39 +08:00
2025-12-24 13:42:39 +08:00
2025-12-24 13:42:39 +08:00
2025-12-24 13:42:39 +08:00
2025-12-24 13:42:39 +08:00

WireGuard 诊断和修复工具集

概述

这个目录包含了用于诊断和修复 Mac Studio 到美国服务器 (85.239.233.16:51820) 的 WireGuard 连接问题的完整工具集。

诊断结果摘要(已更新)

问题:Mac Studio 无法接收服务器返回的数据(单向连接问题)

真实根因:⚠️ ISP 深度包检测(DPI)干扰 WireGuard 流量

关键证据:

  • WireGuard 在 ClashX 运行时正常工作
  • ClashX 停止后立即失败
  • UDP 端口 51820 可达,但 WireGuard 握手失败
  • 这表明 ISP 正在检测并干扰 WireGuard 协议流量

客户端公钥:BDeFmU7QKH9Vi8CQyYe9/3v0aTJygzw9fCb8XODdgWw=

快速开始

⚡ 立即解决(临时方案)

重启 ClashX(最快速度恢复连接):

# 1. 启动 ClashX
open -a ClashX

# 2. 等待 10 秒让 ClashX 完全启动
sleep 10

# 3. 在 WireGuard 应用中:
#    - 断开当前连接
#    - 重新连接

# 4. 测试
ping -c 5 10.7.0.1

🔍 诊断测试

运行 ClashX 影响测试:

./test-with-clashx.sh

这个脚本会:

  • 检测当前 WireGuard 状态
  • 引导你测试 ClashX 的影响
  • 确认问题是否为 DPI 干扰

🛠️ 长期解决方案

部署 udp2raw(推荐,彻底解决):

# 1. 运行自动配置向导
./setup-udp2raw-client.sh

# 2. 按照向导提示配置服务端

# 3. 启动 udp2raw 客户端
~/udp2raw-wg-start.sh

# 4. 修改 WireGuard 配置
#    在 WireGuard 应用中将 Endpoint 改为:
#    Endpoint = 127.0.0.1:51820

# 5. 测试连接
ping -c 5 10.7.0.1

文件说明

文件 说明
DPI-BYPASS-SOLUTION.md ⭐ DPI 绕过解决方案(必读)
test-with-clashx.sh ClashX 影响测试脚本(诊断 DPI 问题)
setup-udp2raw-client.sh udp2raw 客户端自动配置向导
wg-diagnose.sh 客户端网络诊断脚本
WIREGUARD-DIAGNOSIS.md 完整的技术诊断报告
QUICK-FIX.md 原始快速修复指南(服务端配置)
get-client-pubkey.sh 获取客户端公钥工具
server-config-template.conf 服务端 WireGuard 配置模板
README.md 本文件

客户端配置

当前配置:

[Interface]
PrivateKey = uLzvZ1CYwryItn3R6QrUL6KzMp21/qzgxNWHQUwkyWA=
Address = 10.7.0.2/24
DNS = 1.1.1.1

[Peer]
PublicKey = 4L6WaSvuJhLXBQkZHdbaL4ZtsnZnk7wIg0i2ztnIkw4=
AllowedIPs = 10.7.0.0/24
Endpoint = 85.239.233.16:51820
PersistentKeepalive = 25

派生的客户端公钥:

BDeFmU7QKH9Vi8CQyYe9/3v0aTJygzw9fCb8XODdgWw=

诊断信息

客户端状态

  • ✅ WireGuard 接口:utun6
  • ✅ IP 地址:10.7.0.2
  • ✅ MTU:1420
  • ✅ 路由配置:正确
  • ✅ UDP 端口 51820:可达
  • ✅ DNS 配置:已应用
  • ⚠️ UDP 连接测试:成功(nc 测试通过)
  • ❌ WireGuard 握手:失败(ping 10.7.0.1 不通)
  • 🔑 关键发现:ClashX 运行时正常,停止后失败

问题本质

这不是配置问题,而是网络层面的协议识别和干扰!

ISP(中国电信/联通/移动)使用深度包检测(DPI)技术:

  1. ✅ 允许 UDP 端口 51820 的连接
  2. ❌ 但检测到 WireGuard 协议特征后进行干扰
  3. 🔐 ClashX 的代理隧道可以绕过 DPI 检测

常用命令

客户端(Mac)

# 查看 WireGuard 接口
ifconfig utun6

# 查看路由
netstat -rn | grep 10.7

# 测试连接
ping 10.7.0.1

# 诊断
./wg-diagnose.sh

服务端

# 查看 WireGuard 状态
sudo wg show

# 查看配置
sudo cat /etc/wireguard/wg0.conf

# 查看日志
sudo journalctl -u wg-quick@wg0 -f

# 重启服务
sudo systemctl restart wg-quick@wg0

# 检查防火墙
sudo iptables -L -v -n

# 检查 IP 转发
sysctl net.ipv4.ip_forward

故障排除流程

如果 WireGuard 无法连接

  1. 快速测试 DPI 问题

    ./test-with-clashx.sh
    
  2. 临时解决(立即恢复连接)

    open -a ClashX  # 启动 ClashX
    # 在 WireGuard 应用中重新连接
    
  3. 长期解决(推荐)

    ./setup-udp2raw-client.sh  # 配置 udp2raw
    

解决方案对比

方案 难度 性能 稳定性 依赖
重启 ClashX ⭐ 简单 ⭐⭐ 中等 ⭐⭐⭐ 稳定 需要 ClashX 运行
udp2raw ⭐⭐⭐ 复杂 ⭐⭐⭐⭐ 优秀 ⭐⭐⭐⭐ 很稳定 服务端需配置
更换端口 ⭐⭐ 中等 ⭐⭐⭐⭐ 优秀 ⭐⭐ 可能无效 服务端需配置

预期结果

修复成功后:

$ ping -c 3 10.7.0.1
PING 10.7.0.1 (10.7.0.1): 56 data bytes
64 bytes from 10.7.0.1: icmp_seq=0 ttl=64 time=185.123 ms
64 bytes from 10.7.0.1: icmp_seq=1 ttl=64 time=184.567 ms
64 bytes from 10.7.0.1: icmp_seq=2 ttl=64 time=185.234 ms

--- 10.7.0.1 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss

需要帮助?

如果按照指南操作后问题仍然存在,请提供:

  1. ./wg-diagnose.sh 的完整输出
  2. 服务端 sudo wg show 输出
  3. 服务端配置文件(隐藏私钥)
  4. 服务端 WireGuard 日志

参考资源


最后更新:2025-11-29