惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Register - Security
The Register - Security
T
Troy Hunt's Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cybersecurity and Infrastructure Security Agency CISA
S
Securelist
G
GRAHAM CLULEY
S
Schneier on Security
S
Secure Thoughts
Know Your Adversary
Know Your Adversary
Forbes - Security
Forbes - Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The Hacker News
The Hacker News
Y
Y Combinator Blog
L
LINUX DO - 最新话题
D
Docker
S
Security @ Cisco Blogs
P
Proofpoint News Feed
V
Vulnerabilities – Threatpost
博客园_首页
T
The Blog of Author Tim Ferriss
Blog — PlanetScale
Blog — PlanetScale
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
V2EX - 技术
V2EX - 技术
NISL@THU
NISL@THU
MongoDB | Blog
MongoDB | Blog
阮一峰的网络日志
阮一峰的网络日志
P
Privacy & Cybersecurity Law Blog
C
Cisco Blogs
AWS News Blog
AWS News Blog
博客园 - 司徒正美
Martin Fowler
Martin Fowler
W
WeLiveSecurity
月光博客
月光博客
博客园 - 聂微东
N
News and Events Feed by Topic
Google DeepMind News
Google DeepMind News
D
DataBreaches.Net
T
Tenable Blog
IT之家
IT之家
MyScale Blog
MyScale Blog
N
Netflix TechBlog - Medium
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 三生石上(FineUI控件)
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
B
Blog
量子位
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
N
News and Events Feed by Topic
Vercel News
Vercel News

WireGuard

小火箭开启包括所有网络后, wg 失效 Wireguard For Windows 五年来首次推送了更新 - V2EX 跨省跨运营商, wireguard 丢包。wireguard 能否丢包自动重发 - V2EX 请教一个使用 WireGuard 后速度下降的问题 WireGuard 又可以用了??! Wireguard 为什么容易就断了?手动换 endpoint 非常麻烦 - V2EX wg 会被 isp 搞了? Wirguard IPv6 过墙会被阻断吗 - V2EX Wireguard 端点地址如何避免自动切换? - V2EX wg-easy 4 天前更新了,支持 IPV6 了。 - V2EX wireguard 客户端路由 ip 分流问题 - V2EX wireguard 内网通讯的延迟大概是多少 - V2EX 家有公网 IP,如何在宿舍开放端口跟朋友联机? - V2EX wireguard 一点小技巧发现 - V2EX WireGuard 的 udp 从国外穿透回来是不是会被阻断,现在用 frp 的 quic 一年多了很稳定,不知道要不要换 WireGuard - V2EX frp 配合 wireguard 稳定吗? - V2EX 阿里云中转 Wireguard 回家问题 - V2EX wg-easy 有流量通过但是无法访问内网 - V2EX 请教 tailscale 直连问题 - V2EX 两地的 Wireguard 在 Wi-Fi 下无法连接,但是在蜂窝网络下却可以,这是为什么? - V2EX Wireguard 自动重连的问题 - V2EX Wireguard 同时使用多台 iOS/Mac 设备通过 Surge 连接的问题 - V2EX wireguard 国内都不行了? - V2EX wireguard 配置 - V2EX clash.meta 连接 wireguard 回家访问局域网不通 - V2EX 请教一个 wireguard 的奇怪问题 - V2EX 用 wg 连回家相对于 ss/vmess 有什么优势吗 - V2EX 家宽用 Wireguard 被封了 - V2EX 问个问题, wireguard 组网成功后,如何设置通过域名互相访问指定设备? - V2EX 握手成功,但是只能单向 ping 通 - V2EX 不是程序员,不太懂 wireguard 的机制 - V2EX 请教个 wireguard 的问题 - V2EX Wireguard 的 allowIPS 问题 - V2EX DDNS 域名连家里的 WireGuard 会被运营商知道是通过域名访问的吗? - V2EX 关于 Wireguard 设置 Address /24 /33 疑问 - V2EX 快速部署 wireguard 的最佳实践是? - V2EX wireguard 能访问局域网但是不能访问本机 - V2EX 用 wireguard 组网跨境使用,如何实现境内外分流,现在通过 gre 隧道打通,所有的流量都走境外了,导致境内业务访问就比较慢了 - V2EX 如何调试 WireGuard 内核模块 - V2EX 我的笔记本使用 wireguard 正常连接家里内网 ip,却没有办法使用家里的 dns。 - V2EX wireguard 运行在 layer4 会造成很大的性能损耗? - V2EX 免费 WireGuard 节点 - V2EX 简直是丧心病狂,连 wireguard 官网也 TM 的 DNS 污染,日了狗了! - V2EX WireGuard 的 docker 容器如何为局域网做代理 - V2EX wiregaurd 打洞同 nat3 需要打洞很长时间,有个疑问和包大小数据发送间隔 - V2EX wiregaurd 用命令启动的,但是我想实现配置文件里面的 Table = off 效果,失败 - V2EX 编译 wireguard 的安卓客户端遇到点问题,开发语言是 Kotlin - V2EX unity web gl 中 上游路由不生效 netbird - V2EX “心跳间隔”该填多少比较好?
WireGuard MTU 设置心得 - V2EX
mantouboji · 2023-11-22 · via WireGuard

最近几个月都在折腾 wireguard ,从之前的小盒子,变成了 RouterOS 7 内置,一些经验总结下来,MTU 参数的设置值得一提,写下来供参考:

首先要了解,wireguard 协议增加的开销是 16 字节头加 16 字节尾,一共 32 字节。

如果你的 wireguard 两端都是 IPv4 地址连接,一个包(假设长度为 x Bytes )到达对方的 wireguard 虚拟网卡之后:

  1. 加上 wireguard 的 header 和 authentication tag ,此时长度为 x + 32
  2. 加上 udp header ,此时长度为 x + 32 + 8
  3. 加上 IPv4 header ,此时长度为 x + 32 + 8 + 20 为了不丢包,应该有 x + 32 + 8 + 20 <= 1500 (以太网的 MTU ),得到 x <= 1440 ,所以 wireguard 的 MTU 最大可设置为 1440

如果我们是直接在两台 LAN 连接的电脑上架设 wireguard ,考虑到以太网卡的 MTU 是 1500, 这时候可以选择的 wireguard MTU 就是

1500 - 32 - 8 - 20 = 1440

如果是通过 PPPoE 上网的,本身 PPPoE 的协议开销会占掉 8 个字节,所以上述数据要再减 8 。

1500 - 32 - 8 - 8 = 1432

如果你中间使用了 IPv6 协议连接两端,因为 v6 的地址长,协议开销变大,这时候在以太网和 PPPoE 下的最大 MTU 分别成了

1500      - 32 - 8 - 40 = 1420
1500 - 8  - 32 - 8 - 40 = 1412

缺省情况下,Linux 的 wg-quick 脚本会按照使用了 IPv6 的最大包络,从系统中各个网卡的 MTU 找到一个最小的,减去 80, 作为缺省 MTU 。这也就是 Linux 上常见到 wireguard 接口的 MTU 是 1420 的缘故。

实质上你用这个在纯 v4 网络上是有一点浪费的,但无所谓了,更保险。

这个时候还应该想到:你在本地是 PPPoE 连接,但是你的海外 VPS 人家可是 LAN 连接,所以会发生你这里 1492-80=1412 人家那里 1500-80=1420 的情况。好在这个-80 是按照 IPv6 最大包罗万象来选的,对于 IPv4 线路而言还有足够的余量,不至于产生影响。

核心是承载 wireguard 流量的 UDP 数据包不能被分包。

但是为了安全起见,还是应该在两端的配置文件里都指定同一个 MTU 数值为好(这种情况下 1412 是一个合理的选择)。

因为 wireguard 是走 UDP 协议的,会受到运营商 QoS 策略的限制,一段时间后断线或者限流,于是出现了一些把 UDP 伪装成 TCP 的办法。这些办法的配置各有不同,但重点是:它们都会添加额外的协议开销字节数,减少了 wireguard 的有效 MTU ,所以在使用了这些手段之后,必须要减少 wireguard 接口 MTU 配置。

对于最常用的两种伪装手段而言,udp2raw 是 44 字节,phantun 是 12 字节。于是,在普通 PPPoE 宽带上使用的 wireguard 接口 MTU 就应该是 udp2raw : 1412 - 44 = 1368 phantun: 1412 - 12 = 1400

最后,更戏剧性的来了,笔者丧心病狂购买了所谓的"国际精品网",还是 PPPoE 拨号,然而 MTU 却大幅度缩水成了 1442, 被电信内部的网络白白吃掉了 50 个字节(恐怖的是 MTU 小了,MRU 还是 1492 )。那么可怜的 wireguard MTU 就变成了:

UDP:1442 - 32 - 8 - 40 = 1362

所以,这时候你就需要按照自己的情况,选择合适的 MTU ,保证网络畅通了。

在下有段时间心血来潮,想着既然 VPS 和本地都已经有 IPv6 地址,那么顺序切换 IPv4 和 IPv6 地址来建立 wireguard 连接应该是一个有希望的方案。然而当时没有仔细考虑这个 MTU 设置,设成 IPv6 连接后各种不舒服……

再加上发现精品网只是 IPv4 部分,IPv6 走的路由依旧是普通的 163 线路,延迟巨大,所以彻底打消了这个念头。

但如果你一直是用普通的 163 线路或者其他运营商,那倒是可以一试。163 线路的 PPPoE MTU 还是 1492 呢。

总结一下:

正常普通 PPPoE 宽带:1412 正常普通 PPPoE 宽带套 phantun: 1400

精品网: 1362 精品网套 phantun: 1350 像我一样的洁癖强迫症:1280 + 32 + 32 = 1344 (算是个整数?)