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.