Hosts 原理 & 通过编辑 Hosts 访问 Google 服务

本文分两部分:第一部分介绍 Hosts 运行原理;第二部分介绍如果通过编辑 Hosts 文本获得在墙内访问 Google 服务的方法。
第一部分
Hosts文件是一个用于储存计算机网络中各节点信息的计算机文件。这个文件负责将主机名映射到相应的IP地址。hosts文件通常用于补充或取代网络中DNS的功能。和DNS不同的是,计算机的用户可以直接对hosts文件进行控制。

为了方便用户记忆,我们将IP变成一个个的域名来输入到浏览器进行访问。而这使得访问网站时要先将其域名解析成 IP 。DNS (Domain Name Server) 的作用就是进行 IP 解析,把域名对应到 IP。
在 Great FireWall 的 5 种封锁方法中,有一种简单而效果很好的方法是 DNS 污染。GFW 会对 DNS 的解析过程进行干扰,这会使对某些被干扰的域名返回一个错误的 IP 地址给你的主机,使你无法正确连接到你要的服务器上读取正确的信息。
Hosts 文件本来是用来提高解析效率。在进行 DNS 请求以前,系统会先检查自己的 Hosts 文件中是否有这个地址映射关系,如果有则调用这个 IP 地址映射,如果没有再向已知的 DNS 服务器提出域名解析。也就是说 Hosts 的请求级别比 DNS 高。当你的 Hosts 文件里面有对应的 IP 时,它就会直接访问那个 IP,而不用通过 DNS。
所以,当我们直接将 Google、Twitter、Facebook 之类的 IP 放入 Hosts 文件后,就可以跳过 DNS 的解析这一步,直接就行 IP 访问,不受 GFW 的 DNS 污染干扰了。
补充一条,就是为什么 Hosts 的 IP 要时不时更改,为什么 FB、Twitter 会仍旧上不去。是因为 GFW 的第二个大招,IP 封锁。比如访问国外一个 IP 无法访问,Ping 不通,tracert 这个 IP 后发现,全部在边缘路由器 (GFW) 附近被拦截。换言之,GFW 直接拦截带有这个 IP 头的数据包。所以,如果你更改的 IP 被封锁了,就算你过了 DNS 这一关,也仍旧不能翻过 GFW。
所以hosts才会频繁的更新新的ip、域名。
有很多人问:“怎么制作Google hosts?”
首先要弄明白https、“google.com”(域名)、ip地址、ping都是做什么的。
1、先说https,Hypertext Transfer Protocol Secure超文本传输协议SSL/TLS的组合,用以提供加密通讯及对网络服务器身份的鉴定。简单的说就是加密的http协议。说到http协议,大家应该都知道默认是采用80端口,而https协议默认为443端口。
2、域名,简单说就是ip地址的名字,好记呗。上面问题中的“google.com”还 不算是完整域名,而是一个域 的名字(简称域)。有人说前面要加的“www”前缀,又叫主机,与域形成完整域名“www.google.com”。这就是为什么要加”www”,因为“google.com”是一个域,只有指出某一主机才能ping。问题又来了,可为什么有时只用域,如“google.com”也能ping,也能打开网页呢?这是因为在DNS中特别设置了主机解析记录。(个人自认为做了这个设置的都是注重细节的好网站)跑偏了。。。
3、ip地址,估计不需要多说了。
4、ping,网络测试工具,当然用来获得ip是可行的。
5、GoGo Tester寻找IP作为最后解决方案(目前成功率很低)
http与https
http是HTTP协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。
https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份。
封域名/内容过滤,用http协议发送数据的时候,墙检测到你要发送的域名,然后给你过滤掉,返回空或者出错等。用https可以解决这个问题,因为墙不知道你发送的是什么数据。如果用了https,因为无法检测内容,所以墙会在dns解析的时候,返回给你错误ip,dns没有加密,所以同样虽然用了https,但由于dns解析错误,还是无法访问网站。所以在hosts给域名指向正确的ip,那么我们就可以跨越过“长城”了。
https 网站如何制作hosts?如获得google.com 的ip地址,ping命令不行。
从1中可知,http和https都是协议,区别只是对应端口不同。那么ip呢?其实“google.com“与“google.com“在ip解析时是一样的,只是指向了不同端口,这个端口是TCP端口。
所以在ping时,是不需要加协议前缀的。只需要ping域名就ok。
hosts中同理。

第二部分

=================================
Hosts 文件下载信息
-------------------------
更新日期:2016-01-06
百度网盘 Hosts 下载地址 :http://pan.baidu.com/s/1i4iVWVV
百度提取码:g4jw
文件解压缩密码:www.laod.cn
=================================


Hosts 所在文件夹:
  • Windows 系统hosts位于 C:\Windows\System32\drivers\etc\hosts
  • Android(安卓)系统hosts位于 /system/etc/hosts
  • Mac(苹果电脑)系统hosts跟Linux一样位于 /etc/hosts
  • iPhone(iOS)系统hosts跟Linux Mac一样位于 /etc/hosts
  • Linux系统hosts位于 /etc/hosts

  • 你也可以用 Notepad++ 自行转换文本编码和换行符格式。当然,老D分享的都转换好了。修改hosts后生效的方法:
  • Windows
  • 开始 -> 运行 -> 输入cmd -> 在CMD窗口输入
  • 1
    ipconfig /flushdns
  • Linux
    终端输入
    1
    sudo rcnscd restart
    对于systemd发行版,请使用命令
    1
    sudo systemctl restart NetworkManager
    如果不懂请都尝试下
  • Mac OS X终端输入
  • 1
    sudo killall -HUP mDNSResponder
  • Android
    开启飞行模式 -> 关闭飞行模式
  • 通用方法
    拔网线(断网) -> 插网线(重新连接网络) //有时候不需要这么做也可以的,反正老D很少刷新DNS,刷新可以更快的解析

  • 修改hosts相关说明:
注:Google、Gmail、维基百科、Twitter、Facebook等必须请用https 加密方式打开。
(一般这些网站都是SSL加密链接)如谷歌学术:https://scholar.google.com/
如果不喜欢用谷歌香港,可以以 https://www.google.com/ncr 方式访问,(No Country Redirect)禁止国别跳转。
另外可能有的地区&网络(铁通、联通)hosts无法正常使用,这个不是你我能左右的!
老D所提供的hosts仅限于学习使用,hosts里不会添加屏蔽广告条目,也不会劫持任何网站。
重要的事情说三遍:
由于DNS污染太严重,YouTube只能打开网页,视频无法播放!
由于DNS污染太严重,YouTube只能打开网页,视频无法播放!
由于DNS污染太严重,YouTube只能打开网页,视频无法播放!
麻烦别问我为什么修改hosts不能加载YouTube视频啦,我去年回答了不下500次。
对了,Google Play也不能正常下载,或者有时候图片加载不出来,通讯录不能同步。
如果你真的想看YouTube或者需要用Google Play下载应用程序再或者需要同步通讯录或者国外的新闻网站、视频网站、1024等等…

没有评论: