web-dev-qa-db-ja.com

Linuxnetstatはipv4マップされたipv6アドレスを表示します

Linuxマシンでipv6を無効にしてネットワークサービスを再起動し、インターフェイスにipv6アドレスが割り当てられていない場合でも、デーモンの1つ(具体的にはcassandra)は、netstatをチェックインするときに::ffff:10.xxx.x.xx:9042のようにipv4マップされたipv6アドレスを使用しています。

Straceを確認しましたが、sa_family=AF_INET, sin_port=htons(44315), sin_addr=inet_addr("127.0.0.1")を使用しており、AF_INET6を使用していません。 ipv6がまだアクティブなのですか?なぜこれが必要なのですか?

Networkengineering でもこの質問をしましたが、どこに質問すればよいかわかりません。申し訳ありませんが、関係のないセクションにあるものを削除してください。

3
scott

これ 役立つはずです。それは言う

IPv6アプリケーションとIPv4アプリケーションの互換性

AF_INET6アドレスファミリで記述されたソケットアプリケーションにより、インターネットプロトコルバージョン6(IPv6)アプリケーションはインターネットプロトコルバージョン4(IPv4)アプリケーション(AF_INETアドレスファミリを使用するアプリケーション)と連携できます。この機能により、ソケットプログラマーはIPv4にマップされたIPv6アドレス形式を使用できます。このアドレス形式は、IPv6アドレスとして表されるIPv4ノードのIPv4アドレスを表します。 IPv4アドレスはIPv6アドレスの下位32ビットにエンコードされ、上位96ビットは固定プレフィックス0:0:0:0:0:FFFFを保持します。たとえば、IPv4にマップされたアドレスは次のようになります。

:: FFFF:192.1.1.1

これらのアドレスは、指定されたホストにIPv4アドレスしかない場合、getaddrinfo()APIによって自動的に生成できます。

1
nohup