来自 CentOS 7 的 systemd 版本 219 监听随机 UDP 端口

来自 CentOS 7 的 systemd 版本 219 监听随机 UDP 端口

为什么systemd-resolvedsystemd版本 219 开始侦听一个随机 UDP 端口?

我的一台机器监听端口58557(CentOS 7,systemd版本 219)。

sudo netstat -tunlp|grep -P '^Active|^Proto|systemd'
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address  Foreign Address  State  PID/Program name
udp        0      0 0.0.0.0:58557  0.0.0.0:*               372/systemd-resolve

另一台机器侦听端口52010(也是systemd版本 219 的 CentOS 7)。

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address  Foreign Address  State  PID/Program name
udp      768      0 0.0.0.0:52010  0.0.0.0:*               398/systemd-resolve

一旦我重新启动机器,systemd-resolved就会监听另一个 UDP 端口。

我有第三台机器,它运行systemd版本 234 的 Fedora 27。这里,systemd确实不是打开随机 UDP 端口。

附带说明一下,我在和LLMNR中都禁用了,所以这不可能是这样。另外,将打开端口 5355。/etc/systemd/network/20-eth0.network/etc/systemd/network/20-eth0.networkLLMNR

$ grep LLMNR /etc/systemd/resolved.conf
LLMNR=no
$ grep LLMNR /etc/systemd/network/20-eth0.network
LLMNR=no

答案1

正如我在对该问题的评论中提到的,我systemd-resolved在 strace 中运行,而watch[ing] netstat -tunlp.我注意到只有当我发出第一个解析 DNS 名称的请求时,该端口才会打开。

我使用 捕获了流量tcpdump -i eth0 -nn -w capture_file,记下我看到的端口netstat并使用 Wireshark 查看输出。 Wireshark 中的过滤器很简单:(udp.port eq 37078使用前面提到的 down udp 端口​​)。

我可以确认正在打开的UDP端口systemd-resolved是用于与DNS服务器通信的端口。

相关内容