Warum wird systemd-resolved von systemd Version 219 auf einem zufälligen UDP-Port lauschen?
Einer meiner Rechner lauscht auf Port 58557 (CentOS 7 mit 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
Ein anderer Rechner lauscht auf Port 52010 (auch CentOS 7 mit 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
Sobald ich die Maschinen neu starte, systemd-resolved lauscht auf einem anderen UDP-Port.
Ich habe eine dritte Maschine, auf der Fedora 27 mit systemd läuft Version 234. Hier, systemd tut nicht einen zufälligen UDP-Port öffnen.
Als Randnotiz habe ich LLMNR deaktiviert , beide in /etc/systemd/network/20-eth0.network und /etc/systemd/network/20-eth0.network , das kann es also nicht sein. Auch LLMNR würde Port 5355 öffnen.
$ grep LLMNR /etc/systemd/resolved.conf
LLMNR=no
$ grep LLMNR /etc/systemd/network/20-eth0.network
LLMNR=no
Akzeptierte Antwort:
Wie ich in einem Kommentar zur Frage erwähnt habe, habe ich systemd-resolved ausgeführt in strace, während watch[ing] netstat -tunlp . Mir ist aufgefallen, dass der Port nur geöffnet wird, wenn ich die erste Anfrage zur Auflösung eines DNS-Namens mache.
Ich habe den Datenverkehr mit tcpdump -i eth0 -nn -w capture_file erfasst , den Port notiert, den ich in netstat sehe und sah mir die Ausgabe mit Wireshark an. Der Filter in Wireshark ist einfach:udp.port eq 37078 (unter Verwendung des zuvor notierten udp-Ports).
Ich kann bestätigen, dass der UDP-Port, der von systemd-resolved geöffnet wird ist der Port, der für die Kommunikation mit dem DNS-Server verwendet wird.