我的解决方案概述

我的解决方案概述

我有一台 Mac,我用它来进行 Web 开发。我将我的项目设置为可以通过 project1.dev、project2.dev 等地址访问。不过,我厌倦了更新“/etc/hosts”文件,因此我安装了 Dnsmasq。它运行良好!现在我可以运行ping doesnotexist.dev并从 127.0.0.1 获得回复,这正是我想要的。

Mac 上还安装了 Windows XP VirtualBox 虚拟机。我希望该虚拟机也能 ping doesnotexist.dev 并获取回复,但我希望回复来自 Mac 的 LAN IP,而不是 127.0.0.1。据我了解,这可以通过双 DHCP DNS 服务器。我将其安装在虚拟机上并编辑了“DualServer.ini”文件。我只是取消注释了“[SERVICES]”部分的“DNS”行,并添加*.dev=192.168.1.50到“[SERVICES]”部分。但这不起作用。我看到此主题并决定安装 Microsoft Loopback Adapter,但我不知道如何配置它。所以现在我陷入困境。

如何设置双 DHCP DNS 服务器以便 ping doesnotexist.dev 可以从 Mac 的 LAN IP 获得回复?

答案1

您应该使用 dnsmasq 的参数 -A。摘自 dnsmasq 的文档:

   -A, --address=/<domain>/[domain/]<ipaddr>
          Specify  an IP address to return for any host in the given domains.  Queries in the
          domains are never forwarded and always replied to with  the  specified  IP  address
          which  may  be IPv4 or IPv6. To give both IPv4 and IPv6 addresses for a domain, use
          repeated -A flags.  Note that /etc/hosts and DHCP leases override this for individ-
          ual names. A common use of this is to redirect the entire doubleclick.net domain to
          some friendly local web server to avoid banner ads. The domain specification  works
          in  the same was as for --server, with the additional facility that /#/ matches any
          domain. Thus --address=/#/1.2.3.4 will always return  1.2.3.4  for  any  query  not
          answered  from  /etc/hosts or DHCP and not sent to an upstream nameserver by a more
          specific --server directive.

因此,添加--address=/dev/192.168.1.50到 dnsmasq 命令行或添加address=/dev/192.168.1.50到 dnsmasq 的配置文件并重新启动就可以了。

另外,如果你的 Windows 虚拟机无法连接到 Mac 上的 dnsmasq 进行 DNS 查询,你可以尝试在预DNS使用通配符...

答案2

我的解决方案概述

我最终使用了预DNS,如 gnp 所建议的。这是我使用的 hosts.txt 文件的全部内容:

192.168.1.50 *.dev

不过,我不喜欢总是需要打开命令窗口,所以我安装了免费版本的4t 托盘最小化器,保留默认热键 Shift+Esc,以将活动应用程序最小化到托盘。我想自动化 Shift+Esc 部分,所以我编写了一个 AutoIt 脚本,运行 pDNS 并立即将其最小化到托盘。该脚本在 Windows 启动时运行。

具体步骤

  1. 下载并解压 pDNS。我选择将解压的文件放在“C:\Applications\pDNS”中。
  2. 编辑 pDNS 的 hosts.txt 文件,使其看起来像我在解决方案概述中所看到的那样。
  3. 下载并安装 4t Tray Minimizer 的免费版本。确保选中“在 Windows 启动时启动 4t Tray Minimizer”复选框。同时确保选中“最小化到托盘”复选框并将热键设置为“Shift+Esc”。如果要更改热键,您还必须更改 AutoIt 脚本。
  4. 下载并安装 AutoIt。当系统要求选择 *.au3 文件的默认选项时,请确保选中“运行脚本”单选按钮。
  5. 将您的首选 DNS 服务器设置为 127.0.0.1。
  6. 创建以下 AutoIt 脚本(我将其命名为“pDNS.au3”)并将其放入“启动”文件夹(“%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup”)。您可以随意将 OpenDNS IP 替换为其他内容。

Run("C:\Applications\pDNS\pdns.exe /ns:208.67.222.222", "C:\Applications\pDNS")
WinWaitActive("C:\Applications\pDNS\pdns.exe")
Send("+{ESC}")

答案3

如果您正在运行 DNS 服务器,则只需在 Virtualbox 中桥接您的虚拟网络适配器(默认情况下设置为 NAT,这与您的需要相反)并配置 VM 的内部 DNS 以指向您的服务器。

相关内容