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 のソケットベースのアクティベーションについてです。
  • 2番目の部分はIPv4/IPv6デュアルスタック処理についてです

systemdのソケットベースのアクティベーション

systemd.ソケット:

名前が「.socket」で終わるユニット設定ファイルは、systemdによって制御および監視されるIPCまたはネットワークソケットまたはファイルシステムFIFOに関する情報をエンコードします。ソケットベースのアクティベーション

各ソケット ユニットには、一致するサービス ユニットが存在する必要があります [...]

ソケットユニットによるソケットアクティベーション用に設定されたデーモンソフトウェアは、systemdのネイティブソケットパッシングインターフェース(sd_listen_fds(3) 使用される正確なプロトコルとファイル記述子が渡される順序の詳細については、inetd(8)スタイルのソケット渡し (つまり、サービス ファイルで StandardInput=socket を使用して、標準入力および出力経由で渡されるソケット)。

この機能は、inetd(「インターネット スーパー サーバー」) は提供できますが、アプリケーションからの追加サポート (systemd のネイティブ ソケット パッシング インターフェイス用) が必要になる場合があります。

libvirtd はそのようなサポートを提供します:

モノリシック Systemd 統合

libvirtd デーモンが systemd によって管理されている場合、ソケットのアクティブ化など、いくつかの望ましい機能が利用できます。

  • libvirtd.service- システムモードで libvirtd デーモンを起動するためのメインユニットファイル。
  • libvirtd.socket- メインの読み取り/書き込み UNIX ソケットに対応するユニット ファイル/var/run/libvirt/libvirt-sock

ここで、OPの設定はデフォルトのUNIXソケットを使用するだけでなく、有効になっているようです。TLS リモート接続

目標はシステム実行せずにソケットを管理するlibvirtdこのソケットで要求が受信されるまで。システムその後、libvirtdソケットを継承するサービス。

IPv6はIPv4/IPv6デュアルスタックモードを使用する

2 番目の機能は、デュアル 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 の両方の通信に使用できます。

デフォルトではこのオプションはオフになっています。

つまり、デフォルトでは、RFC に準拠し、アプリケーションがこの機能を有効に無効にしていない場合、IPv6 はシステム上で IPv4 を処理できます。

netstatプレーンなIPv4を表示することを選択しますが、たとえば確立されたIPv4アドレスに表示されるローカルアドレスはソケット実際にはIPv4 マッピングされた IPv6 アドレス: ::ffff:10.1.6.140(または::ffff:0a01:068c) はss -anptLinuxで表示される。ワイヤーもちろん通常の IPv4 アドレスのままです。

関連情報