主机文件中的所有子域名都指向一个IP吗?

主机文件中的所有子域名都指向一个IP吗?

我有一个运行仅主机网络的 VirtualBox VM。此 VM 正在运行 Apache,我想在其中设置一组基于名称的虚拟主机,这些虚拟主机可以通过主机上的 Web 浏览器进行访问。

问题是,每次我为虚拟主机添加新的子域时,我都必须将其添加到 hosts 文件中。现在我有这样的内容:

192.168.56.3 vm site1.vm site2.vm site3.vm site4.vm ...

我想要达到同样的效果

192.168.56.3 vm *.vm

我知道 * 在 hosts 文件中不能用作通配符。除了运行实际的 DNS 服务器之外,还有其他方法可以实现所需的结果吗?我是否应该忍气吞声并继续手动添加到 hosts 文件中?

答案1

没有通配符的方法可以做到这一点 - 您要么实现 DNS 服务器,要么继续向 hosts 文件中添加条目。

如果您确实要安装 DNS 服务器,则无需安装bind- 您可以安装一个简单的缓存 DNS 服务器,如totddnsmasqmaradns

无论您做什么,您都需要确保resolv.conf包含新的 DNS 服务器,并且必须在其中出现以下条目(在此示例中,DNS 服务器安装在 localhost 上)...

nameserver 127.0.0.1

答案2

您可以使用dnsmasq它,只需在配置文件中添加:

地址=/.vm/192.168.56.3

答案3

这是一个有趣的问题。正如您所提到的,主机文件本身不支持通配符。在 apache 机器上设置 bind 并让其成为 auth dns 服务器并正确指向 *.vm 是相当容易的,但这是一种解决方法(即使它是“正确”的解决方案)。

一定有办法欺骗 nscd,但我还没想出来。再给我点时间,我会更新这个答案

编辑

好吧,最好的选择是使用此漏洞来毒害 nscd 缓存,而无需诉诸于用大量虚拟主机填充主机文件这样的简单任务,也无需诉诸为该域配置绑定到身份验证这样的稍微复杂的任务:http://linuxgazette.net/154/misc/lg/conspire_dns_vulnerability_details.html

至少,今天我只能讲这么多了。也许如果我稍后觉得无聊,我会检查 nscd 的源代码,弄清楚如何直接注入信息。

相关内容