Alguém já viu isso antes? Observe que isso acontece não apenas no google.com.br, mas em todos os domínios que eu tento. É uma conexão sem fio (WEP), mas não tenho certeza de como isso seria relevante:
$ curl -v google.com
# This takes about 60s to return
* getaddrinfo(3) failed for google.com:80
* Couldn't resolve host 'google.com'
* Closing connection #0
curl: (6) Couldn't resolve host 'google.com'
$ wget google.com
--2011-11-28 14:44:08-- http://google.com/
Resolving google.com... failed: Name or service not known.
wget: unable to resolve host address `google.com'
$ ping google.com
PING google.com (209.85.148.147) 56(84) bytes of data.
64 bytes from fra07s07-in-f147.1e100.net (209.85.148.147): icmp_req=2 ttl=54 time=136 ms
64 bytes from fra07s07-in-f147.1e100.net (209.85.148.147): icmp_req=3 ttl=54 time=34.0 ms
64 bytes from fra07s07-in-f147.1e100.net (209.85.148.147): icmp_req=4 ttl=54 time=34.3 ms
64 bytes from fra07s07-in-f147.1e100.net (209.85.148.147): icmp_req=5 ttl=54 time=42.5 ms
64 bytes from fra07s07-in-f147.1e100.net (209.85.148.147): icmp_req=6 ttl=54 time=44.7 ms
64 bytes from fra07s07-in-f147.1e100.net (209.85.148.147): icmp_req=7 ttl=54 time=34.5 ms
^C
--- google.com ping statistics ---
8 packets transmitted, 6 received, 25% packet loss, time 7007ms
rtt min/avg/max/mdev = 34.063/54.376/136.026/36.758 ms
$ host google.com
google.com has address 209.85.148.106
google.com has address 209.85.148.147
google.com has address 209.85.148.99
google.com has address 209.85.148.103
google.com has address 209.85.148.104
google.com has address 209.85.148.105
google.com mail is handled by 30 alt2.aspmx.l.google.com.
google.com mail is handled by 40 alt3.aspmx.l.google.com.
google.com mail is handled by 50 alt4.aspmx.l.google.com.
google.com mail is handled by 10 aspmx.l.google.com.
google.com mail is handled by 20 alt1.aspmx.l.google.com.
$ host google.com 192.168.1.201
Using domain server:
Name: 192.168.1.201
Address: 192.168.1.201#53
Aliases:
google.com has address 209.85.148.103
google.com has address 209.85.148.104
google.com has address 209.85.148.105
google.com has address 209.85.148.106
google.com has address 209.85.148.147
google.com has address 209.85.148.99
google.com mail is handled by 40 alt3.aspmx.l.google.com.
google.com mail is handled by 50 alt4.aspmx.l.google.com.
google.com mail is handled by 10 aspmx.l.google.com.
google.com mail is handled by 20 alt1.aspmx.l.google.com.
google.com mail is handled by 30 alt2.aspmx.l.google.com.
$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.201
$ cat /etc/hosts
127.0.0.1 localhost
::1 localhost
$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 wlan0
127.0.0.0 127.0.0.1 255.0.0.0 UG 0 0 0 lo
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
Basicamente, qualquer aplicativo, incluindo o Firefox, não funciona para pesquisar nomes. Além disso, se eu desligar o Wi-Fi e conectar um cabo Ethernet, está tudo bem.
domain-name-system
wifi
curl
Daniel Quinn
fonte
fonte
ping
chama getaddrinfo com parâmetros ligeiramente diferentes github.com/iputils/iputils/blob/master/ping/ping.c#L574ai_protocol = IPPROTO_UDP
talvez isso confunda getaddrinfo diferentemente de alguma forma? Parece que ohost
comando nem sempre é usado: unix.stackexchange.com/a/553438/8337Respostas:
Talvez você tenha algumas regras muito estranhas e restritivas do SELinux (ou grsecurity ...) em vigor?
Caso contrário, tente
strace -o /tmp/wtf -fF curl -v google.com
identificar no/tmp/wtf
arquivo de saída o que está acontecendo.fonte
9344 poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
/tmp/wtf
?Usando isso: https://www.centos.org/modules/newbb/viewtopic.php?topic_id=39343
Encontrei um comando-chave que me ajudou a solucionar problemas:
[root @ localhost ~] # wget -6 URL com falha
[root @ localhost ~] # wget -4 URL trabalhado
Tem algo a ver com a pilha ipv6 padrão que está causando problemas com determinados utilitários. Desative o ipv6 para resolver.
fonte
Verifique o seu
/etc/nsswitch.conf
. Se ahosts
linha diz algo comoEstou tão confuso quanto você. Mas se diz algo como
o fato de o DNS estar funcionando (consulte a saída do
host
comando) não ajudará a se curvar, o que está resolvendo os nomes por meio das bibliotecas padrão do SO, que foram instruídas a não usar o DNS.fonte
files dns
então eu acho que não é isso :-(Eu tive o mesmo problema - host, o nslookup resolve ok, curl - não pode nos mesmos nomes de host.
Após a comunicação do tcpdumping, descobri que o curl tenta estabelecer a conexão TCP (além do UDP) à porta DNS, que foi fechada no meu roteador. Depois que a porta 53 do tcp foi ativada, o curl começou a funcionar perfeitamente.
Outra coisa estranha é que esse problema não aparece se o servidor DNS for uma instalação de ligação regular. Se eu uso incorporado no servidor DNS do roteador, o curl tenta repentinamente usar portas TCP, mesmo que já tenha recebido (!) Resposta via UDP 2ms antes. Suponho que isso seja um bug.
fonte
Hoje eu tive esse mesmo problema no meu VE (executando no meu laptop) e achei bastante surpreendente. Dig e NSlookup funcionam, mas a curvatura falha.
Então, por exemplo:
Mas quando vi o post de David T aqui, decidi experimentá-lo com curl. Então, enquanto isso falhar:
Isso é bem-sucedido:
O -6 especifica que o curl usa o IPv6 e o -4, para usar o IPv4. Eu recebo os mesmos erros ao usar o wget, então definitivamente alguns problemas com a pilha IPv6 no host.
Todas as outras modificações no arquivo nsswitch.conf e em outros arquivos conf BIND não ajudaram, pois o problema não ocorre com esses utilitários.
fonte
Se isso ocorrer para qualquer pessoa que tente configurar o DNS para uma instância do AWS EC2, ative também as regras IPv6 (:: / 0) para HTTP e HTTPS no grupo de segurança usado por essa instância.
fonte
Sua instalação de ondulação foi suave? Se possível, tente reinstalar o curl.
Tente
curl -v google.com
obter uma saída mais detalhada para depuração.por exemplo:
Você está obtendo resultados semelhantes?
fonte
Pode haver um erro no seu arquivo /etc/resolv.conf que o nslookup tolera, mas o curl não.
A pergunta foi: "Como é possível fazer uma pesquisa no host, mas não um curl?"
Isso é possível porque o curl usa getaddrinfo () para resolver o FQDN, enquanto o nslookup não. Em vez disso, acredito que o nslookup analisa /etc/resolv.conf usando alguma outra função ou biblioteca, ou através de seu próprio código personalizado. Não procurei o código-fonte para verificar isso, mas você pode prová-lo adicionando espaço em branco na frente do token do servidor de nomes em /etc/resolv.conf. O nslookup pode analisar isso, mas getaddrinfo () não pode.
Se o seu resolv.conf tiver esse erro ou outros erros tolerados pelo nslookup, mas não pelo getaddrinfo (), será possível resolver um FQDN com o nslookup, mas você não poderá usar o curl nesse FQDN.
Correção: como root, edite o /etc/resolv.conf e remova qualquer espaço em branco à esquerda na linha do servidor de nomes.
fonte
strace
saída mostra as consultas DNS sendo enviadas sem receber respostas. Isso não suporta a hipótese de um erro de análise/etc/resolv.conf
. No entanto, é possível que o recursor esteja com defeito e o uso de um recursor diferente pode ajudar.