MTU 9000配置问题:巨型帧无法正常工作
MTU 9000配置问题:巨型帧无法正常工作
嘿,我来帮你搞定这个巨型帧的问题!从你的描述来看,核心大概率是全路径MTU不一致或者某个环节的配置没生效,咱们一步步来排查和解决:
问题回顾
当把网络中所有相关接口都设置为MTU 9000后,大尺寸数据包的连接就会失败;但改回MTU 1500后,网络又能正常工作。下面先明确你的网络环境:
网络环境
- TrueNAS 服务器
- 服务器1:运行在Proxmox虚拟机中的TrueNAS,连接到Proxmox的网桥
vmbr2 - 服务器2:物理TrueNAS服务器,LAN直接连接到Proxmox服务器的
eno3物理接口
- 服务器1:运行在Proxmox虚拟机中的TrueNAS,连接到Proxmox的网桥
- VyOS 路由器:LAN接口(
eth1)设置为MTU 9000,WAN接口(eth0)设置为MTU 1500 - Proxmox 服务器:物理接口
eno3和网桥vmbr2已配置MTU 9000(根据你的描述推测)
排查与解决方案
1. 先确认全链路MTU的一致性
巨型帧的核心要求是:整条数据传输路径上的所有设备接口(包括交换机、路由器、网卡、网桥、虚拟网卡)必须统一设置MTU 9000,哪怕有一个环节没配置,大数据包就会因为无法分片(如果DF位开启)而直接丢失。你需要逐一检查:
- 若Proxmox的
eno3和物理TrueNAS之间有交换机,那交换机的对应端口必须开启MTU 9000(很多人会忽略交换机的配置) - Proxmox虚拟机内部的虚拟网卡(比如virtio网卡)是否也设置了MTU 9000(别只改宿主机的网桥)
- VyOS路由器与Proxmox连接的接口是否都正确设置了MTU 9000
- 你用来测试的客户端设备(比如笔记本、测试机)的网卡MTU是否也设为9000
2. 用带DF位的ping测试路径MTU
当数据包超过路径MTU时,如果数据包设置了Don't Fragment(DF)位,正常情况下中间设备会返回ICMP“需要分片但DF已设置”的报文,触发路径MTU发现。你可以用这个命令测试:
# Linux环境下测试,8972+28(ICMP头)=9000 ping -M do -s 8972 目标IP
如果这个ping失败,同时抓包看不到ICMP不可达报文,那大概率是中间设备(比如VyOS)屏蔽了ICMP报错,导致路径MTU发现失效,大数据包直接丢失。这时需要在VyOS里允许ICMP不可达报文的转发。
3. 检查Proxmox网桥与虚拟网卡的配置细节
Proxmox的MTU配置容易有坑,你可以做这些验证:
- 确认物理接口
eno3的MTU确实生效:
ip link show eno3
- 网桥
vmbr2的MTU必须和物理接口一致,并且虚拟机的虚拟网卡在Proxmox宿主机的硬件设置里也要同步MTU 9000,同时VM内部的网卡也要设置对应MTU - 有时候修改MTU后需要重启网桥才能生效:
ifdown vmbr2 && ifup vmbr2
4. 验证VyOS的MTU配置与转发
虽然你已经把VyOS的LAN口设为9000,但可以再确认配置是否生效:
# 在VyOS中查看接口MTU show interfaces ethernet eth1
另外,WAN口设为1500是正常的(公网不需要巨型帧),但要确保VyOS没有禁用路径MTU发现相关的设置,否则大数据包无法自动调整尺寸。
5. 逐步测试数据包大小定位问题
先确认MTU 1500的数据包正常:
ping -s 1472 目标IP
(1472+28=1500)
如果这个正常,再逐步加大数据包大小,找到刚好失败的阈值,这能帮你快速定位是哪个环节的MTU没跟上。
备注:内容来源于stack exchange,提问作者cyberquarks




