1、基本情况:
我们的网络结构是中心段通过IPSEC VPN与远程的节点连接。在我们的现网中,通过此网络访问分支节点的系统、下载上传文件都没有问题,能够正常使用。
在一次项目改造中,我们业务需求是分支节点需要通过mySQL客户端连接到我总部的mySQL数据库。
如下是我的网络拓扑图:
2、分析过程
我在分支节点的测试如下:
连接数据库 OK
使用命令查询数据库 OK
使用命令查看数据库中的表 Falsed(机器处于假死状态,大概1小时候提示失败)
通过wireshark抓包提示:有写网络数据包丢失了。
通过以上数据我猜测可能是中间网络设备MTU不一致导致的,并且在中间设备中不允许分片。
根据以上的设想我登录分支机构某台设备,通过设置数据包大小来探测
如下是我测试的结果:
通过上图中的测试,基本说明是我的网络中分支与总部的网络中不允许分片导致的不能连接总部的数据库。
3、解决方法:
1、在所有的路由器或防火墙中查看是那台主机不允许分片导致的结果
2、把mysql服务器端和mysql客户端的MTU改成900字节以下,这样就导致不会出现分片的问题,但是传输的性能会收到很大的影响(默认传输的为65535字节)
我的解决办法是使用的方法2,因为特别着急,等有时间在更改网络了。
windows更改MTU的命令:在cmd下:
netsh interface ipv4 set subinterface "本地连接" mtu=900 store=persistent 其中‘本地连接’ 为你的网卡的名字