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

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

我正在开展一个涉及物联网设备(现已弃用的 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

阅读 freedesktop.org 对该服务的描述后这里,其中指出,

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

我运行了一次测试,我运行ping了正在运行的google.com地方systemd-resolved。然后我禁用了该服务并向 发送了pingyahoo.com两个请求都没有丢失数据包。

我的问题如下:

  1. 这项服务在做什么?

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

  3. 这是一个安全问题吗?

  4. 禁用此服务可能产生哪些影响?

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

答案1

systemd-resolved是 systemd 所必需的。除非您要安装替代 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

端口5355套接字用于实现链路本地多播名称解析 (LLMNR),该功能仅在 LAN 中有用。

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

#LLMNR=yes

LLMNR=no

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

# netstat -npa | grep systemd-resolve
udp        0      0 127.0.0.53:53           0.0.0.0:*                           404/systemd-resolve

相关内容