Tengo un servidor que ejecuta libvirtd. Acabo de comprobar los puertos libvirtd y veo el resultado a continuación. Me preguntaba por qué el PID del puerto 16514 es siempre 1 y por qué tcp6 maneja ipv4 con conexiones múltiples.
¿Alguien puede hacérmelo saber?
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)
Respuesta1
- La primera parte trata sobre la activación basada en sockets de systemd.
- La segunda parte trata sobre el manejo de doble pila IPv4/IPv6.
activación basada en sockets de systemd
Un archivo de configuración de unidad cuyo nombre termina en ".socket" codifica información sobre un IPC o socket de red o un sistema de archivos FIFO controlado y supervisado por systemd, por ejemploactivación basada en socket.
Para cada unidad de enchufe debe existir una unidad de servicio adecuada [...]
Tenga en cuenta que el software demonio configurado para la activación de sockets con unidades de socket debe poder aceptar sockets de systemd, ya sea a través de la interfaz nativa de paso de sockets de systemd (consultesd_listen_fds(3) para obtener detalles sobre el protocolo preciso utilizado y el orden en el que se pasan los descriptores de archivo) o a través de la tradicionalined(8)-paso de sockets de estilo (es decir, sockets pasados a través de entrada y salida estándar, usando StandardInput=socket en el archivo de servicio).
Esta característica es una mejora con respecto a lo que elinetd("superservidor de Internet") podría proporcionar, pero puede requerir soporte adicional de la aplicación (para la interfaz de paso de socket nativo de systemd).
libvirtd ofrece dicho soporte:
Integración monolítica de Systemd
Cuando systemd administra el demonio libvirtd, hay disponibles una serie de características deseables, entre las que destaca la activación de socket.
libvirtd.service
- el archivo de la unidad principal para iniciar el demonio libvirtd en modo sistema.
libvirtd.socket
- el archivo unitario correspondiente al socket UNIX principal de lectura y escritura/var/run/libvirt/libvirt-sock
.
Aquí parece que la configuración de OP no solo usa el socket Unix predeterminado sino que está habilitadaConexiones remotas TLS.
El objetivo es dejarsistemadgestionar el socket sin tener que ejecutarlibvirtdhasta que se reciba una solicitud en este socket.sistemadentonces iniciará ellibvirtdservicio que hereda el socket.
IPv6 utiliza el modo de pila dual IPv4/IPv6
La segunda característica es cómo funciona la pila dual IPv4/IPv6: use la API de IPv6 y obtenga IPv4 gratis. Esto se puede desactivar con la IPV6_ONLY
opción de socket, pero el valor predeterminado es doble pila, como se recomienda en RFC 3493: Extensiones de interfaz de socket básica para IPv6:
5.3 Opción IPV6_V6ONLY para enchufes AF_INET6
Esta opción de socket restringe los sockets AF_INET6 a comunicaciones IPv6 únicamente. Como se indica en la sección <3.7 Compatibilidad con Nodos IPv4>, los sockets AF_INET6 se pueden utilizar para comunicaciones tanto IPv4 como IPv6.
De forma predeterminada, esta opción está desactivada.
lo que significa que, de forma predeterminada, IPv6 puede manejar IPv4 en un sistema que sigue los RFC y con una aplicación que no desactiva activamente esta función.
netstat
elige mostrar un IPv4 simple, pero por ejemplo la dirección local que se ve en la red establecidaenchufeses en realidad unDirección IPv6 asignada a IPv4: ::ffff:10.1.6.140
(o ::ffff:0a01:068c
) como se ss -anpt
mostraría en Linux. La dirección en elcablePor supuesto, sigue siendo una dirección IPv4 normal.