
继续看一个学员的问题,关于hosts的
本地hosts文件,需要用到它的场景还是蛮多的,比如开发环境调试qq登录,调试通过域名访问功能
在我的理解中,这个东西已经默认大家都会,就和配置环境变量一样
但是万万没想到,还是有人不会,但是这个问题很经典,值得把它做成一个案例
什么是hosts
得从域名解析开始说起
我们都知道,ip地址就是互联网中的门牌号,但是我们上网不是靠ip去访问的
而是通过域名去访问,就好比你的记事本中,记录的是xx对应的电话号码是xxx-xxxx-xxxx
我们访问互联网也是,通过域名去访问
但是实际要访问到服务器,最终还是要通过ip去访问,域名只是一个别名
而域名到ip的过程就叫DNS,域名系统
这个过程可以记一下
- 浏览器的DNS缓存(如果是通过浏览器访问的话)
- 操作系统的Hosts文件
- 向本地dns服务器发起查询
- dns服务器根据域名级别开启递归查询
所以这个过程明白之后,有些现象就很好解释了
比如改了hosts之后,网页刷新还是没有效果,可以试下删除浏览器的dns缓存,或者关闭浏览器重新打开
修改hosts
演示一下传统的修改hosts的方法
windows系统的hosts文件在C:\Windows\System32\drivers\etc\hosts
linux系统的hosts文件在/etc/hosts
注意:都是没有后缀的
如果你需要频繁修改hosts文件,那么这样直接改它不是很方便,可以使用SwitchHosts这个软件去进行修改,很方便
https://github.com/oldj/SwitchHosts/releases
如何排查问题
再回顾一下这个问题,为什么hosts没有生效,是不是心里就有数了
然后还有一个问题需要深刻记住,那就是控制变量法
他发现hosts不生效,一是文件有后缀,二是配置的格式有问题(一行格式有问题,是会导致当前行失效?,还是全部失效?),三是用了nslookup去测试域名解析
重点强调一下第三个
为什么他会选择用nslookup去判断hosts有没有生效呢
因为是ai告诉他的
我不知道ai回复他的原文,但是我可以猜测,他应该是这样问ai的
如何检测hosts是否生效?
然后ai告诉他可以通过ping和nslookup

然后他ping了一下,发现不行,因为那个时候,他的文件有后缀,修改肯定没有生效
他又试了nslookup,发现还是不行,然后后面就一直在用nslookup了
这也是很多人的通病,太过相信ai了,nslookup确实是查询dns服务器的工具,但是它有一个关键的问题,它默认不会检测本地hosts文件

当然,我对nslookup不是很熟悉,也不是很清楚这个ai的回复是不是乱说的
但是通过我的实践,发现nslookup是不会检测本地hosts文件的