"연결이 거부되었습니다"vs "호스트에 대한 경로 없음"


20

서버에서 실행되는 Apache 서버가 있습니다.

[root@te-srv2 ~]# ps -ecf|grep httpd
root       698 32047 TS   19 10:45 pts/24   00:00:00 grep httpd
root     32081     1 TS   19 10:16 ?        00:00:00 /usr/sbin/httpd
apache   32083 32081 TS   19 10:16 ?        00:00:00 /usr/sbin/httpd
apache   32084 32081 TS   19 10:16 ?        00:00:00 /usr/sbin/httpd
....

그러나 로컬 호스트에 연결하려고하면 "연결이 거부되었습니다"라는 메시지가 나타납니다.

[root@te-srv2 ~]# wget http://127.0.0.1
--2014-02-24 10:46:16--  http://127.0.0.1/
Connecting to 127.0.0.1:80... failed: Connection refused.

로컬 IP 주소에 연결하려고 할 때도 마찬가지입니다.

[root@te-srv2 ~]# wget http://132.70.6.157
--2014-02-24 10:46:40--  http://132.70.6.157/
Connecting to 132.70.6.157:80... failed: Connection refused.

반면 같은 네트워크에있는 다른 컴퓨터에서 동일하게 시도하면 "No route to host"라는 오류가 발생합니다.

[erelsgl@erel-biu ~]$ wget http://132.70.6.157
--2014-02-24 10:49:11--  http://132.70.6.157/
Connecting to 132.70.6.157:80... failed: No route to host.

이 오류가 발생하는 이유는 무엇입니까? 그리고 같은 컴퓨터와 네트워크의 다른 컴퓨터에서 http 서버에 연결하려면 어떻게해야합니까?

업데이트 : 의견과 답변을 바탕으로 다음과 같은 추가 정보가 있습니다.

[root@te-srv2 ~]# traceroute 132.70.6.157
traceroute to 132.70.6.157 (132.70.6.157), 30 hops max, 60 byte packets
 1  te-srv2 (132.70.6.157)  0.082 ms  0.007 ms  0.005 ms

[erelsgl@erel-biu ~]$ traceroute 132.70.6.157
traceroute to 132.70.6.157 (132.70.6.157), 30 hops max, 60 byte packets
 1  te-srv2 (132.70.6.157)  0.446 ms !X  0.431 ms !X  0.420 ms !X

[root@te-srv2 ~]# netstat -lnp|grep http
tcp        0      0 :::443                      :::*                        LISTEN      5756/httpd          

traceroute 132.70.6.157두 서버에서 출력을 비교할 수 있습니까 ?
Werner Henze

1
443은 SSL 포트 (https)입니다. http 포트 80을 들으려면 구성을 확인하십시오.
Mikpa

답변:


13

의 출력을 표시하여 netstat -lnp실제로 어떤 프로세스가 서버의 어떤 포트를 수신하고 있고 어떤 IP 주소가 바인딩되는지 확인할 수 있습니다.

두 번째 컴퓨터와 관련하여 네트워크 연결이 끊어졌습니다. netstat -rn거기에 문제에 대한 통찰력을 줄 것입니다.

더 나은 조언을 제공하려면 두 컴퓨터의 일반 네트워크 구성 및 IP 구성에 대한 자세한 정보가 필요합니다.

편집하다:

SSL 서버가 아닌 HTTP 서버가되도록 Apache 구성을 변경해야합니다. 구성 파일은 대부분 / etc / apache2 아래에 있습니다.

다른 문제를 분석하려면 IP 구성 및 네트워크 구성 정보가 여전히 필요합니다. 추적 경로 정보는 아무 것도 공개하지 않았습니다.


실제로, 포트 80을 수신하는 프로세스는 없습니다! Apache 서버는 포트 443에서 수신 대기합니다. 그러나 왜 그렇습니까?
Erel Segal-Halevi

@ErelSegalHalevi : 일반적으로 80은 HTTP, 443은 HTTPS입니다 (기본 포트를 변경하지 않는 한). 아마도 응용 프로그램은 HTTPS 만 기대합니까?
Olivier Dulac

netstat 덕분에 이것이 Apache의 구성 문제라는 것을 알았습니다.
Erel Segal-Halevi

26

"연결 거부"는 대상 시스템이 연결을 적극적으로 거부했음을 의미합니다. 포트 80을 컨텍스트로 사용하면 다음 중 하나가 원인 일 수 있습니다.

  • 127.0.0.1:80 및 132.70.6.157:80에서 아무것도 듣지 않습니다.
  • 아무것도 듣지 않습니다 * : 80
  • 방화벽이 REJECT와의 연결을 차단하고 있습니다

따라서 Apache 및 iptables 구성을 확인하십시오.

"호스트에 대한 경로 없음"은 네트워크 문제를 나타냅니다. 대상 시스템의 응답 이 아닙니다 .


네트워크 문제? 그렇다면 같은 도메인에서 같은 도메인이 어떻게 "연결 거부 됨"을 반환하고 다른 포트의 "호스트에 대한 라우팅 없음"을 반환 할 수 있습니까?
phil294

방화벽이나 프록시가 다른 포트를 차단하고있을 수 있으므로 네트워크 문제가 발생하는 이유는 무엇입니까?
croraf

3

퍼블릭 클라우드 컴퓨팅 노드에서 nodejs를 사용하여 간단한 http 페이지를 설정하려고 할 때 발생하는 문제를 설명하는이 게시물을 발견했습니다.

이 명령은 나를 위해 속임수를 썼다 :

iptables -F

이 명령은 플러시, 즉 Linux 시스템 내부에 설정된 방화벽 규칙을 지 웁니다.

주의 사항 : 퍼블릭 클라우드 VCN의 일부인 분산 방화벽을 사용하기 때문에 실제로 OS 방화벽을 사용하지 않았습니다. 외부 방화벽이없는 경우 iptables에 방화벽 규칙을 추가하십시오.


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