/etc/hosts 文件中的全局主机?

/etc/hosts 文件中的全局主机?

我有一个 Mac OS X Snow Leopard Server 作为我的网络路由器。是否可以在其 /etc/hosts 文件中设置全局主机,例如:

127.0.0.1      www.foo.bar

将所有请求(例如浏览 www.foo.bar)从整个网络重定向到该 IP?所以我不必在所有客户端计算机上设置它?

答案1

Hosts 文件只是机器本地的文件。

因此,如果您有一台查询 www.foo.bar 的计算机,它将首先查看其主机文件,如果找不到任何内容,则查询其 DNS 服务器。DNS 将查看其本地区域,如果找不到任何内容,则向其链接的 DNS 服务器发送递归查询(?... 需要仔细检查),如果找不到任何内容,则将查询发送到根区域。

机器上的 DNS 服务绝不会受到其自身 hosts 文件的影响。因此,如果您添加它,它将仅用于服务器,并且仅适用于服务器。

话虽如此,如果该服务器是网络的 DNS 服务器,您可以轻松地为 foo.bar 插入一个新区域,为 www 或仅 * 插入一个 A/Cname 记录,后跟值 127.0.0.1,这应该可以对整个网络执行您想要的操作。

答案2

一般情况下不会。解析是在主机上完成的 —— 这意味着如果您在机器 A 上查找 www.foo.bar,则机器 A 的解析规则会确定该地址的 IP,而不是路由器的 IP。

机器 A 将检查自己的hosts文件,然后检查 DNS。(可能正在使用其他解析系统。)

如果你的路由器充当网络的本地 DNS,那么您可以强制执行此操作 - 如果您使用的是像 BIND 这样的完整 DNS 服务器,则可以通过本地区域记录来执行此操作,或者通过专门配置像 DNSmasq 这样的缓存 DNS 服务器来首先检查其本地主机文件。

对于 DNSmasq(通常用于 OpenWRT 和 DD-WRT 路由器固件),添加expand-hosts/etc/dnsmasq.conf文件以启用此功能。

相关内容