servidor dns local no mac os x

Costumo usar o modem da Claro no MacBook quando não estou em casa, e normalmente os servidores DNS fornecidos na conexão são lentos demais.

Quando estou em casa, uso um Virtua da NET, que tem os piores servidores DNS que já usei na vida. Quem usa Virtua deve saber disso.

Por esses e outros motivos, preferi manter o BIND rodando local, e não depender do DNS de ninguém – assim como fiz a vida toda com Linux no Desktop.

O Mac usa o launchd pra iniciar e monitorar os daemons que rodam no sistema, muito parecido com o daemon tools do djb.

É bem simples de configurar e usar. No caso do BIND, é necessário editar o arquivo /System/Library/LaunchDaemons/org.isc.named.plist e mudar apenas uma linha. O conteúdo original do arquivo é esse aqui (Leopard 10.5.4):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Disabled</key>
        <true/>
        <key>Label</key>
        <string>org.isc.named</string>
        <key>OnDemand</key>
        <false/>
        <key>ProgramArguments</key>
        <array>
<!--
        Un-comment the following lines to run named with a sandbox profile.
        Sandbox profiles restrict processes from performing unauthorized
        operations; so it may be necessary to update the profile
        (/usr/share/sandbox/named.sb) if any changes are made to the named
        configuration (/etc/named.conf).
-->
<!--
                <string>/usr/bin/sandbox-exec</string>
                <string>-f</string>
                <string>/usr/share/sandbox/named.sb</string>
-->
                <string>/usr/sbin/named</string>
                <string>-f</string>
        </array>
        <key>ServiceIPC</key>
        <false/>
</dict>
</plist>

Basta mudar o valor da chave Disabled de true para false, e então informar o launchd que esse arquivo foi modificado, assim:

sudo launchctl load /System/Library/LaunchDaemons/org.isc.named.plist
sudo launchctl list | grep named
3745    -    org.isc.named

Depois disso, é possível iniciar e parar o serviço usando launchctl [start|stop] org.isc.named. Isso também é válido para outros serviços, como apache, postfix, sshd, etc. Basta ver os arquivos no /System/Library/LaunchDaemons.

A configuração do BIND fica em /etc/named.conf, e já vem pronto para funcionar como DNS de cache (só para resolver os nomes da Internet, usando os root servers). Ainda, no meu caso, coloquei o BIND para funcionar apenas no localhost, usando a diretiva listen-on.

Para finalizar, é necessário fazer com que as placas de rede (airport e ethernet) usem o servidor DNS 127.0.0.1. Para isso, pode clicar na configuração ou fazer no console mesmo, assim:

$ sudo networksetup -setdnsservers airport 127.0.0.1
$ sudo networksetup -setdnsservers ethernet 127.0.0.1

Dica: o comando networksetup permite configurar tudo relacionado a rede, pelo console.


3 Comentários on “servidor dns local no mac os x”

  1. lustyscripps disse:

    you rock.

  2. Nei Venturini disse:

    Olá:

    Também sempre utilizei bind local, contudo atualizei meu Mac Book ontem para o Leopard Snow e não funcionou os passos acima, algo que eu já havia feito no 10.5.8, alguma dica ?

    Obrigado,

    []’s

    Nei Venturini

  3. Nei Venturini disse:

    Complementando seu howto, é necessário executar o seguinte para que funcione: rndc-conf-gen -a

    []’s

    Nei


Deixar mensagem para lustyscripps Cancelar resposta