我有一个AWS EC2实例网络。它们中的大多数都使用默认的VPC的DNS解析器来防止外接和解析内部域(使用自定义TLD)。一切都很好。
然而,有一个(Ubuntu)实例需要使用通用的公共解析器才能到达整个Internet (例如8.8.8.8)
我设法通过用/etc/systemd/ work替换/etc/systemd/work来完成这项工作--east-1
[Resolve]
DNS=8.8.8.8 208.67.222并添加一个/etc/systemd/ adding /adding
[Resolve]
Domains=MYTLD
DNS=10.6.0.2在重新启动systemd解析之后,实例可以很好地解决所有域。但是当我把这个完全相同的配置应用到我们东部2的一个几乎相同的网络时,公共DNS就不起作用了。
我在StackExchange上发现的一项建议是,将符号链接/etc/presv.conf转到/run/systemd/ found /surv.conf。这使得公共DNS开始解析,但是内部TLD停止了。
如何使DNS在任何区域持续解决?
发布于 2022-12-05 21:12:01
我找到了解决办法。
DNS Resolver被设置为默认块(很明显。这是这项工作的重点。)但是响应被设置为NODATA。这就创建了一个竞赛条件:systemd使用链接-本地多播名称解析来获得DNS结果。这意味着它同时查询AWS内部服务器和公共服务器之一。LLMNR返回它获得的第一个成功结果或最后一个失败(如果所有结果都失败)。
从技术上讲,来自DNS Resolver的NODATA结果是成功的,因此如果该结果首先到达,则返回该结果。将操作更改为NXDOMAIN --这是systemd解决方案的失败结果--解决了问题。
https://serverfault.com/questions/1117166
复制相似问题