Resolvconf 不会将搜索域添加到带点的查询中

Ala*_*yne 5 dns dnsmasq resolve consul

我正在尝试做什么

我使用 Consul 进行 dns,并使用 dnsmasq 作为代理(https://www.consul.io/docs/guides/forwarding.html)。

除了直接查询consul(nslookup my.service.consul)之外,我还希望能够不带.consul后缀(nslookup my.service)进行查询。

环境

乌班图16.04

配置

/etc/resolv.conf

search consul
nameserver 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

/etc/dnsmasq.conf

server=/consul/127.0.0.1#8600
server=8.8.8.8
server=8.8.4.4
Run Code Online (Sandbox Code Playgroud)

/etc/网络/接口

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address 10.10.10.102
  netmask 255.255.255.0
  gateway 10.10.10.1
Run Code Online (Sandbox Code Playgroud)

问题

我遇到的问题是,查询my.service没有consulresolvconf 附加的搜索路径。

如果我更改/etc/resolv.conf为:

search consul service.consul
nameserver 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

然后仅搜索my( nslookup my),service.consul后缀正确附加到查询成功,地址为my.service.consul

但即使配置相同,也不会consul附加到( )。这让我认为搜索域不会附加到点式查询中。my.servicenslookup my.service

我尝试过的事情

我试过dns-search/etc/network/interfaces. 没有不同。

我尝试使用 dnsmasq 的resolv-file选项来指定不同的文件。仍然没有搜索后缀添加到点式查询中。

我已经尝试了resolveconf ndots配置选项的各种选项,但这也不起作用。它正确地改变了是否实际尝试了点不足的查询(根据官方 resolvconf 文档),但它从未成功说服 resolvconf 将后缀添加.consul到点查询中:my.service

(以及在我发现这是问题之前尝试过的这些文件和 dnsmasq 选项的其他组合的负载......但似乎不再相关。)

所以我的问题最终是......

如何说服 resolvconfconsul为我的点式查询添加后缀my.serviceget my.service.consul

另请记住,我确实希望service在我的查询中手动指定 ,并且不希望将其作为 resolv.conf 中 dns 搜索域的一部分。特别是因为 consul 对于数据中心等有相当动态的 dns 搜索工具,如果我尝试指定所有允许的组合,我很快就会达到 resolv.conf 中搜索条目的 6 个域限制。