Como executar seu próprio servidor DNS em sua rede local

jivacore / Shutterstock. com
Executar seu próprio servidor DNS é uma ótima maneira de acelerar a capacidade de resposta de sua rede, reduzir sua dependência de infraestrutura pública e se beneficiar de funcionalidades extras, como roteamento de nome de host. Veja como configurar um servidor DNS em uma máquina Linux usando Dnsmasq.
O que é DNS?
DNS é o sistema que traduz um nome de domínio como example. com para o endereço IP numérico de seu servidor. Isso pode ser semelhante a 127.0.0.1. Sempre que você fizer uma solicitação de rede usando um nome de domínio, seu sistema executará uma pesquisa de DNS para determinar o endereço do servidor com o qual deve entrar em contato.
Isso adiciona uma sobrecarga a cada solicitação que você faz. Embora seu dispositivo armazene em cache as respostas de DNS, as visitas a novos domínios incorrerão em uma viagem de ida e volta do DNS antes que a solicitação real comece. Isso ocorre no nível da pilha de rede do sistema operacional, invisível para você como o usuário.
Os ISPs geralmente executam servidores DNS. Provavelmente, você está dependendo do servidor do seu ISP se estiver usando as configurações padrão do roteador e dos dispositivos. Outros servidores DNS públicos estão disponíveis em provedores como Cloudflare e Google.
Por que executar seu próprio DNS?
Executar seu próprio servidor DNS oferece mais controle sobre sua rede. Uma motivação comum é ser capaz de configurar mapeamentos de domínio em nível de rede, como servidor web para 192.168.0.101. Configurar seu roteador para usar seu DNS resultaria em qualquer um dos seus dispositivos conectados sendo capaz de acessar 192.168.0.101 via http: // servidor web.
Publicidade
Ter seu próprio servidor DNS permite que você centralize as configurações em um local, em vez de aplicá-las individualmente em / etc / hosts em cada dispositivo. Eles se aplicam a tudo o que você conectar à sua rede, incluindo hardware integrado que não oferece outra maneira de personalizar sua pilha de roteamento.
Um servidor DNS interno também pode melhorar o desempenho e fornecer uma camada extra de resiliência. Interrupções de DNS em larga escala não são inéditas; usar um servidor personalizado com um cache de longa duração para serviços essenciais com os quais você interage pode ajudá-lo a evitar o tempo de inatividade do provedor upstream selecionado.
DNS com Dnsmasq
Dnsmasq é um servidor DNS leve que está incluído na maioria das distribuições Linux. Também é revigorante e simples de configurar.
Antes de começar, vale a pena pensar sobre que funcionalidade você precisa que seu servidor DNS forneça. Neste guia, veremos como configurar o Dnsmasq com cache local, algumas rotas de domínio personalizadas e o Google 8.8.8.8 como nosso provedor de DNS upstream.
O fluxo de roteamento será semelhante a este:
- O roteador de rede recebe uma solicitação de um de seus dispositivos conectados. O roteador será configurado para usar o host Dnsmasq como seu servidor DNS.
- O Dnsmasq verificará se tem uma rota definida para o nome de domínio, como servidor web para 192.168.0.101. Se a solicitação foi para http: // web-server / example-page, ele enviará 192.168.0.101 de volta ao roteador.
- Quando o Dnsmasq não tiver uma rota correspondente, ele encaminhará a solicitação de DNS para o Google &’ s 8.8.8.8, habilitando a resolução na Internet pública. Isso garante que você ainda possa acessar a web mais ampla ao usar seu próprio DNS.
Você não precisará fazer nenhuma alteração de configuração nos dispositivos do seu cliente. Tudo o que está atrás do seu roteador vai acabar fazendo consultas DNS via Dnsmasq. No entanto, é importante notar que todos os sistemas operacionais de desktop e móveis populares suportam a configuração de um servidor DNS, então você pode configurar dispositivos individuais para usar Dnsmasq sem habilitá-lo no nível do roteador.
Primeiros passos
Assumiremos que você já tem uma máquina Linux em funcionamento pronta para hospedar o Dnsmasq. O Dnsmasq não consome muitos recursos – se você tiver poucos dispositivos clientes, ele será executado facilmente em um Raspberry Pi.
Publicidade
Seu host deve ter um IP estático atribuído. A partir daqui, o IP 192.168.0.1 refere-se ao servidor Dnsmasq.
Certifique-se de que o Dnsmasq esteja instalado:
# Assumindo um sistema Debian apt atualizar apt install dnsmasq
O arquivo de configuração do Dnsmasq &’ geralmente está localizado em /etc/dnsmasq. conf. Este é pré-preenchido com as configurações iniciais. Algumas mudanças precisam ser feitas para que o Dnsmasq funcione efetivamente em um cenário de rede local. Execute sudo nano /etc/dnsmasq. conf para abrir o arquivo e use o atalho de teclado Ctrl + W para localizar e descomentar as seguintes linhas:
# domínio necessário # bogus-priv
Remova o caractere # do início de cada linha. Aqui está o que essas configurações estão habilitando:
- domínio necessário – Isso impede que o Dnsmasq encaminhe nomes locais sem uma parte do domínio para o servidor DNS upstream. Em nossa instalação, isso significa que example. com será elegível para resolução por meio do Google, mas example ou servidor da web não. Ele reserva nomes sem ponto para sua rede local.
- bogus-priv – Impede o encaminhamento de consultas de pesquisa inversa de DNS para o servidor DNS upstream. Isso significa que IPs internos como 192.168.0.101 nunca serão expostos ao Google. Não ativar isso pode vazar acidentalmente a arquitetura de sua rede interna para seu provedor de upstream.
Para configurar seu servidor DNS upstream, adicione uma nova linha ao seu arquivo de configuração:
servidor = 8.8.8.8 servidor = 4.4.4.4
Isso instrui o Dnsmasq a encaminhar consultas não resolvidas para 8.8.8.8. Se esse servidor não estiver disponível, 4.4.4.4 será usado em seu lugar. Esses endereços são os resolvedores primário e secundário para o serviço DNS do Google.
Em seguida, ajuste o tamanho do cache. O padrão é um valor relativamente baixo de 150 solicitações em cache. Aumentar isso permitirá que o Dnsmasq forneça mais pesquisas do cache, reduzindo a latência da rede. Encontre a linha do tamanho do cache, descomente-a e altere seu valor:
tamanho do cache = 1000
Salve e feche o arquivo agora.
Mapeando nomes de host para IPs
Existem algumas maneiras diferentes de mapear nomes de host para seus endereços IP. O mais simples é adicionar entradas ao arquivo / etc / hosts existente do seu servidor. O Dnsmasq carrega automaticamente as regras deste arquivo como parte de sua configuração padrão.
Publicidade
Abra / etc / hosts e adicione suas rotas ao final do arquivo. O endereço IP vem primeiro, seguido pelo nome a ser atribuído:
192.168.0.101 servidor web 192.168.0.105 gateway. lan
Essas linhas significam que qualquer solicitação para http: // servidor da web será direcionada para 192.168.0.101 enquanto http: //gateway. lan terminará em 192.168.0.5. Salve e feche o arquivo quando terminar de mapear seus dispositivos.
Testando seu servidor
Reinicie o Dnsmasq para aplicar todas as suas alterações:
reinicialização do dnsmasq do serviço sudo
Verifique se o servidor está funcionando corretamente:
status dnsmasq do serviço sudo
Você deve ver ativo (em execução) exibido em verde. Se você não fizer isso, verifique as linhas de registro na parte inferior das informações de status para descobrir o que está errado.

Agora você está pronto para testar o seu servidor. Você pode fazer tentativas manuais de pesquisa de DNS com a ferramenta dig. Pode ser necessário instalar o pacote dnsutils primeiro.
dig google. com @localhost dig gateway. lan @localhost
Ambos os comandos devem mostrar um endereço IP na seção ANSWER. No caso de gateway. lan, o resultado deve ser 192.168.0.5 de acordo com a regra de roteamento configurada em / etc / hosts. A parte @localhost dos comandos instrui dig para consultar seu servidor DNS local.
Configurando sua rede
A etapa final é configurar seu roteador de rede para fazer pesquisas DNS por meio de seu servidor Dnsmasq. As etapas para isso irão variar dependendo do equipamento de roteamento que você está usando.
Publicidade
Depois de encontrar a página de configurações correta, defina o IP do seu servidor (192.168.0.1 neste guia) como o servidor DNS primário do roteador. É uma boa ideia configurar um provedor DNS público, como o 8.8.8.8 do Google, como o servidor secundário. Isso garante que você ainda terá acesso à Internet se o seu servidor DNS travar e ficar off-line.
Agora todos os dispositivos conectados ao seu roteador farão consultas DNS através da sua instância Dnsmasq. Eles poderão acessar seus dispositivos pelos nomes atribuídos, como servidor da web e gateway. lan, e se beneficiar do armazenamento em cache de DNS em nível de rede.
Conclusão
DNS é um tópico complexo, mas o Dnsmasq facilita a operação de um servidor básico. Existem muitas outras configurações que você pode explorar assim que tiver a funcionalidade principal para funcionar. Eles permitem que você filtre consultas, gerencie retransmissões e proxies, execute scripts quando ocorrerem eventos e configure outros tipos de registro DNS, como resultados de MX para servidores de e-mail.
O Dnsmasq normalmente não precisa de muita intervenção manual quando está ativo. Você pode monitorar os logs usando service dnsmasq status ou systemctl status dnsmasq. Agora você está pronto para se beneficiar de seu servidor DNS auto-hospedado, maximizando o desempenho e permitindo que você use nomes de domínio internos para alcançar dispositivos de rede local.
Nenhum comentário