Proč systemd-resolved
z systemd
verze 219 poslouchat na jednom náhodném portu UDP?
Jeden z mých strojů poslouchá na portu 58557
(CentOS 7 s systemd
verze 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
Jiný počítač naslouchá na portu 52010
(také CentOS 7 s systemd
verze 219).
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
Jakmile restartuji počítače, systemd-resolved
naslouchá na jiném portu UDP.
Mám třetí stroj, na kterém běží Fedora 27 s systemd
verze 234. Zde systemd
není otevřete náhodný port UDP.
Jako vedlejší poznámku jsem zakázal LLMNR
, obojí v /etc/systemd/network/20-eth0.network
a /etc/systemd/network/20-eth0.network
, tak to nemůže být ono. Také LLMNR
by otevřel port 5355.
$ grep LLMNR /etc/systemd/resolved.conf
LLMNR=no
$ grep LLMNR /etc/systemd/network/20-eth0.network
LLMNR=no
Přijatá odpověď:
Jak jsem zmínil v komentáři k otázce, spustil jsem systemd-resolved
ve strace, zatímco watch[ing] netstat -tunlp
. Všiml jsem si, že port se otevře až po prvním požadavku na překlad názvu DNS.
Zachytil jsem provoz pomocí tcpdump -i eth0 -nn -w capture_file
, poznamenal port, který vidím v netstat
a podíval se na výstup pomocí Wireshark. Filtr ve Wiresharku je jednoduchý:udp.port eq 37078
(pomocí dříve uvedeného portu udp).
Mohu potvrdit, že port UDP, který otevírá systemd-resolved
je port, který se používá ke komunikaci se serverem DNS.