最准确查MTU值的方法是ip link show dev eth0 | grep mtu;临时修改需确保接口UP、禁用NetworkManager覆盖、并用ping -M do测试真实链路支持;永久生效须按发行版正确配置Netplan/ifcfg/nmcli并重载服务,最后务必用ip link verify。

Linux中配置网卡MTU(最大传输单元)不是IP地址配置的附属操作,而是独立的链路层参数设置。它不写在IP配置段里(比如ip addr add命令中),也不能靠修改子网掩码或网关来间接影响——必须显式指定。
怎么查当前MTU值才准
用ip link show dev eth0 | grep mtu最可靠。注意是link不是addr:
- ip addr show可能省略mtu字段,尤其在容器或精简系统中
- ifconfig已弃用,部分新内核或云镜像里根本不可用
- 回环口lo的65536是特例,不能当物理网卡参考
临时改MTU:三步缺一不可
- 接口必须处于UP状态:
ip link show dev eth0输出中要含state UP,否则ip link set dev eth0 mtu 1450静默失败 - 避开NetworkManager干扰:它会在几秒内覆盖你的设置,可先停用验证
sudo systemctl stop NetworkManager - 确认路径真实支持:设了1450不代表能通,要用
ping -M do -s 1422 8.8.8.8测试(1422+28=1450),失败就逐步减小-s值
永久生效:按发行版写对位置
改完配置文件不等于生效,必须配合对应服务重载:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- Ubuntu/Debian(Netplan):在
/etc/netplan/*.yaml对应网卡下加mtu: 1450,再运行sudo netplan apply - RHEL/CentOS:在
/etc/sysconfig/network-scripts/ifcfg-eth0中添加MTU=1450,再执行sudo systemctl restart network - 统信UOS/麒麟KOS:优先用
nmcli:sudo nmcli connection modify "有线连接" 802-3-ethernet.mtu 1450,然后nmcli connection down "有线连接" && nmcli connection up "有线连接"
验证是否真改成了
别信配置文件写了、命令没报错就等于成功。每次修改后都跑一遍:ip link show dev eth0 | grep mtu
特别在有systemd-networkd、cloud-init或虚拟化环境里,覆盖逻辑很隐蔽。










