Pourquoi systemd-resolved
de systemd
la version 219 écoute sur un port UDP aléatoire ?
Une de mes machines écoute sur le port 58557
(CentOS 7 avec systemd
version 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
Une autre machine écoute sur le port 52010
(également CentOS 7 avec systemd
version 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
Une fois que j'ai redémarré les machines, systemd-resolved
écoute sur un autre port UDP.
J'ai une troisième machine, qui exécute Fedora 27 avec systemd
version 234. Ici, systemd
n'est pas ouvrir un port UDP aléatoire.
En remarque, j'ai désactivé LLMNR
, tous deux dans /etc/systemd/network/20-eth0.network
et /etc/systemd/network/20-eth0.network
, donc ça ne peut pas être ça. Aussi, LLMNR
ouvrirait le port 5355.
$ grep LLMNR /etc/systemd/resolved.conf
LLMNR=no
$ grep LLMNR /etc/systemd/network/20-eth0.network
LLMNR=no
Réponse acceptée :
Comme je l'ai mentionné dans un commentaire à la question, j'ai exécuté systemd-resolved
dans strace, tandis que watch[ing] netstat -tunlp
. J'ai remarqué que le port n'est ouvert qu'une fois que j'ai fait la première requête pour résoudre un nom DNS.
J'ai capturé le trafic en utilisant tcpdump -i eth0 -nn -w capture_file
, notez le port que je vois dans netstat
et regardé la sortie en utilisant Wireshark. Le filtre dans Wireshark est simple :udp.port eq 37078
(en utilisant le port udp noté précédemment).
Je peux confirmer que le port UDP qui est ouvert par systemd-resolved
est le port utilisé pour communiquer avec le serveur DNS.