最可靠的方式是用ip link show,因MTU属链路层参数,而ifconfig已弃用、ip addr show可能省略mtu字段;查单个接口用ip link show dev eth0 | grep mtu,所有接口用ip link show | grep -E '^[0-9]+:|mtu',且lo的65536为特例不可参考物理网卡。

最可靠的方式是用 ip link show,不是 ifconfig,也不是 ip addr show —— 后两者要么已弃用,要么可能不显示 MTU。
为什么 ip link show 是唯一稳的查法
因为 MTU 是链路层(Layer 2)参数,ip link 专管这一层;而 ip addr 主要输出 IP 层(Layer 3)配置,某些精简环境或容器中会直接省略 mtu 字段。ifconfig 在多数现代发行版(如 Ubuntu 22.04+、RHEL 8+、统信UOS、麒麟KOS)中已被标记为废弃,部分内核甚至编译时就不带它了。
- 查单个网卡(比如
eth0):ip link show dev eth0 | grep mtu - 查所有网卡并快速定位:
ip link show | grep -E '^[0-9]+:|mtu'(第一行是接口名,下一行含mtu的就是它的值) - 注意回环口
lo的mtu 65536是特例,不能代表物理网卡能力
ip addr show 有时没显示 mtu 怎么办
这不是 bug,是设计行为:ip addr 默认只输出与地址相关的字段,MTU 不在必显列表里。有些系统(如某些 Alpine 容器、cloud-init 初始化的云主机)会彻底省略它。
- 别靠肉眼扫
ip addr show输出找mtu,容易漏看或误判 - 如果非要用
ip addr,加-d(debug 模式):ip -d addr show dev eth0,这时通常会强制打出mtu - 但依然推荐回归
ip link show—— 它不依赖调试开关,输出稳定
看到 state DOWN 的接口,mtu 值还有效吗
有效,但不可用。MTU 是接口的静态属性,只要设备存在,这个值就一直存着;但它只在 state UP 时参与实际收发逻辑。
-
ip link show dev eth0输出里若含state DOWN,说明该接口当前不转发任何包,改 MTU 或 ping 测试都无意义 - 想验证 MTU 修改是否生效,必须先确保状态是
UP:sudo ip link set dev eth0 up - 某些虚拟化平台(如 QEMU/KVM)在接口 down 状态下允许设 MTU,但重启后可能重置 —— 所以别跳过状态检查
真正容易被忽略的是:你看到的 MTU 值只是本地设置,不代表整条网络路径能撑住这个大小。路径 MTU(PMTUD)得用 ping -M do -s 实测,否则调再大也白搭。


















