如何寻找hosts的可用IP

hosts文件经常因为这样那样的原因而失效。有的时候的确是IP地址变了,也有的时候是因为伏地魔的封锁列表又更新了。不管是哪种原因,我们都得重新寻找一个可用的IP。

最简单的方法,当然是做伸手党——找别人要。不过这对于IP地址本身是一种风险。知道的人越多,影响就越大,于是食死徒也就越有可能找到它,并且干掉它。并且有的时候一个人孤立无援,联系不到别人的时候,总不能束手待毙啊?!所以,最好还是自己动手。


如何寻找漏网之鱼

有的公司或组织实力比较强,一个域名有好多台服务器。伏地魔其实很懒,并没有发现所有的服务器。我们如果能找到那些漏网之鱼,就可以继续让hosts再飞一会儿了。

找漏网之鱼,通常需要一些工具。
只会ping是不够的,ping的本意并不是用来作域名解析。ping一次只能拿到某个域名的一条A记录,但实际上出于负载均衡的角度考虑,大公司的域名通常都会有多个A记录。
换用高级一点的工具,例如nslookup,就能一次拿到多个IP地址了。要是污染很强,也可以抓包。多请求几次,手头的地址列表就比较全了。

还要提醒的一点是:DNS服务器一定要用可靠的境外货,比如Google的8.8.8.8/8.8.4.4。慢是慢一点,但至少不骗人。国内各种ISP提供的DNS,关键时刻会撒谎的。


如何验证找到的IP地址可用

因为还有别的找地址的方法,所以本来是想在后面谈这个问题的。但首先要验证地址是否可用,然后才会去考虑换一种方法,于是还是提前在这里来讲吧。

验证地址是否可用,首先就是ping。因为ping值和丢包率也是一个要重点考察的因素——如果你介意网速的话。接下来还要拿telnet看看443端口有没有被无理由地reset掉。
根据验证结果,大致有以下几种情况:

  1. 能ping通,443都通:恭喜你,十有八九是找到了。
  2. 能ping通,443不通:服务器就没开HTTPS服务。就算80端口可用,但因为会被关键词审查,可用性不高。
  3. 能ping通,443被封:这种就是属于被【蹲守】了,换别的吧。
  4. 不能ping通,443通:除了不容易测速,其它都还不错,而且隐蔽性更高一些,也就是说更不容易被干掉。
  5. 不能ping通,443不通:被IP黑洞了,换别的吧。

以上只是简单地测试联通性。如果联通性都有问题,那这个IP地址也就可以不用考虑了。但仅仅能联通,并不意味着可用。最终,还是得替换到自己已有的hosts里面去实地测试一下,才知道好使不好使。有的时候,新IP换上去会报HTTPS证书不对,但因为是同一个域名下的主机,强行确认后也许还能用。但有的就不行,无法通用,只能丢弃再找。


找到的地址都被封了怎么办

先别气馁。有的跨国公司的实力相当强,同一个域名针对不同的国家或地区会有不同的IP地址作为镜像。可以用搜索引擎,也可以借用网上某些在线域名解析服务,来找这些我们从本地可能无法获得的IP地址。比如Google在日本的IP,就可以拿来一用,速度也不慢。


还是找不到怎么办

好吧。我们承认光头塌鼻子蛇佬的手下也有认真负责的变态疯子:有可能某个域名无论国内还是国外的地址都被干掉了。但是,某些公司的实力实在是非常的强大(比如Google和Facebook)。它们部署了如此多的服务器,并且形成了【云】,以至于每台服务器都能够用来干其它服务器的事情。我们只要找到了某一台属于这个公司的服务器,不管它存放在哪个角落,目前被用来从事什么冷僻的工作,我们都可以让它来为我们服务。怎么样?有点儿范纽文用传感器来对抗易莫金人的感觉了吧?

根据服务的【云】化程度不同,可用的服务器数量也有所不同。Google可用的服务器就相当的多,Facebook就要少得多,Amazon我没有评估过,相信也不少。那么,怎么找到这些被藏起来的服务器呢?一般有下面这些办法,各位可以补充:

  • Chrome的DNS记录:有一些已经广为人知的域名/主机名,被大统领盯得很紧。但新启用的、生僻的就未必。这些主机名的解析结果,都会在Chrome中留下记录。常常留意,或许就能发现Google新的主机IP(的地址段)。
  • 根据已知IP推算:这种规模的公司,服务器一放就是好几百台,而且为了方便管理,常常都放在一个机房,机柜挨着机柜。所以IP地址通常也是靠在一起的。如果我们知道了某个IP属于Google,那么完全可以对它附近的两、三个C段地址进行一下扫描,看看哪些能ping通,哪些443开着。这种时候,通常需要SuperScan(吐个槽:我觉得3.0比4.0好用)或者nmap之类的工具协助一下。


我猜我猜我猜猜猜

说了这许多,其实大概的思路都差不多:大胆地联想,大胆地猜,猜中了就赚了。
接下来讲一个综合运用的思路:

首先,如果我们从某个Google的已知域名,解析并(按照上面说的方法)推算出了一个以前没有公开在hosts中使用过的IP。那么,还可以尝试通过反向解析得出它的主机名。可能是个类似xg-in-g17.1e100.net(纯举例,非实际存在的主机名)之类的名称。用whois可以很简单地确认1e100.net这个域名是属于Google的。

然后,用nslookup也许会发现这个主机名有不止一个的IP地址。其中一个是我们知道的,另一些是我们不知道的。不知道的那些可以拿去直接验证,就算不可用,也可以拿去从事下一轮推算猜测嘛。

而且,这个主机名也是引人遐想的。有xg-in-g17.1e100.net,那可不可以有xg-in-g18.1e100.net?拿1e100.net去搜索引擎上搜一下,还会发现许多不同的主机名。

总之,继续发挥想象力,找出更多的IP来吧!但是尽量不要声张哦,要低调!


原文:http://www.atgfw.org/2012/11/hostsip.html
发表评论