dnsmasq (Português) - ArchWiki

Jump to content
Toggle the table of contents

# dnsmasq (Português)

5 languages

- Deutsch
- English
- Español
- 日本語
- 中文（简体）

From ArchWiki

Status de tradução: Esse artigo é uma tradução de Dnsmasq. Data da última tradução: 2020-06-30. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Artigos relacionados

- Resolução de nome de domínio

dnsmasq fornece um servidor DNS, um servidor DHCP com suporte a DHCPv6 e PXE, e um servidor TFTP. Ele é projetado para ser leve e ter um tamanho reduzido, adequado para roteadores e firewalls com recursos restritos. O dnsmasq também pode ser configurado para armazenar em cache as consultas DNS para melhorar as velocidades de pesquisa de DNS nos sites visitados anteriormente.

## Instalação

Instale o pacote dnsmasq.

## Iniciar o daemon

Inicie/habilite `dnsmasq.service`.

Para ver se o dnsmasq iniciou adequadamente, verifique o journal do sistema:

    # journalctl -u dnsmasq.service

A rede também precisará ser reiniciada de forma que o cliente DHCP possa criar um novo `/etc/resolv.conf`.

## Configuração

Para configurar o dnsmasq, edite `/etc/dnsmasq.conf`. O arquivo contém comentários explicando as opções. Para todas as opções disponíveis, veja dnsmasq(8).

Atenção: A configuração padrão do dnsmasq habilita seus servidores DNS. Se você não quiser este serviço, você precisa desabilitá-lo explicitamente definindo a porta DNS para `0`:

    port=0

Dica: Para verificar a sintaxe do(s) arquivo(s) de configuração, execute:

    $ dnsmasq --test

### Servidor DNS

Para configurar o dnsmasq como um daemon de cache DNS em um único computador, especifique uma diretiva `listen-address`, adicionando o endereço IP do host local:

    listen-address=::1,127.0.0.1

Para usar este computador para ouvir em seu endereço IP da LAN para outros computadores na rede. Recomenda-se que você use um IP de LAN estático neste caso. Por exemplo:

    listen-address=::1,127.0.0.1,192.168.1.1

Defina o número de nomes de domínios em cache com `cache-size=tamanho` (o padrão é `150`):

    cache-size=1000

Para validar o DNSSEC carregue as âncoras de confiança DNSSEC fornecidas pelo pacote dnsmasq e defina a opção `dnssec`:

    conf-file=/usr/share/dnsmasq/trust-anchors.conf
    dnssec

Veja o dnsmasq(8) para mais opções que você pode querer usar.

#### Arquivo de endereços DNS e encaminhamento

Depois de configurar o dnsmasq, você precisa adicionar os endereços de host local como os únicos servidores de nomes em `/etc/resolv.conf`. Isso faz com que todas as consultas sejam enviadas para o dnsmasq.

Como o dnsmasq é um stub resolver, isto é, não é um servidor DNS recursivo, você deve configurar o encaminhamento para um servidor DNS externo. Isso pode ser feito automaticamente usando openresolv ou especificando manualmente o endereço do servidor DNS na configuração do dnsmasq.

##### openresolv

Se seu gerenciador de rede tiver suporte a resolvconf, em vez de alterar diretamente o `/etc/resolv.conf`, você pode usar o openresolv para gerenciar arquivos de configuração para o dnsmasq. [1]

Edite `/etc/resolvconf.conf` e adicione os endereços de loopback como servidores de nomes e configure o openresolv para escrever a configuração do dnsmasq:

    /etc/resolvconf.conf

    # Usa o servidor de nomes local
    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

Executa `resolvconf -u` de forma que os arquivos de configuração sejam criados. Se os arquivos não existirem, `dnsmasq.service` vai falhar ao iniciar.

Edite o arquivo de configuração do dnsmasq para usar a configuração gerada do openresolv:

    # Leia a configuração gerada pelo openresolv
    conf-file=/etc/dnsmasq-conf.conf
    resolv-file=/etc/dnsmasq-resolv.conf

##### Encaminhamento manual

Primeiro, você deve definir endereços de localhost como os únicos servidores de nomes no `/etc/resolv.conf`:

    /etc/resolv.conf

    nameserver ::1
    nameserver 127.0.0.1

Certifique-se de proteger `/etc/resolv.conf` de modificações conforme descrito em Resolução de nome de domínio#Sobrescrita do /etc/resolv.conf.

Os endereços de servidor DNS upstream devem então ser especificados no arquivo de configuração do dnsmasq como `server=endereço_servidor`. Também adicione `no-resolv` para que o dnsmasq não leia desnecessariamente `/etc/resolv.conf` que contém apenas os endereços de host local de si mesmo.

    /etc/dnsmasq.conf

    [...]
    no-resolv

    # Servidores do Google, por exemplo
    server=8.8.8.8
    server=8.8.4.4

Agora, as consultas de DNS serão resolvidas com dnsmasq, verificando somente os servidores externos se não puder responder à consulta de seu cache.

#### Adicionando um domínio personalizado

É possível adicionar um domínio personalizado a hosts em sua rede (local):

    local=/lan/
    domain=lan

Neste exemplo é possível pingar um host/dispositivo (p.ex., definido em seu arquivo `/etc/hosts`) como `hostname.lan`.

Descomente `expand-hosts` para adicionar um domínio personalizado a entradas de host:

    expand-hosts

Sem essa configuração, você terá que adicionar o domínio às entradas de `/etc/hosts`.

#### Testar

Para fazer um teste de velocidade de pesquisa, escolha um site que não tenha sido visitado desde que o dnsmasq foi iniciado (o drill faz parte do pacote ldns):

    $ drill archlinux.org | grep "Query time"

Executar o comando novamente usará o IP do DNS em cache e resultará em um tempo de pesquisa mais rápido se o dnsmasq estiver configurado corretamente:

    $ drill archlinux.org | grep "Query time"

    ;; Query time: 18 msec

    $ drill archlinux.org | grep "Query time"

    ;; Query time: 2 msec

Para testar se a validação do DNSSEC está funcionando, veja DNSSEC (Português)#Testando.

### Servidor DHCP

Por padrão, o dnsmasq tem a funcionalidade de DHCP desativada, se você quiser usá-la, deve ativá-la. Aqui estão as configurações importantes:

    # Ouve apenas à placa de rede 'LAN-NIC' dos roteadores. Fazer isso abre
    # a porta 53 tcp/udp para o localhost e a porta 67 udp para o mundo:
    interface=<LAN-NIC>

    # O dnsmasq vai abrir a porta 53 tcp/udp e porta 67 udp para o mundo
    # para ajudar com interfaces dinâmicas (atribuição de IPs dinâmicos).
    # O dnsmasq vai descartar requisições do mundo a elas, mas os paranoicos
    # podem querer fechá-las e deixar o kernel lidar com elas:
    bind-interfaces

    # Opcionalmente, defina um nome de domínio
    domain=example.com

    # Defina o gateway padrão
    dhcp-option=3,0.0.0.0

    # Defina os servidores DNS para anunciar
    dhcp-option=6,0.0.0.0

    # Se seu servidor dnsmasq também fizer o roteamento de sua rede,
    # você pode usar a opção 121 para aplicar uma rota estática.
    # x.x.x.x é a LAN de destino, yy pe a notação CIDR (geralmente /24),
    # e z.z.z.z é o host que vai fazer o roteamento.
    dhcp-option=121,x.x.x.x/yy,z.z.z.z

    # Intervalo dinâmico de IPs para disponibilizar ao computador e o tempo
    # de concessão. Idealmente, defina o tempo de concessão para 5m apenas
    # no começo para testar se tudo funciona bem antes de você definir
    # registros duradouros:
    dhcp-range=192.168.111.50,192.168.111.100,12h

    # Fornece concessões IPv6 de DHCP por meio de Router Advertisements (RAs)
    # para a sub-rede aaaa:bbbb:cccc:dddd::/64
    dhcp-range=aaaa:bbbb:cccc:dddd::,ra-only,infinite

    # Se você quiser ter o dnsmasq atribuindo IPs estáticos para alguns
    # clientes, vincule os endereços MAC da placa de rede dos computadores:
    dhcp-host=aa:bb:cc:dd:ee:ff,192.168.111.50
    dhcp-host=aa:bb:cc:ff:dd:ee,192.168.111.51

Veja dnsmasq(8) para mais opções.

#### Testar

A partir de um computador conectado ao dnsmasq, configure-o para usar o DHCP para atribuição automática de endereço IP e, em seguida, tente efetuar login na rede normalmente.

Se você inspecionar o arquivo `/var/lib/misc/dnsmasq.leases` no servidor, poderá ver a concessão.

### Servidor TFTP

O dnsmasq tem um servidor TFTP embutido.

Para usá-lo, crie um diretório para a raiz do TFTP (p.ex., `/srv/tftp`) para colocar arquivos transferíveis nele.

Para aumentar a segurança, é aconselhável usar o modo seguro de TFTP do dnsmasq. No modo seguro, apenas os arquivos pertencentes ao usuário `dnsmasq` serão atendidos pelo TFTP. Você precisará fazer chown na raiz do TFTP e todos os arquivos nele para o usuário `dnsmasq` usar este recurso.

Habilite o TFTP:

    enable-tftp
    tftp-root=/srv/tftp
    tftp-secure

Veja dnsmasq(8) para mais opções.

### Servidor PXE

O PXE requer servidores DHCP e TFTP, ambas as funções podem ser fornecidas pelo dnsmasq.

Dica: O dnsmasq pode ser executado no modo "proxy-DHCP" e adicionar opções de inicialização PXE a uma rede com um servidor DHCP já em execução:

    interface=enp0s0
    bind-dynamic
    dhcp-range=192.168.0.1,proxy

1. defina #Servidor TFTP e #Servidor DHCP
2. copie e configure um gerenciador de boot compatível com PXE (p.ex., PXELINUX) na raiz do TFTP
3. habilite PXE no `/etc/dnsmasq.conf`:

Nota:

- caminhos de arquivos são relativos à raiz do TFTP
- se o arquivo tem um sufixo `.0`, você deve excluir o sufixo nas opções `pxe-service`

Para apenas enviar um arquivo:

    dhcp-boot=lpxelinux.0

Para enviar um arquivo dependente da arquitetura do cliente:

    pxe-service=x86PC, "PXELINUX (BIOS)", "bios/lpxelinux"
    pxe-service=X86-64_EFI, "PXELINUX (EFI)", "efi64/syslinux.efi"

Nota: No caso de `pxe-service` não funcionar (especialmente para clientes baseados em UEFI), a combinação de `dhcp-match` e `dhcp-boot` pode ser usada. Veja RFC4578 para mais números de `client-arch` para usar com o protocolo de inicialização de dhcp.

    dhcp-match=set:efi-x86_64,option:client-arch,7
    dhcp-match=set:efi-x86_64,option:client-arch,9
    dhcp-match=set:efi-x86,option:client-arch,6
    dhcp-match=set:bios,option:client-arch,0
    dhcp-boot=tag:efi-x86_64,"efi64/syslinux.efi"
    dhcp-boot=tag:efi-x86,"efi32/syslinux.efi"
    dhcp-boot=tag:bios,"bios/lpxelinux.0"

Veja dnsmasq(8) para mais opções.

O resto é por conta do gerenciador de boot.

## Dicas e truques

### Evitar que o OpenDNS redirecione as consultas do Google

Para evitar que o OpenDNS redirecione todas as consultas do Google para seu próprio servidor de pesquisa, adicione ao `/etc/dnsmasq.conf`:

    server=/www.google.com/<IP do DNS do provedor>

### Substituir endereços

Em alguns casos, como ao operar um portal cativo, pode ser útil resolver nomes de domínios específicos para um conjunto de endereços codificados. Isso é feito com a configuração `address`:

    address=/example.com/1.2.3.4

Além disso, é possível retornar um endereço específico para todos os nomes de domínio que não são respondidos de `/etc/hosts` ou DHCP usando um curinga especial:

    address=/#/1.2.3.4

### Mais de uma instância

Se quisermos que dois ou mais servidores dnsmasq funcionem por interface(s).

#### Estático

Para fazer isso de forma estática, servidor por interface, use as opções `interface` e `bind-interface`. Esta execução inicial segundo dnsmasq.

#### Dinâmico

Neste caso, podemos excluir por interface e vincular quaisquer outras:

    except-interface=lo
    bind-dynamic

Nota: Esse é o padrão no libvirt.

### Colocar domínios em lista negra

Para fazer um blacklist em domínios, ou seja, as respostas a consultas para eles com NXDOMAIN, use a opção `address` sem especificar o endereço IP:

    address=/blacklisted.example/
    address=/another.blacklisted.example/

Para facilitar o uso, coloque a lista negra em um arquivo separado, como, por exemplo, `/etc/dnsmasq.d/blacklist.conf`, e carregue-o a partir de `/etc/dnsmasq.conf` com `conf-file=/etc/dnsmasq.d/blacklist.conf` ou `conf-dir=/etc/dnsmasq.d/,*.conf`.

Dica: Uma lista de fontes potenciais para a lista negra pode ser encontrada no README do pacote de bloqueador de propagandas do OpenWrt.

## Veja também

- Fazendo cache de servidor de nome usando dnsmasq e algumas outras dicas e truques.

Categories:

- Domain Name System (Português)
- DHCP (Português)