Por que o wget está pendurado?

12

O wget para um único URL específico de um dos meus servidores continua recebendo tempos limite. Todos os outros URLs desta caixa funcionam bem. Esse URL funciona bem em qualquer outra caixa que eu tenho. Aqui está a saída:

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

Você pode me dizer o que pode estar errado e como posso solucionar isso? Estou usando o Ubuntu 11.04 (GNU / Linux 2.6.38-8-server x86_64)

Muito obrigado antecipadamente e perdoe minha ignorância noobish :)

ping, telnet, nc www.fcc-fac.ca 80 - todos travam. No entanto, alguns outros URLs podem ser facilmente wget'able, embora apenas alguns de seus hosts sejam pingáveis.

traceroute não me diz muito:

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  * * *

Muito obrigado pelas respostas!

Szczepan
fonte

Respostas:

14

Acho que o problema é que o wget não lida bem com endereços IPv6 e o ​​servidor DNS está enviando um IPv6 para esse site. Desculpe se eu entendi mal sua pergunta. Verifique os testes:

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'

Se eu forçar o IPv6 porque acredito que seu problema está relacionado a ele, ele falhará:

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'

No entanto, se eu forçar a usar o IPv4, ele baixa diretamente a página de índice

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'
hmontoliu
fonte
Ele resolve tudo bem com um endereço IPv4.
Jodie C
Outro exemplo de por que eu não gosto de IPv6: - /
PJ Brunet
1

Execute nc www.fcc-fac.ca 80, digite GET /e pressione Enter duas vezes.

A mira remota pode estar desativada ou bloqueando você.

Jodie C
fonte
Hey, obrigado pela resposta - Eu atualizei a pergunta original
Szczepan
Se você não conseguir conectar o endereço de rede ao endereço, provavelmente está sendo bloqueado em algum lugar ao longo do caminho.
Jodie C
1

parece que o wget não consegue se conectar ao seu ip na porta 80.

verifique se o seu servidor é pingável:

ping 65.87.238.35
ping 207.195.108.140

se o ip for pingável, verifique se você consegue conectar-se à porta 80 usando o telnet:

telnet 65.87.238.35 80

se o servidor não responder ao ping, provavelmente está inativo ou inacessível para a sua rede de origem.

teste com a ferramenta traceroute para ver onde a conexão falha.

Goez
fonte
Ei, obrigado pela resposta - atualizei a pergunta original
Szczepan
uma escavação em www.fcc-fac.ca me diz que possui 2 registros DNS do tipo A: ;; SEÇÃO DE RESPOSTA: www.fcc-fac.ca. 120 IN A 65.87.238.35 www.fcc-fac.ca. 120 IN A 207.195.108.140 Se ambos estiverem inacessíveis, o host está inativo e, naturalmente, o wget não poderá recuperar o arquivo que deseja. se houver algum ip acessível, o wget pulará o ip inoperante até encontrar um ip que possa alcançar e fará o download do arquivo a partir daí. no seu caso, os dois hosts parecem inativos devido ao longo tempo de resposta que eu acho (tempo limite).
Goez
u pode usar a opção -T em wget para estender o valor de timeout O tempo limite é segundos para segundos, talvez por isso um valor mais alto vai ajudar
Goez
Está bem. Entendo. Ambos os ips não podem ser executados em ping (verifiquei em 2 máquinas diferentes). No entanto, o link funciona bem no navegador e quando é gerado a partir de máquinas diferentes daquelas que causam problemas: /
Szczepan
Tempo limite superior não ajuda
Szczepan
1

Correção para resolução lenta do DNS em scripts PHP usando a biblioteca CURL.

Na documentação da libcurl:

CURLOPT_IPRESOLVE

Permite que o aplicativo selecione que tipo de endereço IP usar na resolução de nomes de host. Isso é interessante apenas ao usar nomes de host que resolvem endereços usando mais de uma versão do IP. Os valores permitidos são:

CURL_IPRESOLVE_WHATEVER

Por padrão, resolve endereços para todas as versões IP permitidas pelo seu sistema.

CURL_IPRESOLVE_V4

Resolva para endereços IPv4.

CURL_IPRESOLVE_V6

Resolva para endereços IPv6.

Eu acredito que estes podem ser definidos como variáveis ​​ambientais. Pelo menos durante o uso do PHP, essas configurações fizeram uma enorme diferença na velocidade do resolvedor.

Bryan Hunt
fonte