MTU 设置错误导致防火墙或者路由器断网

2024-04-18 04:48

本文主要是介绍MTU 设置错误导致防火墙或者路由器断网,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    最近刷了新的Openwrt固件,发现ADSL拨号很慢,即WAN接口连接不上,有时候要等好几分钟才能连接上,有时候连接上了没过几分钟又断线了,又要等很久才能连接到。于是自己动手排查,用电脑直接连接网线去modem拨号,发现没问题。于是查了资料,发现很有可能是Openwrt路由器的MTU导致的。默认固件的MTU是1500。

【MTU科普一下】
    MTU (最大传输单元)是网络设备传输的信息包最大值。对于各种路由器或者防火墙,最佳的MTU值通常都是默认值。
有时,更改MTU值可提高设备工作性能,做起来很简单,但事实上,这样做往往会导致出现其他问题。最好保持MTU不变,
除非有以下情况出现:

  • 当连接不到 ISP 或者不能使用其他的因特网服务时,且他们的技术支持人员建议更改MTU值。
  • 当您使用 VPN,遇到性能问题时可以考虑更改MTU

    为了提高网络的某些性能,使用了可优化MTU 值的应用程序,而这引起了连通性和其他性能方面的问题一个信息包被发送到MTU值较小的设备时,将被分解为若干小块。
    理论上,在所有电脑、交换机、路由器、防火墙及您能访问到的因特网的所有设备上的MTU值应该设置为同一大小。但是您不能控制因特网上的 MTU 值,而事实上在一个局域网中的最佳MTU值取决于硬件、软件、无线接口等等。
    在一种情形下修改MTU的大小可使设备很好地工作, 但在其他方面却可能引起性能和连接性问题,当具有不同MTU值的设备相互通信时,信息包将会被分成多个以便能传给具有最小的MTU值的设备。
    Windows XP自动设置MTU ,换句话说,它使MTU对于各种应用综合性能最优化。微软的文章解释了使用Windows XP的宽带用户不能连接到ISP的原因,一旦网络设备分解了一个信息包,此信息包在到达目的地前一直保持分解的状态。

各种应用下的最佳MTU值
设置MTU大小是一个反复试验的过程: 由最大值1500开始下降,直至问题解决。使用下列值之一或许能解决一些由MTU值引起的问题:

  • 1500. 以太网信息包最大值,也是默认值。是没有PPPoE和VPN 的网络连接的典型设置。是各种路由器、网络适配器和交换机的默认设置
  • 1492. PPPoE 的最佳值
  • 1472. 使用 ping 的最大值 (大于此值的信息包会先被分解)
  • 1468. DHCP的最佳值
  • 1430. VPN 和PPTP 的最佳值
  • 576. 拨号连接到 ISP 的标准值

好了,注意一下,以上资料是正常普通情况下MTU的值,不同地区不同运营商不同机房或许也会导致MTU值的不一致!

如何查看MTU值呢?

电脑直接插网线到modem进行ADSL拨号上网,在cmd命令下输入:

netsh interface ipv4 show subinterfaces

 

如上图显示就是当地ADSL运营商MTU值。而并非固件默认的1500.

如何测试MTU值的最大值?

MTU值越大,发包量就大,发包时间减小,理论上是可以提高网络的。怎样测试自己的MTU值的最大值呢?

首先,在CMD命令下输入:

ping -f -l 1500 www.baidu.com

 

1500是默认值,先来测试一下是否能达到1500.

命令返回:“需要拆分数据包但是设置 DF。” 说明MTU值过大!我们把MTU值降低试试

ping -f -l 1450 www.baidu.com

 

PING值出来了,说明MTU设置1450可以通过。

再测试一下1451。

ping -f -l 1451 www.baidu.com

 

命令返回:“需要拆分数据包但是设置 DF。” 说明MTU值最大就是1450了。

于是有人就疑问,为什么在modem下测试是1478,而ping值测试 是1450?

上面ping得到的MTU值不能直接用于本地设置上,还应在此基础上加上28(数据包头大小28字节),因此最终在WAN设置页面修改MTU大小为1478。

最后,我就在路由器的WAN接口设置MTU值1478.

 

重启路由器之后发现拨号从此正常了!

这篇关于MTU 设置错误导致防火墙或者路由器断网的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/913798

相关文章

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

Pyserial设置缓冲区大小失败的问题解决

《Pyserial设置缓冲区大小失败的问题解决》本文主要介绍了Pyserial设置缓冲区大小失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录问题描述原因分析解决方案问题描述使用set_buffer_size()设置缓冲区大小后,buf

Feign Client超时时间设置不生效的解决方法

《FeignClient超时时间设置不生效的解决方法》这篇文章主要为大家详细介绍了FeignClient超时时间设置不生效的原因与解决方法,具有一定的的参考价值,希望对大家有一定的帮助... 在使用Feign Client时,可以通过两种方式来设置超时时间:1.针对整个Feign Client设置超时时间

C/C++错误信息处理的常见方法及函数

《C/C++错误信息处理的常见方法及函数》C/C++是两种广泛使用的编程语言,特别是在系统编程、嵌入式开发以及高性能计算领域,:本文主要介绍C/C++错误信息处理的常见方法及函数,文中通过代码介绍... 目录前言1. errno 和 perror()示例:2. strerror()示例:3. perror(

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

PyCharm如何设置新建文件默认为LF换行符

《PyCharm如何设置新建文件默认为LF换行符》:本文主要介绍PyCharm如何设置新建文件默认为LF换行符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录PyCharm设置新建文件默认为LF换行符设置换行符修改换行符总结PyCharm设置新建文件默认为LF