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のソケットベースのアクティベーション
名前が「.socket」で終わるユニット設定ファイルは、systemdによって制御および監視されるIPCまたはネットワークソケットまたはファイルシステムFIFOに関する情報をエンコードします。ソケットベースのアクティベーション。
各ソケット ユニットには、一致するサービス ユニットが存在する必要があります [...]
ソケットユニットによるソケットアクティベーション用に設定されたデーモンソフトウェアは、systemdのネイティブソケットパッシングインターフェース(sd_listen_fds(3) 使用される正確なプロトコルとファイル記述子が渡される順序の詳細については、inetd(8)スタイルのソケット渡し (つまり、サービス ファイルで StandardInput=socket を使用して、標準入力および出力経由で渡されるソケット)。
この機能は、inetd(「インターネット スーパー サーバー」) は提供できますが、アプリケーションからの追加サポート (systemd のネイティブ ソケット パッシング インターフェイス用) が必要になる場合があります。
libvirtd はそのようなサポートを提供します:
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 -anpt
Linuxで表示される。ワイヤーもちろん通常の IPv4 アドレスのままです。