VEJA A ATUALIZAÇÃO ABAIXO!
Também gosto de usar o Dnsmasq na minha máquina local e também tive esse problema. Aqui está a solução:
De man 5 resolver
:
The configuration for a particular client may be read from a file
having the format described in this man page. These are at present
located by the system in the /etc/resolv.conf file and in the files
found in the /etc/resolver directory.
/etc/resolver/
não está presente por padrão; você deve criar você mesmo.
Também na página do manual:
domain
Domain name associated with this resolver configuration. This
option is normally not required by the Mac OS X DNS search system
when the resolver configuration is read from a file in the
/etc/resolver directory. In that case the file name is used as the
domain name.
Portanto, se você quiser que todas as consultas de DNS do domínio de nível superior dev
sejam roteadas para o servidor de nomes local, você deve:
# mkdir /etc/resolver
# echo 'nameserver 127.0.0.1' > /etc/resolver/dev
configd
não altera os arquivos /etc/resolver/
, portanto, essa configuração persistirá através de alterações na rede e reinicializações.
ATUALIZAÇÃO 17 de julho de 2012
Infelizmente, no OS X Lion, o resolvedor superior (conforme mostrado scutil
--dns
) desaparece quando nenhuma interface está ativa:
# scutil --dns # Online
DNS configuration
resolver #1
nameserver[0] : 127.0.0.1
...
resolver #8
domain : dev
nameserver[0] : 127.0.0.1
# scutil --dns # Offline
DNS configuration
resolver #1
...
resolver #8
domain : dev
nameserver[0] : 127.0.0.1
Observe que o resolvedor nº 1 está vazio, mas a entrada do servidor de nomes derivado do / etc / resolver permanece.
Acontece que, como você pode especificar o domínio do resolvedor diretamente no arquivo / etc / resolver /, a especificação do domínio raiz da Internet especial .
causa a criação de uma entrada global do resolvedor que se parece com:
resolver #8
nameserver[0] : 127.0.0.1
Agora todas as consultas DNS são roteadas para o host local, mesmo quando offline.
Obviamente, você ainda precisará resolver os domínios escolhidos como 127.0.0.1 usando algo como a opção --address do dnsmasq:
# dnsmasq --address=/dev/127.0.0.1
Em suma:
- Defina todos os seus servidores DNS da interface de rede como 127.0.0.1:
networksetup -setdnsservers Ethernet 127.0.0.1
networksetup -setdnsservers Wi-Fi 127.0.0.1
...
- Crie um arquivo / etc / resolver / o que for:
nameserver 127.0.0.1
domínio
- Configure um servidor DNS local e seja feliz.
cf. http://opensource.apple.com/source/configd/configd-395.11/dnsinfo/dnsinfo_flatfile.c