我有一个自定义 DNS 解析器,类似于 Consul 提供 DNS 的方式。他们已经给你设置好了像这样的系统解决。
# File /etc/systemd/resolved.conf.d/consul.conf
[Resolve]
DNS=127.0.0.1:8600
DNSSEC=false
Domains=~consul
听起来这应该只转到此 DNS 解析器(侦听端口 8600)以查找以.consul
.然而,我自己使用这个设置和一些代码(不是 Consul)并在收到查询时进行记录,我可以看到所有 DNS 查询(例如dig example.com
)最终都被发送到该程序!
我不确定我缺少什么来只处理特定域的查询。以下是相关文件:
/etc/resolv.conf(是的,AWS EC2 服务器):
nameserver 127.0.0.53
options edns0 trust-ad
search us-east-2.compute.internal
文件 /etc/systemd/resolved.conf.d/service.conf
[Resolve]
DNS=127.0.0.1:8600
DNSSEC=false
Domains=~service
命令输出resolvectl
:
(是的,我正在使用.service
而不是.consul
)。
#$ resolvectl status
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Current DNS Server: 127.0.0.1:8600
DNS Servers: 127.0.0.1:8600
DNS Domain: ~service
Link 2 (ens5)
Current Scopes: DNS
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 10.0.0.2
DNS Servers: 10.0.0.2
DNS Domain: us-east-2.compute.internal
我是否需要创建另一个[Resolve]
部分Domains=~.
?也许将其指向默认网关(10.0.0.2
在我的例子中或类似的情况下8.8.8.8
)。
理想情况下,我可以继续使用这些 ec2 实例的默认 DNS 设置并“挂钩”其中,但也许我需要将其炸毁。