【Linux】关于IP直达文件hosts

hosts文件经常听到,改hosts什么的,但这个文件的真实作用是什么呢?网上对于这个文件解释永远是那种太长不看的理论。让我看的头昏眼花。


一、hosts的基本理论

其实hosts文件在任何一个系统都有,这个hosts在任何系统都没有后缀名,是一个相当于系统全局变量的东西,

在Linux的路径是/etc/hosts,安卓同理root后在/system/etc/hosts,IOS在iFile/etc,windows则在c:\windows\system32\drivers\etc\里面。其中,这里的安卓、IOS包括各类平板、手机、笔记本、甚至那些相机、电视。比如Linux你可以通过:

sudo gedit /etc/hosts
或者

sudo vim /etc/hosts
打开,如图,编辑之后可以退出,无图形化的Linux利用vim的:q :w指令可以完成编辑:

技术分享

Windows则用记事本,其余系统则各自用最高管理员权限调用各自的文本编辑器打开这个文件。

这个hosts所有以#开头的都是注释,没用的。不以#开头的,必须满足如下的格式:

IP地址 主机名 别名1 别名2..(别名可以没有)

比如127.0.0.1 localhost。在Apache调试php,或者Tomcat调试jsp,在浏览器中输入localhost,则相当于访问127.0.0.1这个地址。路由包直接去到127.0.0.1这个地址,无须经过DNS解释。直达访问的。系统默认这样设置,保留自己的内网地址。

这里所谓的别名,就是另一个主机名,比如127.0.0.1 localhost.localdomain localhost,你输入localhost.localdomain或者localhost,系统都会直接把通讯包扔到127.0.0.1这个地址。

这样还不单单浏览器的路由包给这样处理,你在本机所有软件,都会这样处理,比如Mysql的访问地址,localhost:3306。也就是把数据访问127.0.0.1旗下的3306端口。

一个IP旗下有65536个端口,用于在同一个IP下挂在不同的应用。

每台机器都有一个主机名,用于主机与主机之间的便于区分。

那么,这又有什么用呢?


二、hosts的应用

好吧,讲了这么多,是时候来点实际东西。告诉大家怎么改hosts文件。

1、如果,你想某个网址或者应用再也不访问外网。也就是再也无法与外网通讯,你就在hosts中补上这样的一条:

127.0.0.1 你想屏蔽的网址

这样你输入的网址的通讯包则会永远在你的PC机的内网中打圈,永远出不去了。因为其出入请求,永远被留在127.0.0.1中。

2、如果,你想网速快一点,直接与某些地址通讯。上网找找你想提速的地址。

也可以先ping一下那个网址。

比如我想访问www.csdn.net提速。我ping出www.csdn.net的IP地址是114.112.73.194。

我想访问csdn的博客模块的时候快一点,我就ping一下,发现blog.csdn.net的IP地址是114.112.73.198。

那么则在hosts加下以下几条:

114.112.73.194 www.csdn.net
114.112.73.198 blog.csdn.net 

之后csdn的其它模块同理。

添加了hosts文件之后,你的通讯包则直接去到114.112.73.194无须,如同《【Linux】关于路由跟踪指令traceroute》(点击打开链接)一文所示,你的通讯包会到各级服务器中,寻找域名对应IP,如果找不到,还要扔到上级再找。虽然这个过程也是1秒内就能完成。同时郭嘉的路由器也布置得很好,能快就能帮你找到最近的地方解析了。因此,也就没有多少个人,把国内的网址写到hosts文件里面了。

那么,问题来了,《【Linux】关于路由跟踪指令traceroute》(点击打开链接)一文所示,我访问那些你懂的网站,通讯包去到省级路由器被拒绝解析,利用hosts文件的直达原理行不行呢?如果我在某些搜索引擎找到那些你懂的网站的IP,或者直接就找到其hosts配置的话……

呵呵,反正我试过是完全行得通的。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。