Libvirtd TCP 端口 16514 查询

Libvirtd TCP 端口 16514 查询

我有一台运行 libvirtd 的服务器。我刚刚检查了 libvirtd 端口并看到以下输出。我想知道为什么端口 16514 PID 始终为 1,以及为什么 tcp6 处理具有多连接的 ipv4。

有人可以告诉我吗?

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)

答案1

  • 第一部分是关于 systemd 基于套接字的激活。
  • 第二部分是关于 IPv4/IPv6 双栈处理

systemd 基于套接字的激活

systemd.socket

以“.socket”结尾的单元配置文件包含有关 IPC 或网络套接字或由 systemd 控制和监督的文件系统 FIFO 的信息,例如基于套接字的激活

对于每个套接字单元,必须存在一个匹配的服务单元[...]

请注意,使用套接字单元配置套接字激活的守护程序软件需要能够从 systemd 接受套接字,可以通过 systemd 的本机套接字传递接口(参见sd_listen_fds(3) 有关所使用的精确协议和文件描述符传递顺序的详细信息)或通过传统inetd(8)-style 套接字传递(即通过标准输入和输出传递套接字,在服务文件中使用 StandardInput=socket)。

此功能是对inetd(“互联网超级服务器”)可以提供,但可能需要应用程序的额外支持(用于 systemd 的本机套接字传递接口)。

libvirtd 确实提供了这样的支持:

单片系统集成

当 libvirtd 守护进程由 systemd 管理时,可以使用许多所需的功能,最显著的是套接字激活。

  • libvirtd.service- 在系统模式下启动 libvirtd 守护进程的主要单元文件。
  • libvirtd.socket- 主读写 UNIX 套接字对应的单元文件/var/run/libvirt/libvirt-sock

看来楼主的设置不只是使用默认的 unix 套接字,还启用了TLS 远程连接

目标是让systemd无需运行即可管理套接字libvirtd直到收到该套接字上的请求。systemd然后将开始libvirtd继承套接字的服务。

IPv6采用IPv4/IPv6双栈模式

第二个功能就是双 IPv4/IPv6 堆栈的工作方式:使用 IPv6 API,免费获取 IPv4。可以使用套接字IPV6_ONLY选项禁用此功能,但默认为双堆栈,如 RFC 3493:IPv6 的基本套接字接口扩展中所鼓励的那样:

5.3 AF_INET6 套接字的 IPV6_V6ONLY 选项

此套接字选项将 AF_INET6 套接字限制为仅用于 IPv6 通信。如第 <3.7 与 IPv4 节点的兼容性>,AF_INET6 套接字可用于 IPv4 和 IPv6 通信。

默认情况下此选项是关闭的。

这意味着默认情况下,IPv6 可以在遵循 RFC 的系统上处理 IPv4,并且应用程序不会主动禁用此功能。

netstat选择显示纯 IPv4,但例如在已建立的套接字实际上是IPv4 映射的 IPv6 地址:(::ffff:10.1.6.140::ffff:0a01:068css -anpt在 Linux 上显示。金属丝当然保持正常的 IPv4 地址。

相关内容