红联Linux门户
Linux帮助

设置win7和Linux的MTU,如何检测windows和Linux网关的MTU

发布时间:2015-11-03 16:00:25来源:linux网站作者:xinlongabc

Windows

需要管理员权限执行:
1.查询到目前系统的MTU值。(显示本机MTU值与接口名称)

netsh interface ipv4 show subinterfaces

2.修改目前系统的MTU值。(不用重启,即时生效,eth1为接口名称,1450为设置值,persistent为永久生效)

netsh interface ipv4 set subinterface "eth1" mtu=1450 store=persistent


Linux

需要root权限:
1.Linux下可使用如下命令修改(临时生效)(网卡名:eth0,MTU设置值:1500)

# ifconfig eth0 mtu 1500

2.永久生效需要设置网卡配置文件,添加MTU=1500行,重启网卡。


如何检测网关的MTU
Window:
在本机打开dos窗口,执行: ping -f -l 1472 192.168.0.1 其中192.168.0.1是网关IP地址,1472是数据包的长度。
请注意,上面的参数是“-l”(小写的L),而不是“-1”。
如果能ping通,表示数据包不需要拆包,可以通过网关发送出去。
如果出现: Packet needs to be fragmented but DF set. 表示数据包需要拆开来发送。
此时,减少数据包长度,再执行上面的ping命令。从1400到1472之间多试几次,就能找到合适的数据包长度了。
把数据包长度加上数据包头28字节,就得到MTU的值。


Linux:

[CentOS7@user01 ~]$ping -M do  -s 1473 192.168.122.62
PING 192.168.122.62 (192.168.122.62) 1473(1501) bytes of data.
ping: local error: Message too long, mtu=1500
ping: local error: Message too long, mtu=1500
^C
--- 192.168.122.62 ping statistics ---
2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 999ms

[CentOS7@user01 ~]$ping -M do  -s 1472 192.168.122.62
PING 192.168.122.62 (192.168.122.62) 1472(1500) bytes of data.
1480 bytes from 192.168.122.62: icmp_seq=1 ttl=64 time=1.84 ms
1480 bytes from 192.168.122.62: icmp_seq=2 ttl=64 time=1.90 ms
^C
--- 192.168.122.62 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.842/1.873/1.905/0.053 ms