Como instalar e configurar o Dnsmasq no Ubuntu 18.04 LTS

Descrição

Este tópico me ajudou arrumar a velocidade da Steam no linux dentre outras velocidades de download fodidas e agora estou aproveitando 100% de minha net.

 

Este guia irá ajudá-lo a instalar e configurar o servidor DNS Dnsmasq no Ubuntu 18.04 LTS (Bionic Beaver). Para quem é novo no Dnsmasq, o Dnsmasq é um servidor DNS simples, leve, fácil de usar e gerenciar, com suporte a scripts Lua, IPv6, DNSSEC, inicialização de rede para PXE, BOOTP e TFTP. Ele tem uma pequena pegada, portanto, adequado para roteadores e firewalls com recursos limitados.

O Dnsmasq foi projetado para fornecer DNS e, opcionalmente, serviços DHCP / TFTP para ambientes de rede de pequeno a médio porte. Quando recebe consultas DNS, ele as atende a partir de seu cache local ou as encaminha para um servidor DNS recursivo diferente, que pode ser BIND ou qualquer outro servidor DNS.

Uma configuração para o servidor DNS com autoridade do PowerDNS está disponível em nosso blog:

Subsistemas Dnsmasq

O Dnsmasq possui três subsistemas principais, a saber:

  • Subsistema DNS : Fornece armazenamento em cache de A, AAAA, CNAME e PTR, também registros DNSKEY e DS.
  • Subsistema DHCP : Fornece suporte para DHCPv4, DHCPv6, BOTP e PXE. Você pode usar as concessões DHCP estáticas e dinâmicas, incorporadas no servidor TFTP somente leitura para oferecer suporte ao netboot.
  • Subsistema de anúncio de roteador: fornece autoconfiguração básica para o host IPv6

Passo 1: Instalando o Dnsmasq no Ubuntu 18.04

O Ubuntu 18.04 vem com o systemd-resolve, que você precisa desabilitar, pois ele se liga à porta 53, que entrará em conflito com a porta do Dnsmasq.

Execute os seguintes comandos para desativar o serviço resolvido:

  sudo systemctl disable systemd-resolved
 sudo systemctl stop systemd-resolved

Além disso, remova o arquivo resolv.conf links simbólicos

  $ ls -lh /etc/resolv.conf 
 lrwxrwxrwx 1 raiz raiz 39 ago 8 15:52 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

 $ sudo rm /etc/resolv.conf

Em seguida, crie um novo arquivo resolv.conf .

  echo "nameserver 8.8.8.8"> /etc/resolv.conf

O Dnsmasq está disponível no repositório apt, a instalação fácil pode ser feita executando:

  sudo apt-get instala o dnsmasq

O arquivo de configuração principal do Dnsmasq é o /etc/dnsmasq.conf . Configure o Dnsmasq modificando este arquivo.

  sudo vim /etc/dnsmasq.conf

Aqui está a configuração mínima

# Listen on this specific port instead of the standard DNS port
# (53). Setting this to zero completely disables DNS function,
# leaving only DHCP and/or TFTP.
port=53
# Never forward plain names (without a dot or domain part)
domain-needed
# Never forward addresses in the non-routed address spaces.
bogus-priv
# By  default,  dnsmasq  will  send queries to any of the upstream
# servers it knows about and tries to favour servers to are  known
# to  be  up.  Uncommenting this forces dnsmasq to try each query
# with  each  server  strictly  in  the  order  they   appear   in
# /etc/resolv.conf
strict-order
# Set this (and domain: see below) if you want to have a domain
# automatically added to simple names in a hosts-file.
expand-hosts
# Set the domain for dnsmasq. this is optional, but if it is set, it
# does the following things.
# 1) Allows DHCP hosts to have fully qualified domain names, as long
#     as the domain part matches this setting.
# 2) Sets the "domain" DHCP option thereby potentially setting the
#    domain of all systems configured by DHCP
# 3) Provides the domain part for "expand-hosts"
#domain=thekelleys.org.uk
domain=mypridomain.com

# Set Liste address
listen-address=127.0.0.1 # Set to Server IP for network responses




Se você deseja ativar a validação e o armazenamento em cache do DNSSEC, remova o comentário

  #dnssec

Faça quaisquer outras alterações que você veja relevantes e reinicie o dnsmasq quando terminar:

  sudo systemctl restart dnsmasq

Etapa 2: Adicionando registros DNS ao Dnsmasq

Adicione registros DNS no arquivo. /etc/hosts . O Dnsmasq responderá a consultas de clientes usando esses registros.

$ sudo vim /etc/hosts
10.1.3.4 server1.mypridomain.com
10.1.4.4 erp.mypridomain.com 
192.168.10.2 checkout.mypridomain.com 
192.168.4.3 hello.world


Você precisa reiniciar o serviço dnsmasq após adicionar os registros.

sudo systemctl restart dnsmasq




Etapa 3: Testando a funcionalidade DNS do Dnsmasq

Para verificar se o Dnsmasq responde aos registros que adicionamos, aponte o servidor DNS de seus servidores para o servidor Dnsmasq. Edite /etc/network/interfaces para configuração persistente, ou o arquivo /etc/netplan/ nos servidores Ubuntu 18.04.

Como este é um teste, modifico o arquivo de tempo de execução /etc/resolv.conf

 

 

$ sudo vim /etc/resolv.conf
nameserver 127.0.0.1
nameserver 8.8.8.8

Teste using dig:

$ dig A erp.mypridomain.com

; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> A erp.mypridomain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43392
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;erp.mypridomain.com.		IN	A

;; ANSWER SECTION:
erp.mypridomain.com.	0	IN	A	10.1.4.4

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Aug 21 10:35:41 UTC 2018
;; MSG SIZE  rcvd: 64

Aqui um outro exemplo:

$ dig checkout.mypridomain.com A +noall +answer

; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> checkout.mypridomain.com A +noall +answer
;; global options: +cmd
checkout.mypridomain.com. 0 IN A 192.168.10.2


Você pode confirmar que estamos recebendo respostas conforme o configurado.

Configurar o Dnsmasq como servidor DHCP (opcional)

Você pode usar o Dnsmasq para atribuir endereços IP a clientes, estáticos ou dinâmicos.

Edite o arquivo como /etc/dnsmasq.conf e forneça as opções de DHCP. Você precisa fornecer:

  • Endereço IP do gateway padrão
  • Endereço IP do servidor DNS (Provavelmente Dnsmasq ou servidor DNS diferente)
  • Máscara de sub-rede
  • Faixa de endereços DHCP
  • Servidor NTP

Veja abaixo o exemplo

 

dhcp-range=192.168.3.25,192.168.3.50,24h
dhcp-option=option:router,192.168.3.1
dhcp-option=option:ntp-server,192.168.3.5
dhcp-option=option:dns-server,192.168.3.5
dhcp-option=option:netmask,255.255.255.0

Reinicie o dnsmasq e configure os clientes para obter um endereço IP desse servidor.

sudo systemctl restart dnsmasq

Conclusão

Dnsmasq é um fácil de configurar cache DNS que pode acelerar a navegação na Internet e a resolução de registros de domínio em seus sistemas. Você também pode aproveitar seu subsistema DHCP, que é fácil de configurar e usar para uma rede pequena.