type
status
date
slug
summary
tags
category
icon
password
AI summary
Last edited time
Jun 13, 2025 02:23 AM
网络拓扑

遇到的问题
PC 连接 RDS 时,获取不到数据表相关的任何信息,navicat 客户端一直转圈,像是等待数据接受
问题排查
能ping通,说明 VPN 网络已经建立成功
在 ECS 上通过 tcpdump 命令抓包,并再次使用 nacivate 打开数据库
将 example.pcap 下载到本地,通过 WireShark 打开查看

Fragmentation needed
服务端返回的包大小为 1515, 接收端只能接收的包大小为 1420,需要分包
解决方案
在 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 钳制主要用于解决以下问题:
- 路径 MTU 发现问题:当路径 MTU 发现失败时,MSS 钳制可以防止数据包过大导致分片
- 网络设备兼容性:某些网络设备可能无法正确处理大尺寸数据包
- 优化传输效率:通过调整 MSS 可以提高网络传输效率
实现方式
MSS 钳制通常在以下位置实现:
- 防火墙/路由器:在网络边界设备上修改 TCP SYN 包中的 MSS 选项
- 操作系统:在主机 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 配置
- 网络 > 接口:添加新接口,协议中选择 WireGuard VPN

- 网络 > 接口:选择创建好的 WireGuard 接口,编辑

- 在常规选项卡中,填入 WireGuard 的私钥、公钥信息,因为不是作为 WireGuard 服务端,监听端口可以不填,ip 地址按照服务端预先设置好的规则填入(vpn网络的 ip 网段划分,IPv4,IPv6 都输入)

- 在对端选项卡中,添加 WireGuard 服务端的信息

- 在防火墙设置中,通过自定义新增一个 wiregurad 区域

- 网络 > 防火墙:转发相关设置 这里的 MSS 钳制非常重要,一开始没勾选,导致后面本地访问远程阿里云端的 MySQL 时,数据库响应异常




- 网络 > 接口:重启 WireGuard 接口

- 状态 > WireGuard:查看 WireGuard 的状态
