Em primeiro lugar, esta é a seção relevante de resolv.conf(5)
:
domain Local domain name. Most queries for names within this domain can use short names relative to the local domain. If set to '.', the root domain is considered. If no domain entry is present, the domain is deter‐ mined from the local hostname returned by gethostname(2); the domain part is taken to be everything after the first '.'. Finally, if the hostname does not contain a domain part, the root domain is assumed. search Search list for host-name lookup. The search list is normally determined from the local domain name; by default, it contains only the local domain name. This may be changed by listing the desired domain search path follow‐ ing the search keyword with spaces or tabs separating the names. Resolver queries having fewer than ndots dots (default is 1) in them will be attempted using each component of the search path in turn until a match is found. For environments with multiple subdomains please read options ndots:n below to avoid man-in- the-middle attacks and unnecessary traffic for the root-dns- servers. Note that this process may be slow and will generate a lot of network traffic if the servers for the listed domains are not local, and that queries will time out if no server is avail‐ able for one of the domains. The search list is currently limited to six domains with a total of 256 characters.
Ou seja, search
não está simplesmente desativado por padrão; se search
não for especificado, ele usará domain
ou, se isso também não for especificado, usará qualquer parte do domínio presente em que gethostname(2)
retorna (ou seja, qualquer coisa após o primeiro ponto no nome de host do sistema local). p>
A implementação real é um pouco estranha, no entanto. O que acontece na prática (como observado em glibc 2.26) é este:
Se não houver search
, não domain
e o nome do host de acordo com gethostname(2)
não tiver parte de domínio, a pesquisa estará desativada.
Se, por outro lado, você especificar search .
(ou domain .
e não search
) ele ainda procura, mas o resultado retornado será o mesmo que se não o fizesse, ele apenas torna redundante o mesmo consultas. (Bug?)
Esse é um comportamento estranho, no qual "o domínio raiz é assumido" leva a uma busca desabilitada enquanto a especificação explícita do domínio raiz gera consultas redundantes.
Quanto a como definir o nome do host do sistema, existem diferentes escolas de pensamento.
Usar o FQDN através da placa é provavelmente a abordagem mais óbvia nos dias de hoje, pois elimina qualquer possível ponto de interrogação sobre qual domínio será usado para construir o FQDN.
Se você tiver o nome do host do sistema configurado apenas para o nome do host real (sem domínio), obterá valores diferentes de gethostname(2)
e gethostname(3)
(o último gera dinamicamente o FQDN, conforme necessário, usando o resolvedor uma entrada em /etc/hosts
para o sistema local). Dependendo do que um aplicativo solicitar, ele obterá apenas o nome do host ou o FQDN, como pode ser visto com, por exemplo, hostname
vs hostname --fqdn
.
Menos esperado é como a escolha acima também afeta a capacidade de desativar search
.
Mas, por mais estranho que pareça, a linha de fundo parece ser que, se você quiser desabilitar globalmente a pesquisa, se os nomes que você procura são explicitamente absolutos (possuem um ponto final) ou não, as versões atuais do glibc parecem desabilitar corretamente a pesquisa se gethostname(2)
retorna um nome de host sem um domínio.