查MTU唯一可靠方式是ip link show dev eth0 | grep mtu;临时修改需确保接口UP、未被NetworkManager覆盖、驱动支持;永久生效须按发行版规范配置并reload验证。

怎么查 MTU 值才不会被误导
别信 ifconfig 或 ip addr show 的输出——前者已弃用,后者常省略 mtu 字段,尤其在容器、精简内核或 NetworkManager 管理的环境中。真正可靠的方式只有一种:
- 查单个接口:
ip link show dev eth0 | grep mtu,找紧挨着接口名那行里的mtu 1500 - 查所有接口:
ip link show | grep -E '^[0-9]+:|mtu',避免漏掉 DOWN 状态但 MTU 仍有效的网卡(比如刚插拔的 USB 网卡) -
lo接口的mtu 65536是特例,不能当物理网卡参考;容器里看到的值,也不等于 host 上的真实值
临时改 MTU 却没生效?先看这三件事
sudo ip link set dev eth0 mtu 1450 执行无报错 ≠ 实际生效。常见静默失败点:
- 接口必须是
state UP:如果ip link show dev eth0显示state DOWN,命令直接忽略,不报错也不生效 - 被
NetworkManager或systemd-networkd覆盖:它们会在几秒内把 MTU 拉回配置值;运行nmcli device show eth0 | grep MTU可验证是否被接管 - 驱动/虚拟化限制:VMware Workstation 旧版、某些 SmartNIC、Docker Desktop 内置子系统,设
9000可能完全无效,连ip link show都不更新
永久生效该走哪条路径
不同发行版持久化机制完全不同,写错位置等于白改:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- Ubuntu/Debian(Netplan):
/etc/netplan/*.yaml中对应 interface 下加mtu: 1450,然后必须执行sudo netplan apply - RHEL/CentOS:
/etc/sysconfig/network-scripts/ifcfg-eth0加MTU=1450,再sudo systemctl restart NetworkManager或network(取决于谁在管) - 统信UOS / 麒麟 KOS / 启用了 NetworkManager 的桌面环境:优先用
nmcli connection modify "System ens33" 802-3-ethernet.mtu 1450,之后务必nmcli connection reload && nmcli connection down "System ens33" && nmcli connection up "System ens33"
改完怎么验证它真在用
别只信配置文件写了,得看运行时实际值:
- 再次运行
ip link show dev eth0 | grep mtu—— 这是唯一可信的运行时确认方式 - 链路级验证:用
ping -M do -s 1422 8.8.8.8(1422 + 28 = 1450),不通说明中间某段链路不支持该 MTU;需逐步减小-s值试探 - 注意交换机、对端服务器、云平台 VPC 设置也要一致,否则单边改只会导致分片或丢包
最常被忽略的是:改完配置后没 reload 连接、没 down/up、也没验证运行时值,结果以为生效了,其实流量还在走默认 1500。

















