systemd-resolved 服务做什么,它是否需要监听所有接口?

jee*_*ves 17 linux systemd

我正在从事一个涉及 IOT 设备(现已弃用的 Intel Galileo)的项​​目。我正在考虑强化这些设备,我注意到该systemd-resolved服务正在侦听所有接口 ( 0.0.0.0)。

root@hostname:~# netstat -altnp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:5355            0.0.0.0:*               LISTEN      240/systemd-resolve
Run Code Online (Sandbox Code Playgroud)

在阅读了 freedesktop.org 对这里服务的描述后,它指出,

systemd-resolved 是一个系统服务,它为本地应用程序提供网络名称解析。

我跑了一个测试,我跑了pinggoogle.com了哪里systemd-resolved正在运行。然后我禁用了该服务并发送了一个pingyahoo.com. 两个请求都没有丢包。

我的问题如下:

  1. 这项服务是做什么的?

  2. 如果它为本地应用程序提供名称解析,它为什么要监听0.0.0.0接口?

  3. 这是安全问题吗?

  4. 禁用此服务有哪些潜在影响?

提前感谢您提供任何信息/帮助。如果我没有遵守问题格式,第一次发帖,请见谅。请根据需要进行编辑。

小智 20

systemd-resolvedsystemd 需要。除非您要安装替代的 DNS 解析器,否则您应该保留它。

需要注意的是,它实际上是在侦听 UDP 数据包,127.0.0.53:53以便为您进行 DNS 解析:

# netstat -npa | grep systemd-resolve
tcp        0      0 0.0.0.0:5355            0.0.0.0:*               LISTEN      205/systemd-resolve
tcp6       0      0 :::5355                 :::*                    LISTEN      205/systemd-resolve
udp        0      0 127.0.0.53:53           0.0.0.0:*                           205/systemd-resolve
udp        0      0 0.0.0.0:5355            0.0.0.0:*                           205/systemd-resolve
udp6       0      0 :::5355                 :::*                                205/systemd-resolve
Run Code Online (Sandbox Code Playgroud)

端口5355套接字将实现链路本地多播名称解析 (LLMNR),这是一项仅在 LAN 中有用的功能。

要禁用它,请编辑/etc/systemd/resolved.conf并更改该行

#LLMNR=yes
Run Code Online (Sandbox Code Playgroud)

LLMNR=no
Run Code Online (Sandbox Code Playgroud)

然后重新启动服务service systemd-resolved restart并再次检查:

# netstat -npa | grep systemd-resolve
udp        0      0 127.0.0.53:53           0.0.0.0:*                           404/systemd-resolve
Run Code Online (Sandbox Code Playgroud)