wget 连接超时_centos机器可以ping,但是telnet端口超时,网站wget超时,访问超时的解决办法...

同样的坑居然踩了2次,上一次写的是centos release 6.7的内核参数的坑,现在忘记得一干二净。

同一个网站,有同事反映说打不开,他们用的有windows,mac,ubantu系统的,后面自己在虚机上装了个ubantu

16.04 LTS,发现访问这个网站也是不成功,用telnet

端口的方式测试也是超时,还以为是ubantu的系统设置的问题,改了网卡MTU,内核参数,DNS啥的,异常还是存在,此时是陷入了迷惑之中:

疑惑一:​我物理本机可以正常访问,而虚拟机却不可以,也用centos(公网上的)测试过,没问题

疑惑二:我们周围几个都是可以的,其他的都是不行的

疑惑三:对网站的IP可以ping通,但是telnet,wget,curl等方式却超时

对于疑惑一,这让我感觉是不是ubantu的系统有问题,还是谷歌了好久,一无所获,直到我发现我一台centos的虚机也是访问不了​,此时我从ubantu系统的方向转向了可以ping通但是telnet超时这个方向上,找到了这个帖子

https://2sitebbs.com/thread-1544-1-1.html​

改了一下服务端的内核参数

​在文件/etc/sysctl.conf增加

​net.ipv4.tcp_timestamps =

0​

sysctl -p

​让内核参数立即生效!

问题马上解决了

原理:​

​问题出在了 tcp

三次握手,ping 的通 icmp ok ,http ssh mysql 都不 ok

经过nat之后,如果前面相同的端口被使用过,且时间戳大于这个链接发出的syn中的时间戳,服务器上就会忽略掉这个syn,不返会syn-ack消息,表现为用户无法正常完成tcp3次握手,从而不能打开web页面。在业务闲时,如果用户nat的端口没有被使用过时,就可以正常打开;业务忙时,nat端口重复使用的频率高,很难分到没有被使用的端口,从而产生这种问题。​

只有客户端和服务端都开启时间戳的情况下,才会出现能ping通不能建立tcp三次握手的情况

在同一个内网的环境下,多人使用同一个公网IP进行上网,这样nat之后是大大增加了端口重复使用的概率,centos默认是开启了TCP/IP建立的timestamps,所以忽略syn导致TCP三次握手失败。​

参考:http://jpuyy.com/2015/06/net-ipv4-tcp_timestamps.html​

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值