我正在开展一个涉及物联网设备(现已弃用的 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
。然后我禁用了该服务并向 发送了ping
。
yahoo.com
两个请求都没有丢失数据包。
我的问题如下:
这项服务在做什么?
如果它为本地应用程序提供名称解析,为什么它会在
0.0.0.0
接口上监听?这是一个安全问题吗?
禁用此服务可能产生哪些影响?
在此先感谢任何信息/帮助。如果我第一次发帖,没有遵守问题格式,请见谅。请根据需要进行编辑。
答案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