我有一个使用仅主机网络运行的 VirtualBox 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
- 您可以安装简单的缓存 DNS 服务器,如totd
、dnsmasq
或maradns
.无论您做什么,您都需要确保其中
resolv.conf
包含新的 DNS 服务器,并且必须在其中出现以下条目(在本示例中,DNS 服务器安装在 localhost 上)...您可以使用
dnsmasq
它,只需在配置文件中添加:这是个有趣的问题。正如您所提到的,主机文件本身不支持通配符。在 apache 机器上设置绑定并使其成为 auth dns 服务器并正确指向 *.vm 将非常容易,但这是一种解决方法(即使它是“正确的”解决方案)。
一定有办法把 nscd 骗进去,但我还没有弄清楚。给我更多时间,我会更新这个答案
编辑
好吧,你最好的选择是使用这个漏洞来毒化 nscd 缓存,而不是使用大量虚拟主机填充主机文件的简单任务,或者为该域配置绑定到身份验证的稍微复杂的任务: http: //linuxgazette.net/154/misc/lg/conspire_dns_vulnerability_details.html
至少,这就是我今天要去的地方。也许如果我稍后感到无聊,我会检查 nscd 的源并弄清楚如何直接注入信息。