netstat — IPv4デーモンが-A inet6にのみリストされているポートをリッスンするのはなぜですか?


22

私はコンピューターを持っています:

Linux superhost 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux

すべてのインターフェイスでポート80でApacheを実行しnetstat -planA inet、には表示されませんが、予期せずに次の場所にありnetstat -planA inet6ます:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp6       0      0 :::5672                 :::*                    LISTEN      2402/beam.smp   
tcp6       0      0 :::111                  :::*                    LISTEN      1825/rpcbind    
tcp6       0      0 :::9200                 :::*                    LISTEN      2235/java       
tcp6       0      0 :::80                   :::*                    LISTEN      2533/apache2    
tcp6       0      0 :::34611                :::*                    LISTEN      1856/rpc.statd  
tcp6       0      0 :::9300                 :::*                    LISTEN      2235/java       
...
tcp6       0      0 10.0.176.93:80          10.0.76.98:53704        TIME_WAIT   -               
tcp6       0      0 10.0.176.93:80          10.0.76.98:53700        TIME_WAIT   -               

上記のように、TCP4で問題なく到達できます。ただし、これらの接続も下にリストされtcp6ます。どうして?


1
すべてのIPv4アドレスはIPv6アドレスに直接マップされます(その逆はありません)。参照:en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses
Patrick 14

4
使用を中止してくださいnetstat?それは死んだ- 10年前。使用iproute2をさんss
mikeserv

回答:


16

デフォルトでは、Apache Listenパラメーターにアドレスを指定しない場合、アドレスを使用してipv6アドレスを処理しIPv4-mapped IPv6ます。あなたはで見ることができますアパッチのIPv6

の出力は、netstatApacheがIPv4アドレスをリッスンしていないことを意味しません。それはIPv4-mapped IPv6住所です。


IPv4アドレスをリッスンする他のサービスがありますが、netstatによってtcp6としてリストされます。たとえば、ElasticSearch
Mischa Arefiev 14

@Patrickが提供するウィキペディアのリンクを読んでいると思います。IPv4-mapped IPv6アドレスを使用するすべてのサービスはtcp6、netstatの出力に表示されます。
初心者14

14

これは、すべてのIPv4アドレスがIPv6アドレスでもあるためです。IPv4アドレスの1対1のマッピングに使用するために、IPv6アドレスの小さな範囲が確保されました。たとえば、IPv4アドレス192.0.2.128はIPv6アドレスを介してアクセスできます::ffff:192.0.2.128。これは、IPv6のみをサポートするアプリケーションがIPv4アドレスでリッスンできるようにするために行われました。IPv4はIPv6アドレス(NATまたは他のソリューションを使用できます)を処理する方法を知らないため、これは、IPv6アドレス(マッピングされていない)が他の事柄なしでIPv4アドレスと通信するために使用できないことに注意してくださいしかし)。

すべてのIPv4アドレスはIPv6で表されるため、IPv6 netstatを使用してアプリを一覧表示するように要求すると、IPv4も取得されます。またはとして
表すこともできますが、アプリケーション開発者は、通常のドット表記のIPv4アドレスとして表示することを選択しました。10.0.176.93::ffff:10.0.176.93::ffff:a00:b05d


ありがとうございますが、定期的に行っているとき、彼らはポップアップしない理由これは答えません-A inet
ミーシャArefiev

リスニング接続がtcp6ソケットとしてのみリストされている理由は、それらが実際にはIPv6ソケットであるが、そうするように構成されていればIPv4接続も受け入れるという追加機能があるためだと思います。ソケットはINADDR_ANY6にバインドされており、IPv4接続が着信すると、アドレスはプレフィックス:: ffff:0000/96でIPv6アドレスにマップされます。これは、これらのマッピングアドレスの唯一の用途です。ワイヤー上で使用しないでください。
ヨハンMyréen17年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.