Manual

do

Maker

.

com

Servidor DNS com DNSMasq em 3 minutos

Servidor DNS com DNSMasq em 3 minutos

Já escrevi alguns artigos sobre configuração de servidor DNS com bind9, nessa referência, para Raspberry. Nesse breve artigo vamos ver como configurar um servidor DNS com DNSMasq, para acelerar o tempo de resolução de nomes, tornando a navegação do seu Raspberry e de sua rede mais rápidos. De quebra, vai poder acessar seus dispositivos da rede por nome.

Instalação do DNSMasq

Essa parte é tão fácil quanto a configuração. Abra um terminal em seu Raspberry e digite os comandos:

sudo su
apt-get update
apt-get install dnsmasq

Mantenha o terminal aberto como está. Precisamos definir algumas linhas no serviço de DNS para termos nosso servidor DNS com DNSMasq funcional.

Configurar o DNSMasq como servidor DNS

Agora devemos editar o arquivo /etc/dnsmasq.conf para fazermos algumas definições. Tudo estará comentado (com trama no início da linha), então pode colocar as definições a seguir no início do arquivo, sem problemas. Use seu editor preferido. Pelo terminal, sugiro o nano, mas se quiser um editor gráfico, digite:

xdg-open /etc/dnsmasq.conf

Então inclua as linhas:

listen-address=::1,127.0.0.1,<ip do seu RPi>

ATENÇÃO:

Se for utilizar como servidor DNS apenas para o próprio Raspberry, não precisa adicionar o , apenas se quiser servir DNS para sua rede também. Isto é, outros computadores poderão se beneficiar do servidor DNS instalado no Raspberry.

Defina a porta de serviço, sendo por padrão a UDP/53:

port=53

Quando seu servidor DNS não tem referência em cache, ele deve buscar a referência fora. Isso é chamado de forwarding, que é um encaminhamento para a resolução, tornando-se disponível no cache a partir de então. O forwarding é definido na variável servere podemos ter vários apontamentos:

server=8.8.8.8
server=8.8.4.4
server=192.168.1.2

Como já tenho um servidor DNS rodando em outro Raspberry (com bind9), passei ele também para a resolução, que ainda deve ser mais rápido que uma consulta na Internet.

O parâmetro final é a interface a escutar. Podemos optar por eth0, wlan0 ou ambos. No meu caso o Raspberry está conectado por WiFi, então é wlan0 mesmo:

interface=wlan0

Juntando, tudo o que precisa ser adicionado ao arquivo /etc/dnsmasq.conf são essas linhas:

interface=wlan0
port=53
listen-address=127.0.0.1,192.168.1.200
server=8.8.8.8
server=8.8.4.4

Reinicie o serviço do DNSMasq e veja como está seu arquivo /etc/resolv.conf. Se estiver usando outro DNS, troque-o pelo IP de sua interface.

sudo service dnsmasq restart

Se nunca editou o arquivo /etc/resolv.conf, o formato para resolução de nomes através do IP de exemplo 172.16.4.8 ficaria assim:

nameserver 172.16.4.8

Se tiver domínio haverá uma linha adicional.

Resolução de problemas

Se por alguma razão tiver problemas na configuração de seu servidor DNS com DNSMasq, siga essas dicas, mas é bastante incomum não funcionar de primeira.

Checar o status do serviço

Normalmente um erro é reportado pelo próprio status. Se tiver erro de digitação no arquivo ou algo incorreto deve aparecer no terminal ao digitar:

service dnsmasq status

Checar o arquivo /etc/resolv.conf

Se o DNS não estiver nesse arquivo ou a definição estiver digitada errada, ou se tiver outro serviço controlando o arquivo /etc/resolv.conf, também não funcionará. Se for apenas falta da definição e já não estiver contida essa linha, adicione-a:

#coloque o ip do SEU raspberry
nameserver 172.16.0.100

Checar se está rodando openresolv

Se estiver, edite o arquivo /etc/resolvconf.confe adicione o seguinte conteúdo:

name_servers="::1 127.0.0.1"
# Escreve os arquivos resolv e de configuração estendida do dnsmasq
dnsmasq_conf=/etc/dnsmasq-conf.conf
dnsmasq_resolv=/etc/dnsmasq-resolv.conf

Por fim, execute o comando resolvconf -u para que ocorra a atualização dos arquivos.

Checar status novamente

Toda a vez que fizer alguma modificação, verifique o último status. Não modifique todas as coisas de uma vez senão jamais será identificada a origem do problema. Temos a já citada forma mais acima, como também o journalctl:

sudo service dnsmasq status
#ou...
sudo journalctl -u dnsmasq.service

Garanta que o IP do Raspberry está reservado

O RPi não poderá mais mudar de IP para que outros hosts possam encontrá-lo, caso deseje utilizá-lo como servidor DNS da rede, invés de resolver nomes apenas para si mesmo. Nesse caso, verifique na interface de rede se houve mudança:

ifconfig wlan0 #ou eth0, se for conexão cabeada

Se o IP mudou, significa que não foi reservado o IP ou houve algum erro na configuração da reserva. Para reservar o IP ou para verificar a reserva, pegue o endereço MAC na interface de rede e confira em seu roteador. Para pegar o MAC já limpo:

ifconfig wlan0|egrep ether|awk '{print $2}'

Verifique se o adicionou corretamente, se a configuração está habilitada em seu roteador, etc. Cada roteador tem sua própria interface com o usuário, por isso não consigo descrever o processo exato para cada caso, mas é fácil achar, certamente está no menu de configuração DHCP.

Modifique o servidor DNS a ser distribuído em sua rede

Seu roteador é provavelmente o servidor DHCP da rede. Ele oferece o IP, gateway e os servidores DNS que deverão ser utilizados pelos seus hosts. Para que o servidor DNS seja o Raspberry, procure pela definição dos DNSs na configuração do DHCP do seu roteador. É fácil também, não se preocupe.

Garanta que as definições DHCP dos hosts já foram atualizadas

Não basta configurar o servidor DNS e o DHCP em seu roteador. Os hosts precisam saber que uma modificação deve ser aplicada e para isso é necessário renovar o IP em suas interfaces. Em Windows (não sei se ainda é assim porque não uso há um bom tempo), abra o terminal (digite CMD no menu) e digite:

ipconfig /release
ipconfig /renew

Em Linux:

#para ethernet:
sudo ifdown eth0
sudo ifup eth0

#wlan etc
sudo service networking restart
#ou..
sudo service network restart


Ou reinicie os sistema, seja lá ele qual for.

Bônus

Para resolver nomes em sua rede interna, podemos definir os hosts em /etc/hosts e adicionar mais alguns parâmetros ao arquivo /etc/dnsmasq.conf. É simples, apenas adicione isso:

local=/lan/
domain=lan

Os hosts definidos em /etc/hosts devem estar utilizando IP estático, claro. O formato de inserção dos hosts deve ser assim:

#defina o ip de SEUS hosts e o nome de resolução para o respectivo ip
10.0.0.18       dobitaobyte

Reinicie o serviço do DNSMasq sempre que fizer alguma modificação:

sudo service dnsmasq restart

Agora deve ser possível acessar outro host pelo nome:

ping -c4 nome_do_host

É isso. Esse artigo "Servidor DNS com DNSMasq" é mais complementar para facilitar a busca por referência, já que alguns artigos sobre o tema foram escritos anteriormente.

Procurando onde comprar Raspberry Pi 4?

Para RPi 4 recomendo nosso parceiro MASUGUX. Uma curiosidade é que corajosamente eles estão migrando do Mercado Livre após muitos anos, devido à insatisfação com o ML. Acho que atualmente o ML não é mais bom para ninguém, já foi mais vantajoso para ambos, comprador e vendedor. Mas enfim, hoje você encontra a MASUGUX no Shopee e para contatos, eles já têm um domínio que ainda não aponta para uma loja, mas tem as informações necessárias. Recomendo fortemente, o parceiro é de longa data, confiável, atencioso e honesto... bora dar uma força para essa migração, inclusive comprando outros itens de sua lista que eventualmente sejam úteis ao seu projeto.

 

Revisão: Ricardo Amaral de Andrade

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.