主机客户机之间的本地 DNS 解析

主机客户机之间的本地 DNS 解析

在 Ubuntu Desktop 主机上的 vbox6.1 中。我有一个软件要求,即具有互联网访问权限的主机专用网络适配器。我能够配置它,并且可以成功地从主机 ping 客户机,并且客户机可以通过主机专用适配器访问互联网。

我还有一个问题,本地 DNS 解析。

为了让客人能够访问互联网,我必须使用 ip MASQUERADE 从 vboxnet0 地址到主机的主网络接口。

这导致了一个副作用。尽管客户机已配置并正确运行 bind9 服务器,但主机只能解析来自客户机的 IP 地址,而不能解析域名。例如

我可以使用以下方式访问访客服务器控制面板:

https://192.168.64.87:3080

但我无法使用以下方式访问服务器控制面板:

https://test.example.com:3080

主机已安装 resolvconf,但似乎 ip Masquerade 导致主机/etc/hosts文件的内容跳过/忽略并尝试直接从公共 DNS 服务器解析域。

当我使用dig example.com 它时,显示我的生产服务器的 DNS 正在被用来尝试解析生产服务器上不存在的 test.example.com。

我如何强制主机的 resolvconf(或其他工具)解析客户服务器上的域名,以便我可以在主机的 Web 浏览器中查看它们?

进度更新
我的主机的 /etc/resolv.conf 有:

nameserver 192.168.61.2
nameserver 127.0.0.1
search hitronhub.home

其中 192.168.61.2 是 vboxnet0 dhcp 服务器的 ip 地址

我还进行了一些研究,并安装了 dnsmasq 作为这里推荐

现在,当我运行dig example.com它时,它不会显示我的生产名称服务器。它没有显示任何名称服务器并且失败。(我还没有完全配置 dnsmasq)

任何建议均值得赞赏

答案1

我找到了一个解决方案。这里的关键是正确配置 dnsmasq 以识别我的 vbox 客户机的静态 IP 以进行域解析。

我发现清楚教程在这里,但我做了一些小修改,因此我将在下面展示我的步骤,以供其他人参考。

  1. 禁用并停止 systemd 已解决

    $ sudo systemctl disable systemd-resolved
    $ sudo systemctl stop systemd-resolved

  2. 删除符号链接/etc/resolv.conf并删除文件

    $ ls -lh /etc/resolv.conf $ sudo rm /etc/resolv.conf

  3. etc/resolv.conf使用以下值创建一个新的 / :

    $ sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolv.conf' #(主机域名解析)

    $ sudo bash -c 'echo "nameserver 1.1.1.1" >> /etc/resolv.conf' #(外部互联网的公共 DNS 服务器 ip)

    $ sudo bash -c 'echo "nameserver 192.168.64.87" >> /etc/resolv.conf' #(virtualbox 客户机静态 ip 地址)

  4. 安装 dnsmasq

    $ sudo apt 安装 dnsmasq

  5. 将 .test 添加到 dnsmasq 配置文件:

    $ sudo bash -c 'echo "地址=/.test/192.168.64.87" >> /etc/dnsmasq.conf'

笔记:开发需要通配符域名解析的 wordpress 多站点的人员可以使用:
$ sudo bash -c 'echo "address=/example.test/192.168.64.87" >> /etc/dnsmasq.conf'

  1. 为客户的静态 IP 地址创建目录解析器:

    $sudo mkdir -v /etc/resolver && sudo bash -c 'echo "名称服务器 192.168.64.87" > /etc/resolver/test'

  2. 重新启动 dnsmasq 和网络管理器

    $ sudo systemctl 重新启动 dnsmasq $ sudo systemctl 重新启动网络管理器

  3. 测试你的 dnsmasq 设置

a.) 打开浏览器并确认您仍然可以访问外部互联网

b.) 运行dig example.test你应该能够看到你的客户的静态 IP 地址

c.) 在主机的浏览器中打开 example.test

就是这样。

相关内容