Eu tenho várias máquinas que não usam um gerenciador de rede e usam apenas o dhcpcd para definir o endereço IP. Por exemplo, meu raspberry pi 4. Atribuí estaticamente o endereço IP no arquivo /etc/dhcpcd.conf e funciona, estou feliz. O que eu quero fazer é que, se eu digitar nslookup machine2 (por exemplo), ele anexe o domínio configurado a essa pesquisa.
Em outra máquina que usa dhcpcd (meu PC ArchLinux), tenho o endereço configurado para usar dhcp (ou seja, não estático desta vez), via dhcpcd. No meu servidor DHCP, configurei-o para especificar o campo "nome do domínio" como uma opção que é retornada ao cliente. O resultado é que meu arquivo /etc/resolv.conf é atualizado com a seguinte linha:
domínio meudomínio.local
Como esse valor de "domínio" é definido nesse arquivo, posso simplesmente digitar nslookup machine2 e ele anexa mydomain.local a essa consulta, e meu servidor dns resolve o IP para o fqdn de machine2.mydomain.local.
Então, idealmente, eu quero imitar essa configuração, para que meu raspberry pi4 faça a mesma coisa, no entanto, está definido estaticamente, então como faço isso?
Observe que tentei adicionar "search domain.local" ao arquivo /etc/resolv.conf e ele faz o que eu quero, mas essas configurações são perdidas na reinicialização, portanto, não posso definir esse valor aqui . Eu preciso de uma solução de trabalho adequada com dhcpcd.
ATUALIZAÇÕES:
Me pediram para colocar uma saída do meu /etc/resolv.conf aqui:
$ cat /etc/resolv.conf
# Generated by resolvconf
nameserver 10.10.0.1
Se eu (finalmente) entendi corretamente, você configurou sua rede com dhcpcd.conf (não dhcpd.conf)
Imagino que essa configuração tenha uma forma semelhante a esta:
Para definir o domínio e o domínio de pesquisa, você deve adicionar algo assim:
Em outras palavras, você só precisa definir o
domain_search
como uma opção estática.Para referência, consulte aqui http://www.techsneeze.com/configuring-static-ip-raspberry-pi-running-raspbian/
Conforme observado pelo OP, essa opção está muito bem oculta. Isso é inferido porque o dhcpcd é uma ferramenta de configuração de rede construída em torno dos conceitos de DHCP. No dhcpcd, você define a configuração estática definindo (partes de) uma resposta DHCP. Portanto, nesta situação, a resposta é simplesmente adicionar o
domain_search
aos valores definidos estaticamente.O motivo para isso ser mal documentado pode estar relacionado ao fato de o DHCP permitir que opções personalizadas de DHCP sejam adicionadas. Portanto, é impossível para o dhcpcd listar todas as opções que você pode definir estaticamente. Como acontece,
domain_search
não faz parte do padrão principal do DHCP, é aparafusado pela RFC 3397 .Dito isto. Poderia ser melhor descrito no manual.
Não tenho certeza de como obter a resposta usando nslookup. MAS para um programa que usa o arquivo nsswitch.conf para dizer a ele como resolver as coisas, você pode fazê-lo SE o destino de sua consulta estiver executando o avahi (ou qualquer daemon zero_conf também conhecido como mDNS). O cmd getent é um utilitário. Por exemplo, eu tenho um PC na minha LAN com o nome 'shadow'
não retorna nada.
mas
getent hosts shadow.local
retorna:avahi-resolve -n shadow
retornaavahi-resolve -n shadow.local retorna:
Mesmo que eu nunca tenha definido o domínio "local" em nenhum lugar.
Para que isso funcione, o destino deve estar on-line para que possa responder às pesquisas de mDNS. Por exemplo, se o host hector estiver offline:
expira sem nada retornado
A CHAVE é ter a seguinte linha no seu arquivo /etc/nsswitch.conf:
Isso fará com que um cmd como getent verifique primeiro o arquivo /etc/hosts e, se o host não for encontrado lá, tente usar o recurso mDNS.
Eu acho que instalar e executar o avahi automaticamente adiciona as bibliotecas necessárias ao caminho(s) que getent verifica para que quando getent veja mdns4_minimal no arquivo nsswitch.conf ele saiba o que fazer.
O acima é um pouco (insatisfatório) hack. Eu estaria muito interessado em saber como coagir o dhcpd a fazer o que você quer. pgmer6809