Existem várias entradas de servidores de nomes no meu /etc/resolv.conf
, algumas públicas e algumas minhas:
search subdomain.example.com
nameserver 8.8.8.8
nameserver 10.20.30.1
nameserver 10.20.30.2
Quero que o cURL carregue um arquivo de um endereço que somente meu próprio servidor DNS pode resolver:
curl subdomain.example.com/myfile
Ele falha com
curl: (6) Não foi possível resolver o host: subdomain.example.com
Parece-me que o cURL tenta o primeiro servidor de nomes e para de tentar se isso falhar. Não consegui confirmar, porque curl -v
não imprime qual servidor DNS ele usa.
Então, outra questão seria como determinar qual servidor DNS o cURL usa por padrão e, idealmente, como fazê-lo tentar novamente com as outras entradas do resolv.conf. Eu conheço a --dns-servers
opção de linha de comando. Se possível, eu preferiria usar as configurações de DNS fornecidas pelo DHCP.
"Ele tentará novamente" depende da causa da falha. O Curl tentará novamente se o servidor não responder; ele não tentará novamente se o servidor responder com 'Desconhecido'.
Praticamente nenhum software tentará novamente um servidor diferente ao receber uma resposta válida do primeiro servidor, mesmo se obtiver uma resposta "Domínio desconhecido" – ainda é uma resposta válida . A capacidade de listar vários servidores é apenas para situações em que o primeiro servidor não responde de forma alguma – não para situações em que servidores diferentes conhecem dados diferentes.
Se você tiver um domínio DNS interno, precisará de um resolver separado para unificar ambos os conjuntos de servidores em uma única visualização. Normalmente, os servidores DNS internos já fazem isso sozinhos, mas se você não quiser enviar consultas gerais de DNS da Internet para 10.20.30.1 por algum motivo, precisará executar outro servidor DNS local em cima dele.
Por exemplo, Dnsmasq no localhost é uma maneira comum de fazer isso; ele fornece tanto um cache DNS local quanto a capacidade de rotear diferentes consultas para diferentes servidores upstream. Unbound e systemd-resolved também são possíveis.
Encontrei https://serverfault.com/questions/398837/second-nameserver-in-etc-resolv-conf-not-picked-up-by-wget . Sinta-se à vontade para mover ou marcar minha pergunta como duplicada. @grawity, obrigado pela sua resposta, eu fui para
export RES_OPTIONS="rotate"
, que eu encontrei emman resolv.conf
, em vez disso (não as configurações de DNS fornecidas pelo DHCP, mas resolve meu problema)