部分地区无法访问网站

背景

前一阵朋友叫我帮他点忙,在搭好apache之后,发现不能访问。
奇怪的是,我用不同地区的服务器访问这个网站,有的能通,有的不能通。
我检查了防火墙什么的都没有用。返回如下报错。
部分地区无法访问网站

本地用nmap扫描显示端口是开放的
部分地区无法访问网站

解决方案

根据这个报错信息,在网上也没有找到解决方法。
于是我尝试了一下抓包,发现第三次握手失败!
通过这篇文章 《TCP 第三次握手失败》,了解到了每次发往客户端的数据包都不会经过路由器。而客户端发给服务器的数据包每次都会经过路由器。
路由器上的防火墙再转发第3次握手的SYN包时,检查到服务器并没有将第2次握手SYN+ACK包,认为客户端的第3次握手的SYN是无效的,从而并没有转发这个数据包。导致服务器收不到第3次握手无法建立连接。

我最终选择在服务器内关闭ICMP重定向功能,等了十几分钟后发现网站可以访问了。

上一篇:计网-网络攻击


下一篇:三次握手和四次挥手