Configure o servidor DNS no OS X, mesmo quando não houver conexão com a Internet

17

Eu instalei, configurei o servidor DNS (instância local do Dnsmasq) que resolve para localhost como eu quero, tudo OK.

Quando fico offline, ele pára de funcionar, porque o conteúdo vazio do OS X do resolv.conf e do ignore tenta refletir as alterações neste arquivo.

Alguma ideia, como configurar o DNS mesmo quando estiver offline?

Problema semelhante (não resolvido): link

A motivação principal é facilitar o desenvolvimento do aplicativo RoR, que usa subdomínios como chaves de conta. E você não pode usar 127.0.0.1 * .yourapp.local em / etc / hosts. Um cara registrou domínio como smackaho.st e srt DNS como o .smackaho.st em 127.0.0.1, mas ainda assim você não pode usá-lo quando estiver trabalhando offline.

EDIT: tentou o comando scutil, mas parece que você pode mudar o DNS se estiver offline

OBSERVAÇÃO: quando todas as interfaces estão inativas, você não pode definir servidores DNS em Pref. painel.

    
por daeltar 09.06.2009 / 09:59

6 respostas

29

CONSULTE ABAIXO!

Eu também gosto de usar o Dnsmasq na minha máquina local, e eu tive esse problema também. 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 criá-lo você mesmo.

Também na página man:

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.

Então, se você quiser que todas as consultas do DNS para o domínio de nível superior de dev sejam roteado para o servidor de nomes local, você faria:

# mkdir /etc/resolver
# echo 'nameserver 127.0.0.1' > /etc/resolver/dev

configd não altera arquivos em /etc/resolver/ , portanto, essa configuração persistir através de alterações de rede e reinicializações.

ATUALIZAÇÃO 17 de julho de 2012

Infelizmente, como no OS X Lion, o resolvedor superior (como mostrado por 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 # 1 está vazio, mas o derivado / etc / resolv a entrada do servidor de nomes permanece.

Acontece que você pode especificar o domínio do resolvedor diretamente em o arquivo / etc / resolver /, especificando o domínio raiz especial da Internet . provoca a criação de uma entrada de resolução global que se parece com:

resolver #8
  nameserver[0] : 127.0.0.1

Agora, todas as consultas DNS são roteadas para localhost, mesmo quando estão off-line.

É claro que você ainda terá que resolver seus 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 resumo:

  • Defina todos os 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 / whatever:
    nameserver 127.0.0.1
    domain .
  • Configure um servidor DNS local e seja feliz.

cf. link

    
por 26.07.2010 / 20:10
2

Por que não criar as entradas em / etc / hosts? Estou tendo problemas para pensar em uma situação na qual você precisa realmente executar um servidor DNS completo. Eu uso entradas de arquivos host o tempo todo para realizar coisas como essa em meus Macs.

O resolvedor no OS X funciona de maneira diferente do que no Linux ou em outros Unixes. Isso é provavelmente parte do que está lhe causando dor. Como, por exemplo, tem preferências para qual método de resolução usar primeiro e armazena em cache os resultados de todas as consultas por um período de tempo.

Você adicionou o servidor DNS à interface no painel de preferências Rede? Isso deve garantir que o resolvedor use esse servidor para suas consultas caso ele decida procurar uma entrada de DNS.

    
por 29.06.2009 / 19:51
1

(respondendo b / c ainda não posso comentar ...)

Como você está offline?

(melhor resposta que recebi agora)

# man -S 5 resolver
 .
 .
 .
 Note that the /etc/resolv.conf file,
 which contains configuration for the default (or "primary") DNS resolver
 client, is maintained automatically by Mac OS X and should not be edited manu-
 ally.  Changes to the DNS configuration should be made by using the Network
 Preferences panel.

Então, você deve poder inserir algo na interface do usuário e ela deve ficar. Eu fiz isso algumas vezes quando não gostava do servidor DNS que meu servidor DHCP local fornece.

    
por 19.07.2009 / 20:26
0

O OSX tem o arquivo de configuração /etc/dhcp3/dhclient.conf que as configurações normais de cliente DHCP do Linux / UNIX possuem?

Se assim for, deve ter uma linha que você pode remover o comentário para

prepend domain-name-servers 127.0.0.1;

para que o cliente DHCP sempre adicione essa linha ao seu resolv.conf

    
por 09.06.2009 / 23:20
0

Tente adicionar um segundo serviço de ethernet configurado com um endereço estático e 127.0.0.1 como seu servidor DNS. Ou adicione um local de rede que defina seu servidor DNS como 127.0.0.1. Ambas as alterações seriam feitas em "Preferências do Sistema" sob o painel "Rede".

    
por 21.07.2009 / 22:05
-2

Pode ajudar apenas colocar

127.0.0.1       localhost

em / etc / hosts, portanto, não é necessário resolver para localizar o host local.

    
por 09.06.2009 / 23:20