iStoreOS + WireGuard 客户端踩坑

769 字
4 分钟
iStoreOS + WireGuard 客户端踩坑

网络拓扑#

image 15
image 15

遇到的问题#

PC 连接 RDS 时,获取不到数据表相关的任何信息,navicat 客户端一直转圈,像是等待数据接受

问题排查#

能ping通,说明 VPN 网络已经建立成功

在 ECS 上通过 tcpdump 命令抓包,并再次使用 nacivate 打开数据库

Terminal window
sudo tcpdump -w example.pcap

将 example.pcap 下载到本地,通过 WireShark 打开查看

image 16
image 16

Fragmentation needed 服务端返回的包大小为 1515, 接收端只能接收的包大小为 1420,需要分包

image 17
image 17

解决方案#

在 OpenWrt 中开启 MSS 钳制

MSS 钳制(Maximum Segment Size Clamping)是 TCP/IP 网络中的一种技术,用于调整 TCP 连接的最大段大小(MSS)参数。

什么是 MSS?#

MSS(Maximum Segment Size)是 TCP 协议中的一个重要参数,表示 TCP 连接中能够传输的最大数据段大小(不包括 TCP 头)。它通常比 MTU(最大传输单元)小 40 字节(IPv4)或 60 字节(IPv6),为 IP 和 TCP 头留出空间。

MSS 钳制的作用#

MSS 钳制主要用于解决以下问题:

  1. 路径 MTU 发现问题:当路径 MTU 发现失败时,MSS 钳制可以防止数据包过大导致分片
  2. 网络设备兼容性:某些网络设备可能无法正确处理大尺寸数据包
  3. 优化传输效率:通过调整 MSS 可以提高网络传输效率

实现方式#

MSS 钳制通常在以下位置实现:

  1. 防火墙/路由器:在网络边界设备上修改 TCP SYN 包中的 MSS 选项
  2. 操作系统:在主机 TCP/IP 栈中设置 MSS 上限

常见应用场景#

  • VPN 连接中,由于额外封装头需要减小 MSS
  • PPPoE 连接(通常 MTU 为 1492,MSS 相应减小)
  • 避免 IP 分片,特别是在有 NAT 的环境中

WireGuard 安装#

iStore 版本 22.03 branch git-24.034.55136-8c924fc

系统默认自带的镜像源中,wireguard 相关的包搜索不到,需要手动从 https://downloads.openwrt.org/releases/packages-22.03/x86_64/luci/ 下载,确认以下版本可以安装在 22.03 版本的 openwrt 中

luci-proto-wireguard_git-24.047.55738-270b737_all.ipk

luci-app-wireguard_git-23.018.72712-6d712c3_all.ipk

安装完成后重启

WireGuard 配置#

  1. 网络 > 接口:添加新接口,协议中选择 WireGuard VPN
    image 18
    image 18
  2. 网络 > 接口:选择创建好的 WireGuard 接口,编辑
    image 19
    image 19
  3. 在常规选项卡中,填入 WireGuard 的私钥、公钥信息,因为不是作为 WireGuard 服务端,监听端口可以不填,ip 地址按照服务端预先设置好的规则填入(vpn网络的 ip 网段划分,IPv4,IPv6 都输入)
    image 20
    image 20
  4. 在对端选项卡中,添加 WireGuard 服务端的信息
    image 21
    image 21
  5. 在防火墙设置中,通过自定义新增一个 wiregurad 区域
    image 22
    image 22
  6. 网络 > 防火墙:转发相关设置 这里的 MSS 钳制非常重要,一开始没勾选,导致后面本地访问远程阿里云端的 MySQL 时,数据库响应异常
    image 23
    image 23
    image 24
    image 24
    image 25
    image 25
    image 26
    image 26
  7. 网络 > 接口:重启 WireGuard 接口
    image 27
    image 27
  8. 状态 > WireGuard:查看 WireGuard 的状态
    image 28
    image 28

wg-eazy 重置密码#

Terminal window
# https://wg-easy.github.io/wg-easy/v15.1/guides/cli/
docker compose exec -it wg-easy cli db:admin:reset --password '123456789012'

📎 参考文章#

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

iStoreOS + WireGuard 客户端踩坑
https://blog.sephy.top/posts/istoreos--wireguard-客户端踩坑/
作者
虾米
发布于
2025-06-12
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
虾米
coder
分类
标签
站点统计
文章
61
分类
4
标签
52
总字数
64,663
运行时长
0
最后活动
0 天前
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.13.9
文章许可
CC BY-NC-SA 4.0