昨天遇到了一些莫名其妙的问题。
两台内网中的机器,一台CentOS作服务端,一台Windows 7 x64作客户端。
客户端能连上服务端,但是不到1分钟就自动断线,提示619错误,重新连接也连不上。
开始以为是路由、防火墙的原因,但是出于同网段的另一台Windows客户端到服务端的VPN连接很稳定。
Windows生成的诊断报告奇长,搜索半天只看到收到连接挂起信号,而没说原因是什么。
闭源就有这一点不好,问题在哪不好找。
于是怒上Wireshark。
断线的时候截到这个数据包:ICMP Protocol Unreachable
网络是畅通的,Windows 防火墙是关的,为什么会有这个问题?
于是以这个和pptp为关键词在google上搜索,终于找到了答案:
什么意思呢,把Windows防火墙【打开】,问题反而就解决了>_<
原因是Windows客户端有bug,会因为不知道什么奇怪的原因向服务端发出ICMP Protocol Unreachable数据包,后果是就是会主动把连接切断;
而打开Windows防火墙之后,防火墙阻挡了这个数据包,结果反而没问题了。于是这个问题就这么掩盖下来了,估计网上很多人连VPN连不上还以为是GFW、路由器、防火墙阻挡的问题。实际上是一个bug。
如果有谁能复现这个问题的话看看具体原因是什么,有精力的话给M$报个bug。