왜 wget이 걸려 있습니까?


12

내 서버 중 하나에서 단일 특정 URL로 wget하면 시간 초과가 계속 발생합니다. 이 상자의 다른 모든 URL은 정상적으로 작동합니다. 이 URL은 내가 가지고있는 다른 상자에서도 정상적으로 작동합니다. 출력은 다음과 같습니다.

wget -T 10 http://www.fcc-fac.ca
--2011-07-14 14:44:29--  http://www.fcc-fac.ca/
Resolving www.fcc-fac.ca... 65.87.238.35, 207.195.108.140
Connecting to www.fcc-fac.ca|65.87.238.35|:80... failed: Connection timed out.
Connecting to www.fcc-fac.ca|207.195.108.140|:80... failed: Connection timed out

무엇이 잘못되었거나 문제를 해결하려면 어떻게해야합니까? 우분투 11.04 (GNU / Linux 2.6.38-8 서버 x86_64)를 사용하고 있습니다

사전에 대단히 감사하고 내 무고한 무지를 용서하십시오 :)

핑, 텔넷, nc www.fcc-fac.ca 80-모두 중단됩니다. 그러나 호스트 일부만 핑할 수 있지만 쉽게 얻을 수있는 다른 URL도 있습니다 .

traceroute는 나에게 많은 것을 말하지 않습니다.

7  rx0nr-access-communications.wp.bigpipeinc.com (66.244.208.10)  148.834 ms  149.018 ms  148.940 ms
8  sw-1-research.accesscomm.ca (24.72.3.9)  158.901 ms  159.805 ms  160.162 ms
9  65.87.238.126 (65.87.238.126)  150.069 ms  148.861 ms  148.846 ms
10  * * *
...
30  * * *

답변 주셔서 감사합니다!

답변:


14

문제는 wget이 IPv6 주소를 제대로 처리하지 못하고 DNS 서버가 해당 사이트의 IPv6을 보내는 것입니다. 당신의 질문을 잘못 이해하면 미안합니다. 해당 테스트를 확인하십시오.

hmontoliu@ulises:~$ wget -T10 http://www.fcc-fac.ca
--2011-07-14 16:44:34--  http://www.fcc-fac.ca/
Resolving www.fcc-fac.ca... failed: Connection timed out.
wget: unable to resolve host address `www.fcc-fac.ca'

문제가 관련되어 있다고 생각하여 IPv6을 강제 실행하면 실패합니다.

hmontoliu@ulises:~$ wget -6 http://www.fcc-fac.ca
--2011-07-14 16:40:44--  http://www.fcc-fac.ca/
Resolving www.fcc-fac.ca... failed: No address associated with hostname.
wget: unable to resolve host address `www.fcc-fac.ca'

그러나 IPv4를 강제로 사용하면 인덱스 페이지가 바로 다운로드됩니다.

hmontoliu@ulises:~$ wget -4 http://www.fcc-fac.ca
--2011-07-14 16:40:56--  http://www.fcc-fac.ca/
Resolving www.fcc-fac.ca... 65.87.238.35, 207.195.108.140
Connecting to www.fcc-fac.ca|65.87.238.35|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6554 (6,4K) [text/html]
Saving to: `index.html'

그는 IPv4 주소로 잘 해결합니다.
Jodie C

내가 IPv6를 싫어하는 이유의 또 다른 예 :-/
PJ Brunet

1

실행 nc www.fcc-fac.ca 80에 입력 GET /하고 Enter를 두 번 누르십시오.

원격 조준경이 다운되거나 차단 될 수 있습니다.


안녕하세요, 답변 주셔서 감사합니다-나는 원래 질문을 업데이트
Szczepan

주소에 연결할 수 없다면 아마도 어딘가에 차단되었을 것입니다.
Jodie C

1

wget이 포트 80의 IP에 연결할 수없는 것 같습니다.

서버가 핑 가능한지 확인하십시오.

ping 65.87.238.35
ping 207.195.108.140

IP가 핑 가능한 경우, telnet을 사용하여 포트 80에 연결할 수 있는지 확인하십시오.

텔넷 65.87.238.35 80

서버가 핑에 응답하지 않으면 소스 네트워크에 대한 서버가 다운되었거나 연결할 수없는 것입니다.

traceroute 도구로 테스트하여 연결이 실패한 위치를 확인하십시오.


안녕하세요, 답변 주셔서 감사합니다-나는 원래 질문을 업데이트
Szczepan

www.fcc-fac.ca에 대한 발굴에 A 유형의 DNS 레코드가 2 개 있다고 나와 있습니다. 답변 섹션 : www.fcc-fac.ca. 120 IN A 65.87.238.35 www.fcc-fac.ca. 120 IN A 207.195.108.140 둘 다 도달 할 수없는 경우 호스트가 다운되고 자연스럽게 wget이 원하는 파일을 검색 할 수 없습니다. 도달 가능한 IP가있는 경우 wget은 도달 할 수있는 IP를 발견 할 때까지 아래로 ip를 건너 뛰고 거기에서 파일을 다운로드합니다. 귀하의 경우, 두 호스트 모두 긴 응답 시간 (시간 초과)으로 인해 다운 된 것처럼 보입니다.
Goez

wget에서 -T 옵션을 사용하여 시간 초과 값을 확장 할 수 있습니다. 시간 초과는 초로, 따라서 더 높은 값이 도움이 될 것입니다.
Goez

확인. 내가 참조. 두 IP 모두 고정 가능하지 않습니다 (2 개의 다른 컴퓨터에서 확인했습니다). 그러나 링크는 브라우저에서 제대로 작동하며 문제를 일으키는 장치와 다른 컴퓨터에서 wget'ed되었을 때 : /
Szczepan

더 높은 시간 초과는 도움이되지 않습니다
Szczepan

1

CURL 라이브러리를 사용하는 PHP 스크립트에서 느린 DNS 확인을 수정했습니다.

libcurl 설명서에서 :

CURLOPT_IPRESOLVE

애플리케이션이 호스트 이름을 확인할 때 사용할 IP 주소 종류를 선택할 수 있도록합니다. 이는 둘 이상의 IP 버전을 사용하여 주소를 확인하는 호스트 이름을 사용할 때만 흥미 롭습니다. 허용되는 값은 다음과 같습니다.

CURL_IPRESOLVE_WHATEVER

기본적으로 시스템에서 허용하는 모든 IP 버전으로 주소를 확인합니다.

CURL_IPRESOLVE_V4

IPv4 주소로 확인하십시오.

CURL_IPRESOLVE_V6

IPv6 주소로 확인하십시오.

환경 변수로 설정할 수 있다고 생각합니다. 적어도 PHP를 사용하는 동안 이러한 설정은 리졸버 속도와 큰 차이를 만들었습니다.

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