Resolvendo problemas de acesso com um DNS local

A internet como a conhecemos funciona em grande parte graças aos servidores DNS, que convertem nomes de domínio nos endereços IP correspondentes. Sem ele, a web seria muito menos amigável, já que você teria que manter longas listas com os endereços IP dos sites e servidores que precisa acessar. Sem o DNS, a web talvez nem tivesse se popularizado tão rápido em primeiro lugar.

Toda esta dependência traz um inconveniente, que é o fato de que você fica virtualmente desconectado quando os servidores DNS do provedor saem fora do ar. Obviamente, você ainda continua conectado e pode acessar qualquer servidor através do endereço IP, mas você pode acaso sabe algum de cor?

Infelizmente os problemas relacionados aos servidores DNS dos provedores de acesso são extremamente comuns. Muitas vezes mudam os endereços sem aviso, em outras o servidor DHCP (do provedor) é configurado incorretamente e fornece endereços errados quando você se conecta, sem falar nos casos em que os servidores simplesmente ficam inacessíveis, sem motivo aparente. Diz o bom senso que o provedor deveria manter dois servidores DNS, em redes separadas, para manter a redundância, mas o fato é que, na maioria dos pequenos servidores, é usado um único servidor, com um simples alias para a placa de rede, que “simula” a existência de um segundo servidor DNS. Desta forma, temos apenas uma única máquina, de forma que quando o servidor cai, você perde simultaneamente tanto o DNS primário, quanto o secundário.

Para fugir desta calamidade, você pode passar a usar um servidor DNS local. No Linux você precisa apenas instalar o pacote “bind” ou “named”, usando o gerenciador de pacotes da sua distribuição. Nas derivadas do Debian, você pode usar o apt-get, como em

# apt-get install bind

O Bind pode ser bastante indigesto de configurar, mas no nosso caso não é necessário alterar a configuração padrão, já que queremos apenas acessar a web, basta manter o serviço ativo. É recomendável que você mantenha a porta 53 (tanto TCP quanto UDP) bloqueadas no firewall, de forma que não consigam usar seu DNS de fora.

Abra agora o arquivo “/etc/resolv.conf” e inclua a linha “nameserver 127.0.0.1” antes das outras entradas, como em:

nameserver 127.0.0.1
nameserver 208.67.222.222
nameserver 208.67.220.220

Isto faz com que o sistema passe a usar seu servidor DNS local ao invés dos endereços DNS do provedor.

Uma segunda opção é usar o Dnsmasq, um servidor DNS minimalista, que simplesmente cria um cache dos endereços já acessados, evitando usar o DNS do provedor a cada acesso. Ele é uma opção em casos onde os servidores DNS do provedor são estáveis, mas a velocidade do acesso não é das melhores. Um DNS lento faz com que você perca vários segundos no “procurando pelo servidor” ao acessar cada site.

Instalar o Dnsmasq é igualmente simples, basta procurar pelo pacote no gerenciador da distribuição usada. Ao instalar via apt-get, use:

# apt-get install dnsmasq

A principal observação é que você não pode usar o Dnsmasq junto com o Bind, já que ambos escutam na mesma porta. Antes de instalar o Dnsmasq você deve desativar e remover o Bind e vice-versa.

Depois de instalar, adicione a linha abaixo no final do arquivo “/etc/dnsmasq.conf“:

listen-address=127.0.0.1

Ela faz com que o Dnsmasq responda apenas a requisições da sua própria máquina, ignorando requisições extensas, proveniente de outros micros da rede ou da internet.

Mantenha o arquivo “/etc/resolv.conf” configurado como vimos a pouco, contendo a linha “nameserver 127.0.0.1”, seguida pelos endereços DNS do provedor.

Tente acessar um site qualquer. Você perceberá que o primeiro acesso continuará demorando o tempo normal, mas a partir do segundo o endereço estará no cache do Dnsmasq e a resolução será instantânea.

Se o seu micro usa DHCP para obter a configuração da rede, o arquivo “/etc/resolv.conf” será modificado a cada acesso, voltando à configuração original, fornecida pelo servidor. Ao invés de ter que modificar o arquivo novamente, a cada acesso, adicione a linha abaixo no começo (começo, não final) do arquivo “/etc/dhcp3/dhclient.conf” (onde vai a configuração do cliente DHCP):

prepend domain-name-servers 127.0.0.1;

Esta linha faz com que ele sempre adicione a linha “nameserver 127.0.0.1” no início do arquivo “/etc/resolv.conf”, substituindo a edição manual.

Uma última dica é que os dois endereços que usei no exemplo “208.67.222.222” e “208.67.220.220”, são do http://opendns.com, um servidor DNS público, que você pode usar no lugar dos endereços DNS do provedor.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X