如何在 systemd-resolved 中禁用 LLMNR?

Moo*_*anT 11 systemd systemd-resolved

如何在 中禁用 LLMNR systemd-resolved

我尝试添加:LLMNR=no/etc/systemd/resolved.conf

但是当我输入时systemd-resolve --status它仍然显示

LLMNR 设置:是

我试过重新启动计算机并重新启动 systemd-resolved.service

fil*_*den 14

有一个通用的 LLMNR 设置和每个链接的 LLMNR 设置

中有 LLMNR 设置systemd-resolved,还有每个链接的 LLMNR 设置systemd-networkd

您在systemd-resolve --status输出中查看的设置实际上是systemd-networkd. 除此之外,如果您没有运行systemd-networkd,它仍然会显示LLMNR setting: yes

默认设置将显示如下内容:

Link 2 (ens3)
      Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
Run Code Online (Sandbox Code Playgroud)

这也意味着systemd-resolved将在这些接口上的 UDP 端口 5355(LLMNR 端口)上接收请求。

更改resolved.conf 文件将更改“当前范围:”行

如果您通过设置禁用它LLMNR=noresolved.conf和重新启动systemd-resolved,然后你会得到:

Link 2 (ens3)
      Current Scopes: DNS
       LLMNR setting: yes
Run Code Online (Sandbox Code Playgroud)

您可以看到范围从 更改DNS LLMNR/IPv4 LLMNR/IPv6为 just DNS。因此它将仅使用 DNS,不再接受 UDP 端口 5355 上的请求。

更改 *.network 文件将更改“LLMNR 设置:”行

如果您还使用systemd-networkd,则可以通过在该接口的文件部分中进行设置LLMNR=no,进一步禁用该接口上的 LLMNR 。[Network]*.network

例如:

# /etc/systemd/network/90-ens3-nollmnr.network
[Match]
Name=ens3

[Network]
LLMNR=no
Run Code Online (Sandbox Code Playgroud)

设置并重新启动后systemd-networkd,输出systemd-resolve --status将包括:

Link 2 (ens3)
      Current Scopes: DNS
       LLMNR setting: no
Run Code Online (Sandbox Code Playgroud)

概括

所以,简而言之,LLMNR setting: yes只是意味着它没有在该接口上明确禁用。如果它由systemd-networkd. 如果您通过解决自身禁用它,它基本上具有相同的效果,但它只会显示在当前范围的列表中,而不是真正在LLMNR setting.

注意:一些指向代码的指针显示这LLMNR=yes此处此处的默认设置。

  • 老兄非常感谢,你甚至链接了源代码 (2认同)