![为什么 systemd-networkd 认为 UseDomains=(来自 DHCP 的域搜索列表)不如 LLMNR 安全?](https://linux22.com/image/135845/%E4%B8%BA%E4%BB%80%E4%B9%88%20systemd-networkd%20%E8%AE%A4%E4%B8%BA%20UseDomains%3D%EF%BC%88%E6%9D%A5%E8%87%AA%20DHCP%20%E7%9A%84%E5%9F%9F%E6%90%9C%E7%B4%A2%E5%88%97%E8%A1%A8%EF%BC%89%E4%B8%8D%E5%A6%82%20LLMNR%20%E5%AE%89%E5%85%A8%EF%BC%9F.png)
使用域名=
采用布尔参数或特殊值“route”。如果为 true,从 DHCP 服务器收到的域名将用作此链接上的 DNS 搜索域,类似于 Domains= 设置的效果。如果设置为“route”,从 DHCP 服务器接收到的域名将仅用于路由 DNS 查询,而不用于搜索,类似于参数前缀为“~”时的 Domains= 设置的效果。默认为 false。
建议仅在受信任的网络上启用此选项,因为设置此选项会影响所有主机名的解析,特别是单标签名称的解析。通常,仅使用提供的域作为路由域而不是搜索域更安全,以免影响单标签名称的本地解析。
比较
LLMNR=
布尔值或“解析”。如果为 true,则在链路上启用链路本地多播名称解析。设置为“解析”时,仅启用解析,不启用主机注册和公告。默认为 true。
但 LLMNR 也可以解析单标签名称。谁能解释一下吗?
来源:https://www.freedesktop.org/software/systemd/man/systemd.network.html从 systemd 版本 239 开始。
答案1
2015 年发布了一个理由。
https://www.mail-archive.com/[电子邮件受保护]/msg31563.html
iiuc,人们担心的是,多级域名(即至少有一个点的域名)可能会通过控制搜索后缀而被欺骗。但对于至少有两个级别的名称,glibc 仅使用搜索列表作为后备。
好吧,当然,能够在搜索逻辑开始时影响事物比在搜索逻辑结束时影响事物更成问题,但我仍然认为这是有问题的,因为它仍然允许您插入“home.foobar.com” ”进入一个域“foobar.com”,该域本身没有“home.foobar.com”,但只有“www.bar.com”......
当然,经典(非 DNSSEC)DNS 永远不会完全安全,但我仍然相信我们应该默认使用更安全的选项,并允许其他选项。
改变搜索路径本质上在公共网络上是没有意义的,只有当您非常了解您的网络并在某种程度上信任它时才有意义。因此,选择加入对我来说似乎是更好的选择。