所有的子域到主机文件中的一个IP?

我有一个VirtualBox虚拟机运行与主机专用networking。 这个VM正在运行Apache,我想在其中设置一些基于名称的虚拟主机,可以从主机上的Web浏览器访问。

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

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

我想达到与此相同的效果

 192.168.56.3 vm *.vm 

我知道*在主机文件中不能用作通配符。 是否有另一种方法来达到运行实际的DNS服务器所需的结果? 我应该吮吸它,并不断手动添加到我的主机文件?

没有这样做的通配符 – 你需要实现一个DNS服务器,或不断添加条目到你的主机文件。

如果确实要安装DNS服务器,则不需要安装bind – 您可以安装像maradnsdnsmasqmaradns这样的简单cachingDNS服务器。

不pipe你做什么,你都需要确保resolv.conf包含新的DNS服务器,并且下面的条目必须出现在那里(在本例中,DNS服务器安装在本地主机上)。

 nameserver 127.0.0.1 

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

地址= /。VM / 192.168.56.3

这是个有趣的问题。 主机文件本身不支持通配符,正如你所提到的那样。 在apache机器上设置绑定并将其作为auth dns服务器并正确指向* .vm会非常容易,但这是一个解决方法(即使它是“正确的”解决scheme)。

有一种方法可以让nscd进入它,但是我还没有弄明白。 给我更多的时间,我会更新这个答案

编辑

好吧,最好的办法就是不使用大量虚拟主机填充主机文件这个简单的任务,或者为域configuration绑定到auth的稍微复杂一点的任务就是使用这个漏洞来毒害nscdcaching: http : //linuxgazette.net/154/misc/lg/conspire_dns_vulnerability_details.html

至less,这就像我今天要去的那样。 也许如果我以后感到无聊,我会检查源代码nscd,并找出如何直接注入信息。