como obter o servidor de nomes privado dnsmasq para trabalhar com o networkmanager?

3

Apenas aprendendo sobre redes.

Eu estou no Mint-18. Use network-manager . dnsmasq está ativado.

Gostaria que endereços que terminassem com um determinado nome de domínio fossem resolvidos por meio de um servidor de nomes particular.

Quando eu adiciono um servidor de nomes privado usando a opção server ao arquivo de configuração do dnsmasq, tudo falha. Eu não posso nem mesmo resolver google.com:

> nslookup google.com
;; connection timed out; no servers could be reache

Se eu remover a opção server e adicionar o mesmo servidor de nomes privados à parte superior de \etc\resolve.conf , reinicie as coisas do gerenciador de redes novamente e poderei resolver nomes de hosts particulares.

> nslookup abcprivate.net
Server:     nn.nn.nn.nn
Address:    nn.nn.nn.nn#53

Non-authoritative answer:
Name:   abcprivate.net
Address: mm.mm.mm.mm

Então, eu sei que o servidor de nomes privados está correto. Então deve ser assim que estou configurando o dnsmasq.

Aqui está o meu arquivo de configuração

>cat /etc/NetworkManager/dnsmasq.d/dnsmasq.conf
server=/abcprivate.net/nn.nn.nn.nn

onde abcprivate.net é o domínio da rede privada e nn são dígitos.

    
por hba 12.11.2016 / 03:33

3 respostas

2

Descobri que minhas configurações estavam corretas, mas não estavam sendo usadas.

>ps ax | grep dnsmasq
 1273 ?        S      0:00 /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/var/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1 --cache-size=0 --conf-file=/dev/null --proxy-dnssec --enable-dbus=org.freedesktop.NetworkManager.dnsmasq --conf-dir=/etc/NetworkManager/dnsmasq.d

Como pode ser visto, não estava usando o arquivo conf ... Fiz alguns outros testes para ter certeza de que era o caso.

Acabei resolvendo o problema, mas consegui:

  • Desativando o plugin dnsmasq do Network-manager: comente a linha dns em /etc/NetworkManager/NetworkManager.conf
  • Movendo o /etc/NetworkManager/dnsmasq.d/dnsmasq.conf para /etc/dnsmasq.conf
  • Adicionando uma captura de todos os servidores de nomes ao /etc/dnsmasq.conf (veja abaixo para lista de arquivos)
  • Adicionando o endereço do dnsmasq ao topo do /etc/resolve.conf (alterando o arquivo /etc/resolvconf/resolv.conf.d/head ... veja abaixo para lista de arquivos)
  • Iniciando o dnsmasq de tal forma que ele não lerá o resolve.conf: dnsmasq -d -R -q (Eu queria registrar as consultas na tela para que eu pudesse ver o que estava acontecendo).
  • Uma que eu tinha tudo funcionando Eu encapsulei o dnsmasq em um arquivo de unidade do sistema
$ cat /etc/dnsmasq.conf
cache-size=1000
listen-address=127.0.1.1
server=8.8.8.8
server=/abcprivate.net/nn.nn.nn.nn
cache-size=1000

$ cat /etc/resolvconf/resolv.conf.d/head    
nameserver 127.0.1.1

$ cat /etc/systemd/system/dnsmasq.service
[Unit]
Description=SystemD - Dnsmasq is a Domain Name System (DNS) forwarder
Requires=network-manager.service

[Service]
Type=simple
ExecStart=/usr/sbin/dnsmasq -d -q -R
    
por 16.11.2016 / 05:29
2

Eu sei que esse segmento é obsoleto, mas caso isso ajude alguém, o /etc/NetworkManager/dnsmasq.c/dnsmasq.conf é ignorado para muitos, se não todos os parâmetros, porque alguns deles são codificados no código-fonte do NetworkManager. Veja esta postagem: link e também porque uma das configurações do hardcode é conf-file = / dev / null que previne que um arquivo conf seja lido, mesmo que o parâmetro para o diretório conf-file também esteja definido.

    
por 31.10.2017 / 21:04
0

Acredito que dnsmasq pode fazer o que você quer, mas também parece que você tem alguns problemas com dnsmasq.conf

Você provavelmente precisará desta linha não comentada em dnsmasq.conf :

resolv-file=/etc/dnsmasq.resolv

Então você precisa de um arquivo /etc/dnsmasq.resolv com algum outro servidor de nomes. Eu tenho isso:

nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 4.3.2.1

Além disso, acho que você precisa de linhas como essas em /etc/dnsmasq.conf :

server=/.intranet/10.0.0.3
server=/0.0.10.in-addr.arpa/10.0.0.3
local=/.intranet/

O primeiro define o servidor de endereço IP para o domínio ".intranet". Meu modem DSL original usou endereços 10.0.0.0/24 dentro, então é isso que eu tenho hoje. A segunda linha permite procurar nomes de host de endereços IP. A terceira linha informa dnsmasq para procurar nomes totalmente qualificados no domínio ".intranet" em /etc/hosts ou a partir do que os clientes registram em dnsmasq DHCP. 10.0.0.3 é o endereço IP da máquina executando dnsmasq .

Para resumir: dnsmasq.resolv define o endereço IP para o qual dnsmasq enviará outros nomes. As configurações server e local determinam o endereço IP de um servidor DNS para um domínio específico e onde obter endereços para nomes nesse domínio.

    
por 12.11.2016 / 04:08