Perché systemd-resolved
da systemd
la versione 219 è in ascolto su una porta UDP casuale?
Una delle mie macchine è in ascolto sulla porta 58557
(CentOS 7 con systemd
versione 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
Un'altra macchina è in ascolto sulla porta 52010
(anche CentOS 7 con systemd
versione 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
Dopo aver riavviato le macchine, systemd-resolved
ascolta su un'altra porta UDP.
Ho una terza macchina, che esegue Fedora 27 con systemd
versione 234. Qui, systemd
non apri una porta UDP casuale.
Come nota a margine, ho disabilitato LLMNR
, entrambi in /etc/systemd/network/20-eth0.network
e /etc/systemd/network/20-eth0.network
, quindi non può essere questo. Inoltre, LLMNR
aprirebbe la porta 5355.
$ grep LLMNR /etc/systemd/resolved.conf
LLMNR=no
$ grep LLMNR /etc/systemd/network/20-eth0.network
LLMNR=no
Risposta accettata:
Come ho detto in un commento alla domanda, ho eseguito systemd-resolved
in strace, mentre watch[ing] netstat -tunlp
. Ho notato che la porta viene aperta solo dopo aver effettuato la prima richiesta per risolvere un nome DNS.
Ho acquisito il traffico utilizzando tcpdump -i eth0 -nn -w capture_file
, annotato la porta che vedo in netstat
e guardato l'output usando Wireshark. Il filtro in Wireshark è semplice:udp.port eq 37078
(usando la porta udp precedentemente annotata).
Posso confermare che la porta UDP che viene aperta da systemd-resolved
è la porta utilizzata per comunicare con il server DNS.