Usando o dnsmasq para acessar vários servidores de nomes atribuídos pelo DHCP

1

Na minha área de trabalho que executa o openSUSE 11.4, eu tenho uma rede local que obtém seu endereço, domínio (work.site) e nameservers (10.100.1.1, 10.100.1.2) informações através do DHCP - que são gravadas em / etc / resolv .conf

Eu consigo acessar a internet usando a rede de trabalho, e esses 2 nameservers acabam retornando as entradas para pesquisas de nomes de domínio público na internet.

Eu também tenho uma VPN privada que acabo conectando. O servidor de nomes (10.111.1.1) e o domínio (private.site) raramente são obrigados a mudar para esta rede, mas atualmente eles são empurrados pelo cliente openVPN para o networkmanager, e que também é mesclado com o /etc/resolv.conf existente.

Meu resolv.conf acaba ficando assim:

search private.site work.site
nameserver 127.0.0.1
nameserver 10.111.1.1
nameserver 10.100.1.1

Como você pode ver, o segundo nameserver da minha rede de trabalho foi removido devido às limitações máximas de 3 entradas. Ainda bem, mas seria um problema se esse servidor de nomes faltar para manutenção ou algo assim.

Então eu descobri que o dnsmasq poderia me ajudar aqui e, portanto, eu configurei o dnsmasq apenas como um resolvedor de DNS local sem qualquer suporte DHCP.

Então, agora, esse é meu /etc/dnsmasq.conf:

resolv-file=/etc/resolv.conf
server=/private.site/10.111.1.1
server=/1.111.10.in-addr.arpa/10.111.1.1
listen-address=127.0.0.1
bind-interfaces
log-queries

Eu fiz o dnsmasq obter a lista de servidores de nomes do /etc/resolv.conf, pois o NetworkManager parece estar atualizando esta lista corretamente (para um máximo de 3 nameservers). Consigo resolver os nomes de host nas duas redes corretamente.

Essas são as perguntas que tenho:

  1. Existe uma maneira de fazer o NetworkManager ou o dhclient escrever a lista de servidores de nomes em algum outro lugar que eu possa fazer o dnsmasq usar como arquivo-resolv?
  2. Como faço para o dnsmasq usar certos servidores de nomes como o padrão para todas as consultas? Neste momento, percebo que as buscas por domínios públicos na internet geralmente são enviadas para os dois servidores de nomes - o do work.site e o do private.site. Seria bom se eu pudesse limitar isso apenas a work.site.

ATUALIZAÇÃO: Estas são as soluções que encontrei: Em / etc / sysconfig / network / config, altere o seguinte:

NETCONFIG_DNS_FORWARDER="dnsmasq"
NETCONFIG_DNS_FORWARDER_FALLBACK="no"
NETCONFIG_DNS_STATIC_SEARCHLIST="work.site private.site"

Em /etc/dnsmasq.conf, adicione estas linhas:

resolv-file=/var/run/dnsmasq-forwarders.conf

Eu também tive que modificar meu servidor openVPN.conf para não enviar servidores de nomes para os clientes, já que eu já havia adicionado uma regra de servidor no meu dnsmasq.conf para esse domínio.

    
por Tuxdude 31.05.2012 / 05:57

1 resposta

1

Se você instalar o resolvconf , o NetworkManager o usará em vez de escrever /etc/resolv.conf diretamente. Os servidores DNS do NM podem ser encontrados em /var/run/resolvconf/interface/NetworkManager .

O dnsmasq está enviando todas as consultas para 10.111.1.1 porque está listado em resolv.conf - você provavelmente deseja removê-lo de resolv.conf para que ele seja usado apenas para o domínio private.site. Os nameservers em resolv.conf são essencialmente os padrões.

    
por 31.05.2012 / 06:18