'연결 거부'메시지의 원인은 무엇입니까?


110

연결 거부 에 대한 정식 질문입니다

우리는 그 효과에 대해 많은 질문을 봅니다

시스템에 연결하려고하면 메시지가 나타납니다

연결이 거부되었습니다

왜 이런거야 ?


2
우리는 Apache Hadoop에서 이것을 많이 얻습니다. 클라이언트의 구성 오류로 인해 발생하는 경우가 많습니다. 어떤 호스트와 통신 할 것인지, DNS 또는 / etc / host 테이블이 설정되어 있는지, 또는 서비스와 고객이 사용해야한다고 생각합니다. 따라서, 우리는 주제에 대한 전용 위키 항목이 있습니다. 더 작은 규모이지만 (아마도) 많은 문제가 다른 곳에있을 수 있습니다. 1000 노드 클러스터에서 연결 문제를 디버깅하는 것은 재미 있지 않습니다.
Steve Loughran

당신의 전용 위키 엔트리 링크는이 질문을 가리 킵니다;)
user9517

1
잘 잡는다. 여기에 공식 링크는 다음과 같습니다 wiki.apache.org/hadoop/ConnectionRefused . 그래도 전체 루프에 대한 상호 참조를 여기에서 다시 추가 할 것입니다.
Steve Loughran

@SteveLoughran 쿨 기사-한 코멘트-링크 백 스택 오버플로를 말하고 우리는 서버 오류입니다;)
user9517

끝난. FWIW에서 해당 위키 링크는 Hadoop 스택에 전달 된 ConnectionRefused 예외에 추가되며, 잘못된 정보를 처리하는 데 필요한 추가 정보 (호스트, 포트)와 함께 추가됩니다. 우리는 여전히 스택 추적을보고 위키에 대한 링크를 따르지 않는 사람들로부터 많은 버그 보고서를받습니다
Steve Loughran

답변:


118

참고 :이 메시지는 해결하려는 문제의 증상입니다. 메시지의 원인을 이해하면 궁극적으로 문제를 해결하게됩니다.

'연결이 거부되었습니다'라는 메시지에는 두 가지 주요 원인이 있습니다.

  1. 연결하려는 IP : Port에서 아무것도 수신하지 않습니다.
  2. 포트가 방화벽에 의해 차단되었습니다.

듣고있는 프로세스가 없습니다.

이것이 메시지의 가장 일반적인 이유입니다. 먼저 올바른 시스템에 연결하려고합니다. 문제가 있는지 확인하려면 원격 시스템에서 netstat 또는 ss 1을 실행하십시오 ( 예 : 포트 22222에서 프로세스가 수신 대기 중일 경우).

sudo netstat -tnlp | grep :22222

또는

ss -tnlp | grep :22222

OSX의 경우 적절한 명령은

sudo netstat -tnlp tcp | grep '\.80 '

아무것도 듣지 않으면 위의 결과는 출력되지 않습니다. 일부 출력이 표시되면 원하는 결과인지 확인한 후 아래의 방화벽 섹션을 참조하십시오.

원격 시스템에 액세스 할 수없고 관련 관리자에게보고하기 전에 문제점을 확인하려면 tcpdump (wireshark 또는 이와 유사한)를 사용할 수 있습니다.

아무것도 수신하지 않는 IP : 포트에 연결을 시도하면 원격 시스템에서 초기 SYN 패킷으로의 응답은 플래그 RST, ACK가 설정된 패킷입니다. 연결이 닫히고 연결 거부 메시지가 표시됩니다.

$ sudo tcpdump -n 호스트 192.0.2.1 및 포트 22222
tcpdump : 상세 출력 억제,
enp14s0, 링크 유형 EN10MB (이더넷), 캡처 크기 262144 바이트

12 : 31 : 27.013976 IP 에서 전체 프로토콜 디코드 청취에 -v 또는 -vv 사용 192.0.2.2.34390> 192.0.2.1.22222 : 플래그 [S] , seq 1207858804, win 29200, 옵션 [mss 1460, sackOK, TS val 15306344 ecr 0, nop, wscale 7], 길이 0

12 : 31 : 27.020162 IP 192.0.2.1.22222> 192.0.2.2.34390 : 플래그 [R.] , seq 0, ack 1207858805, 승리 0, 길이 0

tcpdump는를 사용합니다 . ACK 플래그 를 나타냅니다 .

방화벽으로 포트가 차단되었습니다

포트가 방화벽에 의해 차단되고 방화벽이 이에 응답하도록 구성된 icmp-port-unreachable경우 연결 거부 메시지도 발생합니다. 다시 tcpdump (또는 이와 유사한)로 이것을 볼 수 있습니다

$ sudo tcpdump -n icmp
tcpdump : 상세 출력 억제,

enp14s0, 링크 유형 EN10MB (이더넷), 캡처 크기 262144 바이트 13 : 03 : 24.149897 IP 192.0.2.1> 192.0 에서 전체 프로토콜 디코드 청취에 -v 또는 -vv를 사용하십시오 . 2.2 : ICMP 192.0.2.1 TCP 포트 22222에 연결할 수 없음, 길이 68

이것은 또한 차단 방화벽이 어디에 있는지 알려줍니다.


이제 연결 거부 메시지의 원인을 알았습니다. 방화벽 관리자에게 문의하거나 프로세스가 수신 대기하지 않는 이유를 조사하는 등 적절한 조치를 취해야합니다.

1 다른 도구를 사용할 수 있습니다.


2
ELI5 버전 : 연결 요청이 다른 컴퓨터에 연결되어 있고 다른 컴퓨터에 대한 정보가 없었습니다.
immibis

"듣고있는 프로세스가 없습니다." 주요한 이유 ..!
Samitha Chathuranga

제 경우에는 무언가 듣고 있었지만 연결하려는 노드와 다른 노드에있었습니다. 죄송합니다.
ijoseph

1
@ijoseph 그래서 그때 아무것도 듣고 있었다.
user9517

5

데비안 6 짜기 에서 SSH 서비스확인하는 것만 큼 ​​간단했습니다 .

sudo service ssh status

그리고 찾는 것도 (메시지와 함께 존재하지 ssh: unrecognized service단지) 서비스를 설치 :

sudo apt-get install openssh-server

SFTP는 SSH의 하위 세트 (FTPS는 FTP의 하위 세트 임)이므로 SFTP 연결이없는 경우에도 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.