netstat出力のローカルアドレスの:::とは何ですか?


37

これは私が得るnetstat -tulpnの出力です:

tcp        0      0 127.0.0.1:2208              0.0.0.0:*                   LISTEN      2055/hpiod
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      2077/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      2138/sendmail: acce
tcp        0      0 127.0.0.1:2207              0.0.0.0:*                   LISTEN      2060/python
tcp        0      0 0.0.0.0:735                 0.0.0.0:*                   LISTEN      1825/rpc.statd
tcp        0      0 :::111                      :::*                        LISTEN      1781/rpcbind
tcp        0      0 :::80                       :::*                        LISTEN      2624/httpd
tcp        0      0 :::22                       :::*                        LISTEN      2096/sshd
udp        0      0 0.0.0.0:32768               0.0.0.0:*                               2398/avahi-daemon:
udp        0      0 0.0.0.0:68                  0.0.0.0:*                               1581/dhclient
udp        0      0 0.0.0.0:729                 0.0.0.0:*                               1825/rpc.statd
udp        0      0 0.0.0.0:732                 0.0.0.0:*                               1825/rpc.statd
udp        0      0 0.0.0.0:5353                0.0.0.0:*                               2398/avahi-daemon:
udp        0      0 0.0.0.0:631                 0.0.0.0:*                               2077/cupsd
udp        0      0 :::32769                    :::*                                    2398/avahi-daemon:
udp        0      0 :::684                      :::*                                    1781/rpcbind
udp        0      0 :::5353                     :::*                                    2398/avahi-daemon:
udp        0      0 :::111                      :::*                                    1781/rpcbind

知りたいのですが:::、ローカルアドレスで何を意味するのでしょうか?そして、外国住所0.0.0.0:*:::*は何ですか?


3
IPv6で先行ゼロを省略して、コロンだけを残すことができます。
ルイ

実際、私はあまりにも早く話しました。なぜ2つの+1ではなく3つのコロンがあるのか​​わかりません。最後のものはポートを示していると思います。
ルイ

回答:


22

他の回答の多くが言及しているように、::はすべてゼロを表し、netstatはアドレスの後にコロンを表示する場合があるため、3つのコロンを取得します。

これらの回答のいずれにも見られなかったのは、それが実際に何を意味するのかという質問に対する回答です(この場合)。

netstatの場合、::(IPv6の場合)または0.0.0.0(IPv4の場合)は、基本的に「任意」を意味します。
そのため、ソフトウェアは任意のアドレスのTCPポート80(HTTPポート)でリッスンしています。

複数のネットワークカードインターフェイスがある場合(後で説明します)、特定のアドレスのみをリッスンすることができます。たとえば、一部のソフトウェアでは、ワイヤードイーサネットを使用するネットワークカードでHTTPサーバーをリッスンさせるが、ワイヤレスネットワークを使用するネットワークカードには応答しないようにすることができます。それを行った場合、コンピューターはIPv4 192.0.2.100:80(またはIPv6 2001:db8:abcd :: 1234:80)でリッスンするようなことをするかもしれません。

ただし、 "::: 80"をリッスンしているため、コンピューターは1つの着信IPアドレスでポート80トラフィックをリッスンしておらず、任意の IPv6アドレスでポート80トラフィックをリッスンしています。

なぜあなたが聞いているインターフェイスについて気になりたいと思うでしょうか?まあ、この機能を使用した1つの方法は、コンピューターにループバックインターフェイスをリッスンさせることです。(複数のネットワークカードインターフェイスがあると言ったことを思い出してください。これが私が言った理由の1つです。実際の物理ネットワーク接続があり、ループバックインターフェイスもあると思います。これが最も一般的な設定です。最近のほとんどの種類のコンピューター。)私はSSHトンネリングでそれをしています。次に、ローカルVNCビューアーをSSHトンネルのローカルエンドに接続するなどの操作を行います。ループバックインターフェイスでSSHトンネルをリッスンさせることで、物理ネットワークインターフェイスの1つから入ってくるトラフィックをSSHトンネルがリッスンすることを心配する必要がありません。そう、

場合によっては、RFC 4291セクション2.5.2で指定されいるように、0.0.0.0または::は基本的に「指定されていない」アドレスを意味します「住所がないことを示しています」と表示されます。ソフトウェアが「無効な」アドレス(コンピューターにアドレスが割り当てられていない場合など)を参照しようとしたときに、表示する特定のアドレスがない場合に、これを時々見ました。ただし、この場合、::または0.0.0.0は「不明な」アドレスを指します。そのため、すべてのリッスンポートが「不明」と表示されます。接続が確立されている場合、リモートエンドと通信しているため、リモートエンドが誰であるかがわかります。「リスニング」接続の場合、まったく新しい会話を聞いています。そのトラフィックは、おそらく世界のどこからでも来る可能性があります。着信トラフィックは、任意のアドレスから来る可能性があります。そして、nestatが表示する方法は、すべてゼロのアドレスを指定することです。使用する特定のアドレスがないため、

ソフトウェアをすべてのネットワークインターフェイスでリッスンさせることは非常に一般的なことです。一部のソフトウェアは、特定のインターネットアドレスまたは特定のネットワークカードのみをリッスンするように構成できます。また、有効なトラフィックが予期されていない場所でソフトウェアがリッスンしないため、これはもう少し安全です。それは攻撃する能力を制限するかもしれません。ただし、多くのソフトウェアにはそのようなオプションがありません。または、そのようなオプションは多少隠されています。そのため、すべてのネットワークカードで聞くことは、それほどひどいことではありません。それは非常に一般的です。また、ソフトウェアが特定のネットワークポートでトラフィックを受信しないようにする場合は、ファイアウォールで不要なトラフィックをブロックするなど、他の方法でそれを実現できます。それを行うと、ファイアウォールがトラフィックをブロックする可能性があり、ただし、(Web)サーバーはそのネットワークインターフェイスでトラフィックをリッスンする場合があります。その場合、サーバーはそのインターフェイスでトラフィックを取得することはありませんが、netstatはサーバーがリッスンしていることを報告します(そのサーバーに到達しないトラフィックについて)。サーバーソフトウェアがすべてのインターフェイスでリッスンしているというnetstatレポートを見るのは非常に一般的であるため、特に注意する必要はありません。

最後に、この質問とこの回答はLinux固有のものではないことに言及します。(この質問に「Linux」タグが表示されるため、これについて言及しています。)表示されるコマンドラインパラメーターと表示される出力例はLinuxからのものであり、オペレーティングシステムによって表示が若干異なる場合があります。ただし、::と0.0.0.0のトピックについては、この点でnetstatが機能する方法は、BSDまたはMicrosoft Windows(およびおそらく他の多くのシステム)を実行しているマシンで同じです。


8

他の人が言ったように、これはこのコンテキストの自然なIPv6表記です。

関連する標準を引用して解釈しましょう。

::: * == 0000.0000.0000.0000.0000.0000.0000.0000:*

http://tools.ietf.org/html/rfc5952#section-4は、標準的な(単なる省略形ではない)IPv6アドレスは次のとおりであると述べています。

  • a-f小文字の16進数で書かれています。
  • 2バイトごとにグループ化 :
  • 先頭の0を削除する必要があります。0000になり0ます。
  • の最も長いシーケンスをに変換する:0:0:0: 必要があります::。1回しか実行できないか、あいまいさが発生します。

だから、:::*意味:

  • 0000:0000:0000:0000:0000:0000:0000任意のポート(:*
  • == 0:0:0:0:0:0:0(末尾0削除)
  • == ::(連続ゼロ収縮)

0000.0000.0000.0000.0000.0000.0000.0000:* ==未指定アドレス

http://tools.ietf.org/html/rfc4291#section-2.5.2は「指定されていないアドレス」を定義しています。

アドレス0:0:0:0:0:0:0:0:0は、未指定アドレスと呼ばれます。どのノードにも割り当てないでください。住所がないことを示します。その使用例の1つは、初期化ホストが自身のアドレスを学習する前に送信するIPv6パケットのソースアドレスフィールドです。

未指定アドレスは、IPv6パケットの宛先アドレスとして、またはIPv6ルーティングヘッダーで使用しないでください。送信元アドレスが指定されていないIPv6パケットは、IPv6ルーターによって転送されることはありません。

この場合のように、N / A列に適しています。

そうで::はありません localhost、同じドキュメントが言うところです::1

netstat1.60、出力のプロトコルが読みtcp6udp6より良い何が起こっているかを示したIPv6のための、例えば:

tcp6       0      0 :::22                   :::*                    LISTEN      1201/sshd
udp6       0      0 :::5353                 :::*                                1449/avahi-daemon:

こちらもご覧ください:


3

IPv6アドレスを指します。IPv6では0::修飾子を使用してのシーケンスを圧縮できます

例えば、

0:0:0:0:0:0:0:1

として書くことができます

:: 1

しかし、この点に関して従うべき特定のルールがあり、Ipv6チュートリアルで調べることができます


2

:: 1は、IPv4の127.0.0.1のように、IPv6のローカルホストです。

::: *は0:0:1:*(IPv6 0:0:0、ポート*)の短縮バージョンで、IPv4 0.0.0.0:*のようなものです。外部アドレス列にあるこれらの両方は、外部アドレス列がないことを意味します。リッスンソケットの場合、接続された外部アドレスが(まだ)存在しないことは明らかです。udpソケットの場合、通常、外部アドレスは接続されていないため、これらも0.0.0.0:*でリストされます。


ダウンボッターに:コメントをお願いできますか?
ヴェルナーヘンツェ

0

::: * IPv6でlocalhost / loop backになります:)

基本的に、ローカルでサービスをリッスンして接続するサービスがあります。


1
tools.ietf.org/html/rfc4291#section-2.5.2を正しく解釈すると、ループバックで::はありません::1。指定されていないアドレスであり、ループバックはにあります。
Ciro Santilli新疆改造中心法轮功六四事件14

私はCiroに同意します。:: 1はループバックであり、::: *ではありません。
TOOGAM 2015年

0

知りたいのですが:Local Addressの:::はどういう意味ですか?

netstatのLinuxバージョンは、IPアドレスがbare *で表示される表記を使用します。

つまり、::: 111は::のIPと111のポートを意味します。

::は、ゼロの連続を::で置き換えることができるという規則を使用した圧縮形式のIPv6アドレスです。0000:0000:0000:0000:0000:0000:0000:0000と同等です。

IPv4の場合と同様に、すべてゼロのアドレス(未指定アドレスと呼ばれる)がプレースホルダー値として使用されます。ローカルアドレスの場合は、ソケットがすべてのIPv6インターフェースをリッスンしていることを意味します(netstatが表示しないソケットオプションに応じて、おそらくすべてのIPv4インターフェースもリッスンします)。

また、Foreign Addressの0.0.0.0:*および::: *とは何ですか?

これは、ソケットが特定の外部アドレスにバインドされていないことを意味します。::または0.0.0.0は、指定されていないIPアドレス(それぞれIPv4またはIPv6用)を示し、*は指定されていないポートを示します。

TCPの場合、これは着信接続をリッスンするソケットにのみ適用されます。接続を受け入れるために「accept」が呼び出されると、定義されたリモートIPとポートを備えた別個のソケットが作成されます。

UDPの場合、接続を受け入れるという概念はありません。外部アドレス::: *のUDPソケットにバインドされたアプリケーションは、「recvfrom」API呼び出しを使用してパケットを受信し、パケットの送信元を特定し、「sendto」API呼び出しを使用してパケットを特定のアドレスに送信します。

*この表記法は、表示される文字列が他の場所とはnetstatで異なることを意味するため、残念です。ほとんどの場合、3FFE :: 1234:5678はIPアドレス3FFE:0000:0000:0000:0000:0000:1234:5678を意味しますが、Linuxのnetstat出力ではIPアドレス3FFE:0000:0000:0000:0000:0000:0000を意味します:0000:1234およびポート5678 対照的に、Windowsバージョンのnetstatは、あいまいさを避けるために、IPv6アドレスを角括弧で囲みます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.