Ich habe einen Server, auf dem libvirtd läuft. Ich habe gerade die libvirtd-Ports überprüft und sehe die Ausgabe unten. Ich habe mich gefragt, warum Port 16514 PID immer 1 ist und warum TCP6 IPv4 mit mehreren Verbindungen verarbeitet.
Kann mir das bitte jemand sagen.
root@prd-140:~# netstat -anpt |grep 16514
tcp6 0 0 :::16514 :::* LISTEN 1/systemd
tcp6 0 0 10.1.6.140:16514 10.2.127.52:60556 ESTABLISHED 12289/libvirtd
tcp6 0 0 10.1.6.140:16514 10.2.127.52:29463 ESTABLISHED 12289/libvirtd
root@prd-140:~# lsof -i :16514
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 59u IPv6 9761899 0t0 TCP *:16514 (LISTEN)
libvirtd 12289 root 5u IPv6 9761899 0t0 TCP *:16514 (LISTEN)
libvirtd 12289 root 30u IPv6 20539283 0t0 TCP prd-140:16514->10.2.127.52:60556 (ESTABLISHED)
libvirtd 12289 root 35u IPv6 20549679 0t0 TCP prd-140:16514->10.2.127.52:29463 (ESTABLISHED)
Antwort1
- Der erste Teil befasst sich mit der Socket-basierten Aktivierung von systemd.
- Der zweite Teil beschäftigt sich mit der Handhabung des IPv4/IPv6-Dual-Stacks.
Socket-basierte Aktivierung von systemd
Eine Unit-Konfigurationsdatei, deren Name auf ".socket" endet, kodiert Informationen über einen IPC oder Netzwerk-Socket oder ein Dateisystem-FIFO, das von systemd gesteuert und überwacht wird, zum BeispielSocket-basierte Aktivierung.
Zu jeder Steckdoseneinheit muss eine passende Serviceeinheit vorhanden sein, [...]
Beachten Sie, dass die Daemon-Software, die für die Socket-Aktivierung mit Socket-Units konfiguriert ist, in der Lage sein muss, Sockets von systemd zu akzeptieren, entweder über systemds native Socket-Passing-Schnittstelle (siehesd_listen_fds(3) für Details zum genauen verwendeten Protokoll und zur Reihenfolge, in der die Dateideskriptoren übergeben werden) oder über herkömmlicheinetd(8)-Style-Socket-Übergabe (d. h. Sockets werden über die Standardeingabe und -ausgabe übergeben, unter Verwendung von „StandardInput=socket“ in der Servicedatei).
Diese Funktion ist eine Verbesserung gegenüber dem, was dieinetd("Internet-Superserver") könnte dies bereitstellen, erfordert aber ggf. zusätzliche Unterstützung von der Anwendung (für die native Socket-Passing-Schnittstelle von systemd).
libvirtd bietet solche Unterstützung:
Monolithische Systemd-Integration
Wenn der Libvirtd-Daemon von Systemd verwaltet wird, stehen zahlreiche nützliche Funktionen zur Verfügung, insbesondere die Socket-Aktivierung.
libvirtd.service
– die Haupt-Unit-Datei zum Starten des libvirtd-Daemons im Systemmodus.
libvirtd.socket
- die Unit-Datei, die dem wichtigsten UNIX-Socket mit Lese-/Schreibzugriff entspricht/var/run/libvirt/libvirt-sock
.
Hier scheint es, dass die Einstellungen des OP nicht nur den Standard-Unix-Socket verwenden, sondern aktiviert sindTLS-Remoteverbindungen.
Das Ziel ist,systemdVerwalten Sie den Socket, ohne ihn ausführen zu müssenlibvirtdbis eine Anfrage an diesem Socket eingeht.systemdstartet dann dielibvirtdDienst, der den Socket erbt.
IPv6 verwendet den IPv4/IPv6-Dual-Stack-Modus
Die zweite Funktion ist die Funktionsweise des dualen IPv4/IPv6-Stacks: Verwenden Sie die IPv6-API und erhalten Sie IPv4 kostenlos. Dies kann mit der IPV6_ONLY
Socket-Option deaktiviert werden, aber standardmäßig ist der Dual-Stack aktiviert, wie in RFC 3493 empfohlen: Grundlegende Socket-Schnittstellenerweiterungen für IPv6:
5.3 IPV6_V6ONLY-Option für AF_INET6-Sockets
Diese Socket-Option beschränkt AF_INET6-Sockets ausschließlich auf IPv6-Kommunikation. Wie in Abschnitt <3.7 Kompatibilität mit IPv4-Knoten> AF_INET6-Sockets können sowohl für IPv4- als auch für IPv6-Kommunikation verwendet werden.
Standardmäßig ist diese Option deaktiviert.
Dies bedeutet, dass IPv6 standardmäßig mit IPv4 auf einem System umgehen kann, das den RFCs entspricht und eine Anwendung diese Funktion nicht aktiv deaktiviert.
netstat
wählt die Anzeige einer einfachen IPv4-Adresse, aber zum Beispiel die lokale Adresse, die auf dem etabliertenSteckdosenist eigentlich einIPv4-zugeordnete IPv6-Adresse: ::ffff:10.1.6.140
(oder ::ffff:0a01:068c
) wie es ss -anpt
unter Linux angezeigt würde. Die Adresse auf demDrahtbleibt natürlich eine normale IPv4-Adresse.