¿Por qué systemd-resolved
de systemd
versión 219 escucha en un puerto UDP aleatorio?
Una de mis máquinas escucha en el puerto 58557
(CentOS 7 con systemd
versión 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
Otra máquina escucha en el puerto 52010
(también CentOS 7 con systemd
versión 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
Una vez que reinicio las máquinas, systemd-resolved
escucha en otro puerto UDP.
Tengo una tercera máquina, que ejecuta Fedora 27 con systemd
versión 234. Aquí, systemd
no abre un puerto UDP aleatorio.
Como nota al margen, he desactivado LLMNR
, ambos en /etc/systemd/network/20-eth0.network
y /etc/systemd/network/20-eth0.network
, así que esto no puede ser. Además, LLMNR
abriría el puerto 5355.
$ grep LLMNR /etc/systemd/resolved.conf
LLMNR=no
$ grep LLMNR /etc/systemd/network/20-eth0.network
LLMNR=no
Respuesta aceptada:
Como mencioné en un comentario a la pregunta, ejecuté systemd-resolved
en strace, mientras watch[ing] netstat -tunlp
. Noté que el puerto solo se abre una vez que realizo la primera solicitud para resolver un nombre DNS.
Capturé el tráfico usando tcpdump -i eth0 -nn -w capture_file
, anotó el puerto que veo en netstat
y miré la salida usando Wireshark. El filtro en Wireshark es simple:udp.port eq 37078
(usando el puerto udp anotado anteriormente).
Puedo confirmar que el puerto UDP que está abriendo systemd-resolved
es el puerto que se utiliza para comunicarse con el servidor DNS.