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.