dnsmasq lendo / etc / hosts, mas não usando

4

Eu fiz uma instalação padrão do dnsmasq. Quando eu executo dig, parece estar usando dnsmasq (127.0.0.1), mas os resultados não incluem os nomes de host incluídos em / etc / hosts.

/ etc / hosts:

192.168.1.13 sun

em um terminal:

$ dig sun

; <<>> DiG 9.6-ESV-R4 <<>> sun
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 32131
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;sun.               IN  A

;; AUTHORITY SECTION:
.           9699    IN  SOA a.root-servers.net. nstld.verisign-grs.com. 2011041100 1800 900 604800 86400

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Apr 12 05:20:56 2011
;; MSG SIZE  rcvd: 96

em um terminal:

$ dig @localhost sun

; <<>> DiG 9.6-ESV-R4 <<>> @localhost sun
; (2 servers found)
;; global options: +cmd
;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 43763
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;sun.               IN  A

;; AUTHORITY SECTION:
.           10800   IN  SOA a.root-servers.net. nstld.verisign-grs.com. 2011041800 1800 900 604800 86400

;; Query time: 40 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Apr 18 17:15:23 2011
;; MSG SIZE  rcvd: 96

Eu tentei usar o local e o expand-hosts / domain, mas parece que eles não estão funcionando. Meu principal objetivo é ser capaz de usar uma máquina para hospedar o DNS da LAN, não importa se os nomes acabam sendo sun ou sun.domain, o que quer que funcione.

Aqui está meu /etc/resolv.conf

nameserver 127.0.0.1
domain members.linode.com
search members.linode.com
nameserver 72.14.188.5
nameserver 72.14.179.5

e /etc/dnsmasq.conf

domain-needed
bogus-priv

Isto é tudo em uma máquina 10.04 do Ubuntu, se isso faz diferença. Tenho acompanhado este guia: link (embora não seja literal, pois isso também configura o DHCP)

    
por Zach Dwiel 12.04.2011 / 07:29

4 respostas

1

Como é o seu /etc/resolv.conf? Procure por elementos de domínio ou pesquisa.

Configure um domínio .local para o dnsmasq e adicione-o ao seu resolv.conf e ele deverá funcionar.

Tente escavar sun.local @localhost.

    
por 12.04.2011 / 07:37
1

Este snippet da FAQ do dnsmaq parece relevante:

Q: Names on the internet are working fine, but looking up local names from /etc/hosts or DHCP doesn't seem to work.

A: Resolver code sometime does strange things when given names without any dots in. Win2k and WinXP may not use the DNS at all and just try and look up the name using WINS. On unix look at "options ndots:" in "man resolv.conf" for details on this topic. Testing lookups using "nslookup" or "dig" will work, but then attempting to run "ping" will get a lookup failure, appending a dot to the end of the hostname will fix things. (ie "ping myhost" fails, but "ping myhost." works. The solution is to make sure that all your hosts have a domain set ("domain" in resolv.conf, or set a domain in your DHCP server, see below fr Windows XP and Mac OS X). Any domain will do, but "localnet" is traditional. Now when you resolve "myhost" the resolver will attempt to look up "myhost.localnet" so you need to have dnsmasq reply to that name. The way to do that is to include the domain in each name on /etc/hosts and/or to use the --expand-hosts and --domain options.

Então sugiro que você publique seu /etc/resolv.conf , assim como os argumentos que você está alimentando para o dnsmasq quando você o iniciar.

    
por 12.04.2011 / 08:46
1

Eu sei que isso é de 2011, mas como ainda não há resposta aceita:

Hoje, tive um problema semelhante. Curl trabalhou para obter a resposta esperada de um haproxy lxc com o respectivo cabeçalho, mas de alguma forma meu dnsmasq local não forneceu resolução para container.test (confirmado com nslookup).

O Google me encontrou este post de Hugo Heden, que disse que é possível seja um problema com a formatação /etc/hosts .

O que resolveu o problema para mim foi:

  1. Descomentando no-hosts em /etc/dnsmasq.conf
  2. Colocar 123.123.123.12 container.test em um novo arquivo, por exemplo %código%
  3. Apontou o dnsmasq para o novo arquivo adicionando /etc/dnsmasq.hosts a addn-hosts=/etc/dnsmasq.hosts
por 06.05.2018 / 23:24
0

dig, bem como host, e nslookup são criados especificamente para consultar servidores de DNS. Ele não irá olhar para / etc / hosts, e de fato irá ignorar /etc/nsswitch.conf

Qualquer coisa usando a chamada gethostbyname, no entanto, usará /etc/nsswitch.conf

Por exemplo, o ping deve usar os arquivos / etc / hosts fornecidos antes do dns em /etc/nsswitch.conf, o que normalmente é.

    
por 12.04.2011 / 08:41