我正在尝试做的事情
我将 Consul 用于 dns,dnsmasq 充当代理(https://www.consul.io/docs/guides/forwarding.html)。
除了直接查询 consul ( nslookup my.service.consul
),我还希望能够不带.consul
后缀 ( nslookup my.service
) 进行查询。
环境
Ubuntu 16.04
配置
/etc/resolv.conf
search consul
nameserver 127.0.0.1
/etc/dnsmasq.conf
server=/consul/127.0.0.1#8600
server=8.8.8.8
server=8.8.4.4
/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
问题
我遇到的问题是查询my.service
没有consul
resolvconf附加的搜索路径。
如果我/etc/resolv.conf
改为:
search consul service.consul
nameserver 127.0.0.1
然后只搜索my
( nslookup my
),service.consul
后缀被正确附加到查询成功,并带有地址my.service.consul
。
但consul
不附加到( ),即使配置相同。这让我认为搜索域没有附加到虚线查询。my.service
nslookup my.service
我尝试过的事情
我试过dns-search
了/etc/network/interfaces
。没有不同。
我尝试使用 dnsmasq 的resolv-file
选项来指定不同的文件。仍然没有添加到虚线查询的搜索后缀。
我尝试了 resolveconf ndots 配置选项的各种选项,但这也不起作用。它正确地更改了是否实际尝试了带有不足点的查询(根据官方 resolvconf 文档),但它从未设法说服 resolvconf 将.consul
后缀添加到点查询:my.service
.
(以及在我发现这是问题之前尝试过的这些文件和 dnsmasq 选项的其他组合......但似乎不再相关。)
所以我的问题最终是......
如何说服 resolvconfconsul
为我的虚线查询添加后缀my.service
get my.service.consul
?
还请记住,我确实希望service
在我的查询中手动指定它,并且不希望它作为 resolv.conf 中 dns 搜索域的一部分。特别是由于 consul 为数据中心等提供了相当动态的 dns 搜索工具,如果我尝试指定所有允许的组合,我将很快达到 resolv.conf 中搜索条目的 6 个域限制。