本文目录导读:

- 环境准备与拓扑
- WireGuard 配置(4in6 封装)
- 使用 QuickQ(假设为 iperf3)测试 WireGuard 4in6
- 验证 4in6 封装真实性(可选)
- 性能调优与注意事项
- 自动化测试脚本示例
- 常见问题排查
通过 QuickQ(假设为某网络测试工具,如 IPerf3/Qperf 变体或自定义测试脚本)测试 WireGuard 4in6 封装(即 IPv4 over IPv6 over WireGuard),核心是构建端到端 IPv6 传输通道,并在其内部承载 IPv4 流量,然后测量吞吐量、延迟和丢包,以下是具体步骤和命令示例(假设 QuickQ 类似 iperf3):
环境准备与拓扑
- 场景:两台主机 A(IPv6-WG 客户端)和 B(IPv6-WG 服务器),中间通过 IPv6 网络互联。
- 目标:在 WG 隧道内传输 IPv4 数据,通过 QuickQ 测试性能。
[主机A] -- IPv6公网 -- [主机B] | | WG隧道 (IPv6) WG隧道 (IPv6) | | 内部IPv4子网 内部IPv4子网 (10.0.0.1/24) (10.0.0.2/24)
WireGuard 配置(4in6 封装)
1 主机A 配置
# /etc/wireguard/wg0.conf [Interface] PrivateKey = <A的私钥> Address = 10.0.0.1/24 # 隧道内部 IPv4 地址 ListenPort = 51820 [Peer] PublicKey = <B的公钥> Endpoint = [2001:db8::2]:51820 # B的IPv6公网地址 AllowedIPs = 10.0.0.0/24 # 只允许隧道内IPv4流量
2 主机B 配置
# /etc/wireguard/wg0.conf [Interface] PrivateKey = <B的私钥> Address = 10.0.0.2/24 ListenPort = 51820 [Peer] PublicKey = <A的公钥> Endpoint = [2001:db8::1]:51820 # A的IPv6公网地址 AllowedIPs = 10.0.0.0/24
3 启动隧道
sudo wg-quick up wg0 # 检查状态 sudo wg show
使用 QuickQ(假设为 iperf3)测试 WireGuard 4in6
1 单一线程 TCP 吞吐量测试
- 服务端(主机B,内部IPv4):
iperf3 -s -B 10.0.0.2 # 绑定隧道内部IPv4地址
- 客户端(主机A,内部IPv4):
iperf3 -c 10.0.0.2 -t 30 # 通过WG隧道发送IPv4流量,测试30秒
2 多线程 UDP 测试
- 服务端:
iperf3 -s -B 10.0.0.2 --udp
- 客户端:
iperf3 -c 10.0.0.2 -u -b 100M -P 4 -t 30 # 4并发流,目标带宽100Mbps
3 双向/反向测试(验证对称性)
iperf3 -c 10.0.0.2 -d -t 30 # 自动双向测试 # 或分别测试反向: iperf3 -c 10.0.0.1 -R # 从B向A方向
4 延迟抖动测试(使用 ping 或 iperf3 的延迟模式)
# 方式1:ping 隧道内部IPv4 ping -c 100 10.0.0.2 # 方式2:iperf3 零窗口测试(需服务端支持 -Z) iperf3 -c 10.0.0.2 -Z -t 10 # 零拷贝/延迟模式
验证 4in6 封装真实性(可选)
为确保流量确实是通过 IPv6 承载的 IPv4,可在主机A上抓包:
# 抓取外层IPv6报文(eth0为物理接口) sudo tcpdump -i eth0 -n "host 2001:db8::2 and port 51820" # 抓取内层IPv4报文(wg0虚拟接口) sudo tcpdump -i wg0 -n "host 10.0.0.2"
- 外层抓包:应看到
IPv6 (src 2001:db8::1, dst 2001:db8::2) UDP (port 51820)。 - 内层抓包:应看到
IPv4 (src 10.0.0.1, dst 10.0.0.2)。
性能调优与注意事项
1 注意事项
- MTU 适配:WireGuard 默认 MTU=1420,若 IPv6 网络有 1280 字节限制,需手动调整:
# wg0.conf 中设置 Interface MTU=1280
- 防火墙:确保 IPv6 公网接口允许 UDP/51820 入站。
- 负载均衡:若 IPv6 路径有多路径,WG 可能产生乱序,可尝试
--pacing-timer(iperf3) 或--no-delay。
2 调优参数(iperf3 常见选项)
# Windowsize 调大以适配高延迟 iperf3 -c 10.0.0.2 -w 256k # 并行流数增加 iperf3 -c 10.0.0.2 -P 8 # 测试特定时间内吞吐率 iperf3 -c 10.0.0.2 -t 60 -i 5 # 60秒,每5秒输出一次结果
自动化测试脚本示例
将 QuickQ 封装为可重复执行的脚本 test_wg_4in6.sh:
#!/bin/bash SERVER_IP="10.0.0.2" DURATION=30 THREADS=4 echo "====== WireGuard 4in6 TCP Test ======" iperf3 -c $SERVER_IP -t $DURATION -P $THREADS echo "====== WireGuard 4in6 UDP Test ======" iperf3 -c $SERVER_IP -u -b 100M -t $DURATION -P $THREADS echo "====== Ping Latency ======" ping -c 50 $SERVER_IP | tail -3
常见问题排查
- 连接失败:检查
wg show的输出,确认latest handshake时间不为空;无 handshake 则检查 IPv6 连通性和防火墙。 - 性能异常低:检查内核模块
tcp_congestion_control(推荐bbr)和tcp_notsent_lowat设置。 - IPv4 路由冲突:确保 AllowedIPs 不泄露到物理接口(通过
ip route查看)。
通过以上步骤,即可基于 QuickQ(iperf3)系统测试 WireGuard 4in6 封装的实际性能。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。