我正在开发一个涉及IOT设备的项目(现已弃用的英特尔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对服务here的描述后,
它说,
systemd-resolved is a system service that provides network name resolution to local applications.
我运行了一个测试,在那里我运行ping到google.com,其中systemd-resolved正在运行.然后我禁用了该服务并发送了ping
yahoo.com.两个请求都没有数据包丢失.
我的问题如下:
这项服务在做什么?
如果它为本地应用程序提供名称解析,为什么它会监听0.0.0.0接口?
这是安全问题吗?
禁用此服务会产生哪些潜在影响?
提前感谢您提供任何信息/帮助.
如果我没有遵守问题格式,请第一时间发帖道歉.
请根据需要进行编辑.
解决方法
systemd需要systemd-resolved.除非您正在安装备用DNS解析器,否则应该保留它.
重要的是要注意它实际上是在127.0.0.53:53上监听UDP数据包来为你做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