插件窝 干货文章 ifconfig中MTU参数是什么意思

ifconfig中MTU参数是什么意思

MTU 分片 字节 头部 194    来源:    2025-05-09

MTU(Maximum Transmission Unit,最大传输单元)是 ifconfig 命令输出中的一个重要网络参数,它定义了单个数据包在网络上能传输的最大字节数(包括头部和数据部分)。以下是详细解析:


MTU 的核心作用

  1. 限制数据包大小

    • 例如,以太网(Ethernet)默认 MTU 为 1500 字节(含 IP 头部 20 字节 + TCP 头部 20 字节 + 实际数据 1460 字节)。
    • 若数据超过 MTU,会被分片(Fragment)传输,影响效率。
  2. 影响网络性能

    • MTU 过小:增加分片和重组开销,降低吞吐量。
    • MTU 过大:可能导致数据包被丢弃(尤其在路径中存在较小 MTU 的设备时)。

MTU 的常见场景

  1. 不同网络的默认值

    • 以太网(Ethernet):1500 字节(最常见)。
    • PPPoE(宽带拨号):1492 字节(因额外头部占用 8 字节)。
    • VPN/隧道(如 GRE、IPSec):需减小 MTU(例如 1400)以避免分片。
  2. 路径 MTU 发现(PMTUD)

    • 设备通过 ICMP 消息探测路径中的最小 MTU,动态调整以避免分片。

如何查看/修改 MTU(Linux 示例)

  1. 查看当前 MTU

    ifconfig | grep mtu
    # 或
    ip link show | grep mtu
    

    输出示例:
    eth0: mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000

  2. 临时修改 MTU

    sudo ifconfig eth0 mtu 1492
    # 或
    sudo ip link set dev eth0 mtu 1492
    
  3. 永久修改 MTU

    • 编辑网络配置文件(如 /etc/network/interfaces)添加:
      post-up /sbin/ifconfig eth0 mtu 1492

MTU 问题排查

  1. 测试最佳 MTU

    ping -s 1472 -M do 8.8.8.8  # Linux(1472 + 28字节头部 = 1500)
    
    • 若收到 Frag needed 或超时,需减小 -s 值。
  2. 常见错误

    • VPN 连接失败:通常因 MTU 不匹配,尝试降低客户端/服务端 MTU。
    • 网页加载不全:可能因 PMTUD 失败,需检查防火墙是否阻塞 ICMP。

总结

  • MTU 是网络性能调优的关键参数,需根据实际网络环境(如 VPN、PPPoE)调整。
  • 分片会降低效率,应尽量通过 PMTUD 或手动配置避免。
  • 修改 MTU 前,建议先用 ping 测试路径中的实际限制。

遇到具体问题时,可结合 tcpdump 抓包分析分片行为或检查路由设备的 MTU 配置。