该文件/etc/hosts
和DNS无法一起使用。它们提供名称(网络名称)的独立解析。
链接它们的粘合剂位于/etc/nsswitch.conf
linux系统中。在/etc/netsvc.conf
AIX服务器中,在Windows系统中,可以在MacOS系统中用lookupd -configuration
(搜索LookupOrder,类似于:)列出Cache FF DNS NI DS
。
实际顺序变得很复杂,并且通常很复杂,因为每个名称解析服务都可以(而且很多时候)可以在其他级别的解析中查看。就像dnsmasq
(通常位于127.0.0.1:53
或::1:53
(或同时位于)的light DNS服务器)通常读取并包含/etc/hosts
文件内容。或类似systemd.resolver
(基本解析器仅应解析未点缀的名称,如)在某些情况下mycomputer
直接为点缀名称(mycomputer.here.dev.
)调用DNS解析。
通常,服务是按顺序调用的,第一个不会失败的服务将获胜并被接受为正确的地址。通用基本顺序为:(/etc/hosts
文件),mDNS(无点名),DNS,NIS,NIS +,LDAP。在某些linux系统中,服务中的计算机有不得已的解决方法hostname
myhostname
例如,在此系统中(来自cat /etc/nsswitch
):
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
请注意,非常老的order
条目(glibc 2.4和更早版本)设置/etc/host.conf
为:
order hosts,bind,nis
仅适用于文件(file /etc/hosts
)名称服务。
(通常)由所使用的DNS服务器(绑定,未绑定等)控制与NIS和LDAP相关的此(Linux)客户端计算机上的影响。
所以:
- 如果可以在/ etc / hosts中解析主机名,DNS是在/ etc / hosts之后用于解析主机名还是将/ etc / hosts解析的IP地址视为“主机名”以递归解析?
没有。
如果可以在中解析主机名/etc/hosts
,则该DNS
域名不适用(如果文件位于DNS之前)。
解析的IP地址也不会被视为“主机名”。
它就是:已解析的地址。
浏览器
浏览器可以使用任何方法来解析名称(在检查其解析名称的缓存之后)。仅当使用系统提供的方法时,以上给出的顺序才适用。作为任何程序,浏览器都可以选择直接与任何DNS服务器联系。
如果系统顺序为/etc/hosts
before DNS
,则意味着该文件中的条目将优先于DNS
解析服务。
所以:
- ...这是否意味着/ etc / hosts覆盖DNS来解析主机名?
是(如果浏览器使用系统提供的分辨率)。
为什么不/etc/hosts
再次申请,以致我无法连接到该网站?
只有在为该特定名称清除浏览器内部缓存(或超时)之前,该名称才再次在浏览器外部搜索。
如果浏览器在其缓存中解析了名称,则浏览器将再次使用它。
使用它来清除缓存。
或者只是关闭(等待一会儿)然后重新启动浏览器。
/etc/hosts
和本地定义的名称服务器。第一次见到实在令人困惑。(看着您,基于Chromium的浏览器!)