Costumo me conectar a várias redes simultaneamente. Cada uma dessas redes fornece a configuração do servidor de nomes via dhcp. Por exemplo, Rede 1: (eth0):
domain company1.corp #
nameserver 192.168.0.253
nameserver 192.168.0.254
Rede 2 (tun0):
domain company2.corp #
nameserver 10.102.204.51
nameserver 10.102.208.51
# Nomes alterados
Quando conectado às duas redes simultaneamente:
# resolv.conf from NetworkManager
domain company1.corp, company2.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
nameserver 10.102.204.51
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 10.102.208.51
A resolução de service.company2.corp não funciona porque o primeiro servidor de nomes apenas conhece os nomes de company1.corp.
Tão inspirado neste artigo , eu configurei o openresolv (uma implementação resolvconf) configurando um serviço dnsmasq local na minha instalação do Arch linux.
Se eu configurar os servidores de nomes manualmente usando resolvconf:
# resolvconf -d NetworkManager
# echo "domain company1.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
" | resolvconf -a eth0
# echo "domain company2.corp
nameserver 10.102.204.51
nameserver 10.102.208.51
" | resolvconf -a tun0
Então, sou capaz de resolver nomes de company1.corp e company2.corp (o servidor dnsmasq local lida com isso.)
Observe que após a configuração manual, resolveconf -l mostra as 2 configurações separadamente:
~ # resolvconf -l
# resolv.conf from tun0
domain company2.corp
nameserver 10.102.204.51
nameserver 10.102.208.51
# resolv.conf from eth0
domain company1.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
No entanto, ao permitir que o gerente de rede faça a configuração, as 2 configurações não são separadas, como seria se o gerente de rede estivesse gravando no /etc/resolve.conf
~ # resolvconf -l
# resolv.conf from NetworkManager
# Generated by NetworkManager
domain company1.corp, company2.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
nameserver 10.102.204.51
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 10.102.208.51
Minha pergunta é como posso fazer com que o gerente de rede chame corretamente resolveconf para que os servidores de nomes de cada interface sejam registrados separadamente. (Infelizmente, pesquisar no Google é inútil porque o Google pensa que "resolveconf" == "resolve.conf")
fonte
"resolvconf"
com as aspas. Sempre coloque aspas nos nomes próprios no Google.Respostas:
O NetworkManager tem a funcionalidade de gerenciar um servidor dnsmasq local incorporado. Não é necessário usar o resolvconf / openresolv para fazer isso.
Para habilitar isso:
dns=dnsmasq
a/etc/NetworkManager/NetworkManager.conf
.Depois de fazer isso, você verá que o NetworkManager iniciou um processo dnsmasq:
/etc/resolve.conf
deve estar apontando para a instância local do dnsmasq:e podemos ver quais servidores o dnsmasq está usando:
fonte
ubound
assim também DNSSEC está trabalhando, ver fedoraproject.org/wiki/Networking/NameResolution/DNSSECParece que o NetworkManager está simplesmente substituindo
/etc/resolv.conf
e não usando o openresolv. De acordo com o FS # 24635 , o NetworkManager tem suporte para openreslov, mas não foi ativado inicialmente na compilação. Qual versão do Arch Linux você está executando e qual é a versão do pacote networkmanager?fonte
Faça como Gary van der Merwe respondeu, mas em
/etc/NetworkManager/NetworkManager.conf
Eu tive que adicionar
para o arquivo Não apenas
dns=dnsmasq
Isso ocorre porque todas as configurações desse arquivo devem estar em uma seção e a versão da minha distribuição, manjaro (archlinux), do pacote NetworkManager não preenche o arquivo de configuração. (Suponho que a distribuição de Gary funcione desde que sua linha sugerida funcionou para ele e para outros)
Outra observação, qualquer configuração do dnsmasq deve ir em um arquivo de configuração neste
/etc/NetworkManager/dnsmasq.d/
diretório. Pode ser um diretório diferente na sua máquina. Aprendi o diretório que está sendo usado, observando a linha que o NetworkManager usa para iniciar o daemon dnsmasq. Você pode ver esta linha executando
ps aux|grep dnsmasq
. Você deve esperar para executá-lo até depois de modificar a configuração do NetworkManager e reiniciar seu serviço.fonte