이 netcat 출력은 무엇을 의미합니까?


11

다음과 같은 경우에도 nc -v 명령을 실행할 때 포트 2628에서 실행되는 dictd 서비스가있는 로컬로 실행중인 VM에 텔넷으로 연결하고 싶습니다.

$ 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

사용할 수있는 넷캣에는 수십 가지 버전이 있지만 다음과 같은 이유 때문일 수 있습니다.

  1. 에 2 개의 항목이 localhost있습니다 /etc/hosts. 하나는 IPv4 용이고 다른 하나는 IPv6 용입니다.
  2. 데몬은 하나의 프로토콜 (예 : 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

3 개의 번호가 매겨진 항목 중 하나를 수정하십시오. 1)에서 항목 중 하나를 제거하십시오 /etc/hosts. 2) 데몬이 두 프로토콜 모두에서 청취하도록하십시오. 3) 클라이언트가 다른 프로토콜을 사용하여 연결하도록합니다.
Patrick
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.