iStoreOS + WireGuard 客户端踩坑
2025-6-12
| 2025-6-13
字数 813阅读时长 3 分钟
type
status
date
slug
summary
tags
category
icon
password
AI summary
Last edited time
Jun 13, 2025 02:23 AM

网络拓扑

notion image

遇到的问题

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

问题排查

能ping通,说明 VPN 网络已经建立成功
在 ECS 上通过 tcpdump 命令抓包,并再次使用 nacivate 打开数据库
将 example.pcap 下载到本地,通过 WireShark 打开查看
notion image
Fragmentation needed 服务端返回的包大小为 1515, 接收端只能接收的包大小为 1420,需要分包
notion image

解决方案

在 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 钳制可以防止数据包过大导致分片
  1. 网络设备兼容性:某些网络设备可能无法正确处理大尺寸数据包
  1. 优化传输效率:通过调整 MSS 可以提高网络传输效率

实现方式

MSS 钳制通常在以下位置实现:
  1. 防火墙/路由器:在网络边界设备上修改 TCP SYN 包中的 MSS 选项
  1. 操作系统:在主机 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 中
安装完成后重启
 

WireGuard 配置

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

📎 参考文章

 
  • OpenWrt
  • Network
  • WireGuard
  • 软路由
  • 如何做好技术评审MacOS 备忘录
    Loading...