このnetcat出力はどういう意味ですか?


11

nc -vコマンドを発行すると、次のように表示されますが、dictdサービスがポート2628で実行されているローカルで実行されているVMにTelnetで接続します。

$ nc -v localhost 2628
nc: connectx to localhost port 2628 (tcp) failed: Connection refused
found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif lo0
    src 127.0.0.1 port 63929
    dst 127.0.0.1 port 2628
    rank info not available
    TCP aux info available

Connection to localhost port 2628 [tcp/dict] succeeded!

接続が拒否され、その後接続が成功したのはなぜですか?これは何を意味し、なぜ私が接続しただけでは接続を受け入れないのtelnet localhost 2628ですか?

回答:


11

利用できるnetcatのバージョンは数十ありますが、これは次の理由が考えられます。

  1. に2つのエントリがlocalhostあり/etc/hostsます。1つはIPv4用、もう1つはIPv6用です。
  2. デーモンは1つのプロトコル(IPv4のようです)でのみ待機します。
  3. クライアントは、デーモンがリッスンしていないプロトコルを介して最初に接続し、次にそれがそうであるものを試みます。

例えば:

$ grep localhost /etc/hosts
127.0.0.1 localhost
::1 localhost

$ nc -4 -l -p 9000 -s 127.0.0.1     
nc: listening on 127.0.0.1 9000 ...


$ nc localhost 9000
nc: cannot connect to localhost (::1) 9000 [9000]: Connection refused
nc: localhost (127.0.0.1) 9000 [9000] open
nc: using stream socket

さて、これが起こっているのなら、どうすれば修正できますか?
Raul77 2014

3つの番号付きアイテムのいずれかを修正します。1)からエントリの1つを削除します/etc/hosts。2)デーモンに両方のプロトコルで待機させます。3)他のプロトコルを使用してクライアントに接続を強制します。
Patrick
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.