![配置 LXC 以使用特定 DNS 服务器而不是 DNSMASQ](https://linux22.com/image/713668/%E9%85%8D%E7%BD%AE%20LXC%20%E4%BB%A5%E4%BD%BF%E7%94%A8%E7%89%B9%E5%AE%9A%20DNS%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%80%8C%E4%B8%8D%E6%98%AF%20DNSMASQ.png)
开箱即用,我的 LXC 容器连接到 dnsmasq 的正在运行实例,该实例由服务启动lxc-net
。
就我而言,我正在运行一个本地非绑定 DNS 服务器,该服务器连接到一个名为 ncdns 的东西,它让我可以浏览通过 Namecoin 注册的 .bit 域名。
这两者是冲突的。我的 lxc 容器依赖于dnsmasq
DNS,它在端口 53 上运行。同时,我的unbound
服务器必须在端口 53 上运行,以便我能够访问 .bit 域。(请参阅这个帖子因为不可能使用非标准端口在 resolv.conf 中包含名称服务器;我也在 IRC 频道上询问过,并且基本上了解到将 resolv.conf 指向非标准端口上的 DNS 服务器基本上是不可能的)。
所以我需要做的是创建一个支持 LXC 内容并能解析 .bit 域的组合 DNS 服务器,并在端口 53 上运行该服务器。
可以假设我的unbound
服务器递归解析 .bit 域,并将所有其他域转发到我的路由器,因此它可以有效地解析所有域。
问题如下:
1:如何告诉 lxc-net 不要启动 dnsmasq?
2:我认为,unbound
如果不进行进一步配置,它不会直接作为我的 LXC 容器的 DNS 服务器。我该如何配置unbound
才能让它dnsmasq
为我的 lxc 容器做同样的事情?(这个问题的答案可能是它在由 lxc-net 启动时使用的 dnsmasq conf 文件的位置(我还没有找到),这样我就可以尝试在 unbound 下复制该配置,或者一些其他文档,其中包含与 lxc-net 使用的 dnsmasq conf 文件相同的信息)
答案1
好的,我想我明白了。我会接受这个答案,但请记住我的话,如果以后发现这不起作用,我会发布另一个问题。
我仍在这台计算机上运行 3 个 (!) DNS 服务器:dnsmasq
它与 LXC 一起提供(不完全是“原样”,见下文),以及ncdns
Namecoin DNS 服务器和unbound
。
再次说明,我只能在端口 53 上运行 1 个 DNS 服务器,因此我必须为该端口选择一个。我可以选择我的unbound
设置并对其进行扩展以执行所需的操作dnsmasq
,反之亦然。由于 dnsmasq 似乎已经进行了复杂的配置以与 LXC 配合使用,并且还可以用作 unbound 无法执行的 DHCP 服务器,因此我决定将其作为起点。
我创建了一个/etc/dnsmasq.conf
包含以下内容的文件:
listen-address=127.0.0.1
resolv-file=/etc/resolv.dnsmasq.conf
server=/bit./127.0.0.1#5301
第一行允许dnsmasq
监听我的本地地址,不仅解析 LXC 容器的名称,还解析我的 PC 的名称。第二行告诉 dnsmasq 使用一个特殊的解析文件,该文件是我从 resolv.conf 复制并粘贴的(如果有人关心的话,它指向我的路由器的 IP)。第三行也是最后一行添加了一个.bit
存根域,该域的请求将转发到unbound
运行在端口 5301 上的服务器。
我还将 resolv.conf 文件更改为简单
nameserver 127.0.0.1
这样所有 DNS 查找都可以通过 来完成dnsmasq
。