欢迎光临
我们一直在努力

国内上网环境中不同的人为网络故障分析

sanfan

众所周知,在国内上网会遇到各种各样不同的人为网络故障,使得我们无法正常访问很多网站。但由于很多人并不熟悉网络,很多时候会无法区分不同的网络故障,导致明明是网络故障,却认为是服务器故障;或明明是服务器故障,却认为是网络故障的情况。我觉得有必要说明一下不同网络故障的特征,以及区分它们并解决它们的方法。

  在国内上网环境中,我们经常遇到的网络故障有:DNS劫持、DNS污染、IP封锁、服务器防火墙IP过滤、服务器宕机、基于关键词的TCP连接重置、无状态的TCP连接重置、SSL证书过滤、SSL劫持、HTTP会话劫持等网络故障。下面我就依次进行说明:
  1、DNS劫持
  DNS劫持会导致我们访问了一些不存在的或不稳定的网站的时候,访问到的却是电信114搜索,或访问Google却显示了Baidu的主页。
  如果需要确认自己是否处在DNS劫持的环境中,我们可以在Windows命令行cmd中使用Windows自带的网络诊断工具nslookup查找一个不存在或不稳定的域名进行一下网络诊断:
  C:\>nslookup www.SomeRandomDomainName.com
  Server: ns-pd.online.sh.cn
  Address: 202.96.209.133
  Non-authoritative answer:
  Name: www.SomeRandomDomainName.com
  Address: 218.83.175.155
  我们看到,www.SomeRandomDomainName.com本应该是一个不存在的域名,DNS服务器应该告诉我们这个域名不存在,但我们却看到DNS服务器告诉我们这个域名的IP为218.83.175.155(不同地区的114搜索的IP都不同,可能得到的IP并不是218.83.175.155,而是自己所在地区的114搜索的服务器IP地址),而这个IP却是114搜索的IP,导致我们在浏览器中访问这个网站时看到的是114搜索的网页。
  如果需要解决DNS劫持的问题,可以把自己的域名解析服务器换乘国外的,比如OpenDNS或Google DNS(8.8.8.8或者8.8.4.4)。
  解决之后我们再次使用nslookup查找一下这个网站:
  C:\>nslookup www.SomeRandomDomainName.com
  Server: google-public-dns-a.google.com
  Address: 8.8.8.8
  *** google-public-dns-a.google.com can’t find www.SomeRandomDomainName.com: Non-existent domain
  我们看到DNS服务器正确的告诉了我们这个域名不存在,我们不会被劫持到114搜索了。
  不过“对于DNS污染的劫持,使用OpenDNS也无法解决问题”。那么接下来,我就介绍一下DNS污染。
  2、DNS污染
  由于DNS劫持可以通过把域名解析服务器更换为国外的来解决问题,所以系统需要使用DNS污染来封锁一些域名。这样,即使使用国外的域名服务器也得不到服务器的正确IP,所以也就无法访问这些服务器了。比如现在著名的微博客始祖twitter主页就遭到了DNS污染。
  如果需要确认域名遭到了DNS污染而不是其他的故障,首先要了解,DNS劫持是由国内的域名服务器完成的,所以我们把域名服务器换成国外的就可以解决问题;而DNS污染是由系统完成的,所以即使更换了域名服务器,系统仍旧可以发送伪造的域名解析结果替换正确的解析结果。所以我们可以通过使用一个不存在的国外IP作为我们的域名服务器进行诊断究竟是DNS劫持还是DNS污染。我们仍旧通过使用nslookup进行网络诊断,选一个不存在的国外IP为144.223.234.234:
  C:\>nslookup twitter.com 144.223.234.234
  DNS request timed out.
  timeout was 2 seconds.
  *** Can’t find server name for address 144.223.234.234: Timed out
  Server: UnKnown
  Address: 144.223.234.234
  Name: twitter.com
  Address: 93.46.8.89
  我们看到,由于144.223.234.234不存在,理应没有任何返回。但我们却得到了一个错误的IP:93.46.8.89。我们再测试一下刚才被DNS劫持的IP的情况:
  C:\>nslookup www.SomeRandomDomainName.com 144.223.234.234
  DNS request timed out.
  timeout was 2 seconds.
  *** Can’t find server name for address 144.223.234.234: Timed out
  Server: UnKnown
  Address: 144.223.234.234
  DNS request timed out.
  timeout was 2 seconds.
  DNS request timed out.
  timeout was 2 seconds.
  *** Request to UnKnown timed-out
  我们看到,www.SomeRandomDomainName.com 没有返回结果,那么它没有被DNS污染。
  如果要解决DNS污染,我们只能使用各种加密代理进行远程DNS解析、VPN或利用系统的漏洞了。
  3、IP封锁
  这里IP封锁指的是国内把国外服务器的IP加入了系统的黑名单,导致大部分地区甚至全国无法直接访问服务器。由于系统是分布式的,所以有可能出现部分地区可以访问,部分地区不能访问的情况。比如现在知名的云存储服务Dropbox的主页,就是遭到了IP封锁。
  首先我们把域名服务器设置为国外的,排除了DNS劫持的问题。之后我们诊断一下dropbox的域名是否遭到了DNS污染:
  C:\>nslookup www.dropbox.com 144.223.234.234
  DNS request timed out.
  timeout was 2 seconds.
  *** Can’t find server name for address 144.223.234.234: Timed out
  Server: UnKnown
  Address: 144.223.234.234
  DNS request timed out.
  timeout was 2 seconds.
  DNS request timed out.
  timeout was 2 seconds.
  *** Request to UnKnown timed-out
  显然也没有遭到DNS污染。那么接下去我们可以在没有过滤ICMP协议的网络环境中(有些小区宽带和有些公司的内部网络过滤了ICMP协议,无法使用tracert),我们可以在Windows命令行cmd中使用Windows自带的网络诊断工具tracert进行一下网络诊断是网站遭到了IP封锁还是其他的故障:
  C:\>tracert -d www.dropbox.com
  Tracing route to www.dropbox.com [174.36.30.70]
  over a maximum of 30 hops:
  1 18 ms 19 ms 26 ms 58.35.240.1
  2 15 ms 20 ms 29 ms 58.35.240.1
  3 13 ms 10 ms 14 ms 124.74.20.45
  4 14 ms 14 ms 15 ms 124.74.209.137
  5 10 ms 15 ms 14 ms 61.152.86.58
  6 * * * Request timed out.
  7 * * * Request timed out.
  8 * * * Request timed out.
   ……
  我们看到,最后一个IP为61.152.86.58(不同地区的IP不一样),之后就不通了,显然在61.152.86.58附近遭到了IP封锁。那么我们打开ip138查一下61.152.86.58是谁在掌控:
  您查询的IP:61.152.86.58
  * 本站主数据:上海市 电信
  * 参考数据一:上海市 电信
  * 参考数据二:上海市 电信
  显然,问题在上海电信这里(其他地区可能是地区的本地电信),而不是dropbox服务器的问题。
  4、服务器防火墙IP过滤和服务器宕机
  把这两点放在一起写是因为这两种情况的对外表现是一样的。但和IP封锁却有很大区别。IP封锁的最后一个可达IP是中国的,而服务器防火墙IP过滤和服务器当机时的最后一个可达IP却是国外的。比如我们拿75.101.142.137做试验,之前在上面部署过alexa的网站,现在这个IP上暂时没有服务器(可以看成服务器宕机):

未经允许不得转载:VPS指南™ » 国内上网环境中不同的人为网络故障分析

支付宝扫码打赏 微信扫码打赏

如果文章对您有帮助,欢迎移至上方按钮打赏稀饭

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址