【hosts】修改hosts文件实现翻墙

一、翻墙原理

(一)浏览器输入网址回车的首要工作原理

1.浏览器访问网址的首要工作是:域名解析

 (1)传输在互联网上的数据包的基本格式是:以 IP 包的形式。

 (2)因此,浏览器首先做的事情就是:把网址中的域名解析成服务器的 IP 地址。

网址的域名指的是网址里http://或https://后面所带的.cn或.com或.net等格式的内容,示例:

CSDN的网址是 https://mp.csdn.net  ,那么CSDN服务器的域名就是:mp.csdn.net      

百度的网址是:https://www.baidu.com   ,那么百度服务器的域名就是:www.baidu.com

2.域名解析成 IP 地址,包括以下几个步骤:

(1)检查浏览器程序的缓存:

    DNS 进程首先检查浏览器程序的缓存,浏览器程序的缓存主要存放IP和域名的键值对;

    将访问过的网址的 IP 保存在浏览器程序的缓存中,有助于下次需要时可直接使用,用于提高访问速度;

    浏览器缓存已有网址对应的 IP 时,则直接返回该域名的 IP 地址给浏览器;若没有,则进行下一步。

(2)检查本地的 hosts 文件:

    windows 系统下,hosts 文件存放的路径为: C:\Windows\System32\drivers\etc ;
    
    文件内部的存储结构如下:以键值对的形式存放着 IP 地址和域名,中间以空格隔开;

    如果 hosts 文件有域名和 IP 地址的话,则将查找到的 IP 地址告诉浏览器,并保存在缓存中,方便下次使用;

    如果 hosts 文件没有域名和 IP 地址的话,就需要请求本地 DNS 服务器了,则进行下一步。

(3)检查本地的 DNS 服务器:

    DNS 服务器的 DNS :通常是提供本地互联网接入的一个 DNS 服务器,即互联网的应用接入商,一般是电信或者联通。

    和浏览器缓存一样,这个 DNS 服务器中也有自己的缓存,会把每次向上级服务器申请得到的域名即 IP 地址保存在自己的缓存中,以便下次如果有相同的申请的话可以直接返回。

    如果本地 DNS 服务器中可以查找到该域名对应的 IP,则直接返回给浏览器;

    如果在本地的 DNS 服务器中仍没有查找想要的域名的 IP 地址的话,则进行下一步。

(4)直接到根域名服务器中请求解析:

    Root Server 域名服务器,即根域名服务器。

    根域名服务器返回给本地服务器一个所查询到的主域名服务器IP地址,本地服务器再层层返回,直到所访问的域名的IP地址返回到浏览器上,那么本次的域名解析就结束。

(二)浏览器访问不了外网的原因

由于 Great FireWall(防火长城)的原因,因此无法访问外网, Great FireWall 的工作原理:

(1)IP封锁 :

    IP封锁是指防火墙中维护的一张IP黑名单,一旦发现发有黑名单中IP的请求数据包,那么就直接将该包丢弃。

    黑名单中IP的请求数据包的丢弃,导致了网址的请求得不到目标主机的及时响应而引发超时,从而达到屏蔽对目标主机的访问的目的。

(2)DNS污染 : 

    域名服务器缓存污染,又称域名服务器缓存投毒,是指一些刻意制造或无意中制造出来的域名服务器封包,把想要访问的域名指往错误域名的IP地址。

    一般来说,在互联网上都有可信赖的域名服务器,但为减低网络上的流量压力,一般的域名服务器都会把从上游的域名服务器获得的解析记录暂存起来,待下次有其他机器要求解析域名时,可以立即提供服务。

    一旦有关域名的局域域名服务器的缓存受到污染,就会把域名内的电脑导引往错误的服务器或服务器的网址。

(三)修改hosts文件实现翻墙的原理

根据浏览器域名解析的过程可知:

1.假如我们想访问一个外网的域名,如果我们不修改 hosts 文件的话,那么这个解析过程就必须经过1个以上的  DNS 服务器。

2.那么如果在Great FireWall的作用下,返回给浏览器的总是一个错误的 IP 地址,则永远访问不了外网,永远被关在墙内。

3.因此如果我们想到墙外的话,我们就必须抢在域名解析步骤(3)之前,即在步骤(2)中,直接在 hosts 文件中添加这个外网域名所对应的IP地址。

4.当 hosts 文件添加的域名的 IP 地址是正确时,需要访问这个外网域名的时候,就有了指向目标服务器的正确 IP 地址,则可以成功访问这个域名对应的服务器了。


二、修改hosts文件实现翻墙的方法

(一)获取某个域名的IP

1.打开cmd窗口,输入命令回车:

  nslookup -vc 域名 8.8.8.8

2.我们看到 Addresses 行:

  如果用的是教育网(如学校的网)的话,那么直接可以将第1行的IPV6 地址写到 hosts 文件中,格式同 IPV4 的一样;

  如果不是教育网的话,那么就得把下面的 IPV4 地址找到可用地址,因为并不是每个 IP 都能用的,有的可能被封掉了。


(二)测试域名的IP是否可用的方法

1.管理员身份访问cmd,输入命令:

telnet 查找到的IP地址 443

2.如果页面跳到一个黑色的telnet IP页面,那么恭喜这个 IP 是可用的;如果无法打开到主机的连接,那么这个 IP 为不可用。

 


(三)解决telnet不是内部命令的方法

telnet在win7或win10下默认是不开启的,所以需要我们自己手动开启:

1.点击开始菜单,找到控制面板项,点击进入;

2.进入程序模块,选择“开启或关闭windows功能”,弹出对话框,勾选“telnet客户端”前的复选框。



三、获取现成的hosts文件覆盖实现翻墙

(一)IPV6 hosts文件下载地址:https://github.com/lennylxx/ipv6-hosts/blob/master/hosts    点击前往下载


(二)IPV4 hosts文件下载地址:https://laod.cn/hosts      点击前往下载


 


(三)查看网络是IPV6还是IPV4

在浏览器地址栏输入网址,在页面会给出电脑的ipv6网络测试结果:

http://test-ipv6.com

猜你喜欢

转载自blog.csdn.net/qq_39720249/article/details/81107414
今日推荐