Esse artigo foi inspirado em um artigo de outro blog.
Para quem não sabe, o DNS é o responsável por transformar uma URL, como por exemplo aleteia.wordpress.com, em um endereço de IP, do tipo 62.154.x.x. Ele foi criado por facilitar a localização de sites. Seria mais ou menos como ao invés de ter que decorar o número de telefone da pessoa, apenas ter que saber o nome dela.
Acontece que recentemente tenho tido alguns problemas com o servidor DNS do meu provedor. Ou ele responde normalmente, ou ele responde mas demora um bom tanto ou ele sequer responde.
Como meu modem está sendo usado como roteador e a intercace web para configuração dele é, na melhor das hipóteses uma caca, não consigo alterar o servidor DNS que ele está usando. A solução que eu encontrei foi utilizar um cache DNS.
Um cache DNS nada mais é um servidor DNS rodando na sua máquina que vai armazenando os endereços que você entra. Sendo assim, a primeira vez em que tento entrar em um site, ainda há chance de eu ficar esperando a resolução do nome, mas a segunda vez já vai bem mais rápido.
Veremos agora como instalar e configurar um cache DNS, mas antes, só para deixar avisado, esse guia serve para computadores rodando Linux (me concentrei no Ubuntu para o qual o artigo foi escrito originalmente e no Archlinux, ditro que uso) e provavelmente em outros Unices, como FreeBSD e talvez até o MacOS X. Outro fato importante: esse guia funciona com certeza para computadores que usem DHCP para registrar o seu IP, mas não funcionará tão garantidamente em outros casos.
Agora a parte divertida. Começamos instalando um pacote chamado dnsmasq. No Ubuntu esse pacote se encontra no repositório ‘Universal’, no Archlinux nos pacotes de ‘extra’.
# Ubuntu e Debian-likes sudo apt-get install dnsmasq #Archlinux sudo pacman -S dnsmasq
Pronto, seu servidor DNS está instalado. Agora a configuração. Primeiro, abra o arquivo /etc/dnsmasq.conf e descomente (tire o #) da seguinte linha:
listen-address=127.0.0.1
No caso do Archlinux, essa linha veio como
listen-address=
apenas, então adicione 127.0.0.1 nela.
Os próximos passos servirão para o Ubuntu apenas (não consegui encontrar esses arquivos no Archlinux, mesmo instalando dhcp e dhclient, mas consegui contornar esse problema). Abra o arquivo /etc/dhcp3/dhclient.conf e faça com que a seção abaixo fique exatamente como está aqui:
#supersede domain-name “fugue.com home.vix.com”; prepend domain-name-servers 127.0.0.1; request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, host-name, netbios-name-servers, netbios-scope;
Próxima vez que o dhclient for rodado, ele irá acrescentar ‘127.0.0.1′ ao seu /etc/resolv.conf, arquivo responsável por manter a lista de servidores DNS que seu computador deve usar.
O jeito de contornar a falta deste arquivo no Archlinux foi bem simples. O arquivo /etc/resolv.conf’ é reescrito quando o dhcpcd roda, então simplesmente alterá-lo na mão não resolveria. Então, ao invés de usar esse arquivo, eu o copiei com o nome de /etc/dnsmasq-servers.conf e editei o arquivo /etc/dnsmasq.conf para lê-lo no lugar de /etc/resolv.conf. Basta editar a seguinte linha:
resolv-file=/etc/dnsmasq-servers.conf
O próximo passo só será necessário na primeira vez de rodar o dnsmasq. Abra o arquivo /etc/resolv.conf ou /etc/dnsmasq-servers.conf dependendo do caso e adicione ‘nameserver 127.0.0.1′ acima dos outros nameservers, assim:
search lan nameserver 127.0.0.1 nameserver 192.168.1.254
Lembrando que isso é só um exemplo. Com exceção de ‘nameserver 127.0.0.1′ não precisam e provavelmente não serão iguais.
No Archlinux ainda teremos que adicionar o daemon dnsmasq ao rc.conf. Abra o arquivo /etc/rc.conf e na linha ‘DAEMONS=’ adicione @dnsmasq.
Agora basta iniciar o servidor:
#Archlinux /etc/rc.d/dnsmasq start #Ubuntu /etc/init.d/dnsmasq start
Caso você use DSL e autenticação por PPP:
Nesse caso isso pode funcionar, são necessárias apenas algumas alterações nos arquivos de configuração. Copie /etc/resolv.conf para /etc/dnsmasq-servers.conf e edite esse novo arquivo para que ele contenha apenas:
nameserver 127.0.0.1
Depois edite /etc/dnsmasq.conf e altere as seguintes linhas:
resolv-file=/etc/dnsmasq-servers.conf listen-address=127.0.0.1
Agora edite /etc/ppp/peers/dsl-provider e comente a linha
#usepeerdns
Dezembro 14, 2007 às 11:48 am
Cara preciso da sua Ajuda. Sou novo ná area e fiz a configuração conforme vc falou. so q ta dando um erro:
Restarting DNS forwarder and DHCP server: dnsmasqdnsmasq: failed to create listening socket: Endereço já está em uso
(failed to start).
pode me ajudar aguardo resposta.
Grato.
Dezembro 14, 2007 às 2:25 pm
Quando você roda que comando que isso acontece?
Maio 13, 2009 às 10:15 am
Eu tambem estou como o mesmo problema quando digito
ubuntu server
sudo /etc/init.d/dnsmasq start
desde já obrigado…..
Maio 13, 2009 às 10:30 am
Me parece que o dnsmasq no ubuntu veio configurado para servir como servidor dhcp também nas versões recentes. Provavelmente está faltando alterar alguma linha do arquivo de configuração. Se alguém souber o que deve ser feito dê um toque aí, não tenho mais usado o dnsmasq.