Era sabido que o NetworkManager não funciona bem com dnsmasq
(ref: aqui ). Eu passei por toda a longa discussão aqui, mas ainda não tenho certeza de qual é a maneira recomendada de lidar com a situação.
Tudo o que eu quero fazer é usar dnsmasq
para fornecer DNS e DHCP à minha rede local. Qual seria a maneira recomendada neste caso?
Parece que o problema permanece até no Ubuntu 14.04, e até mesmo o bug é corrigido.
Como solução alternativa, as pessoas estão desativando os escravizados dnsmasq-base
pelo NM, pelas seguintes razões:
O NM-escravizado dnsmasq
usa opções codificadas (em C) que fornecem funcionalidade extremamente limitada.
- Ele não escuta no ethX (
--listen-address=127.0.0.1
). Portanto, não podemos usar nossos servidores como servidores DNS para nossos PCs de rede local, ou seja, é completamente inútil para LANs. - Não armazena em cache solicitações (
--cache-size=0
). Sem cache ==> sem aceleração de consultas DNS. Isso novamente é muito significativo para LANs, pois há muitos usuários simultâneos. - Finalmente, também precisamos da funcionalidade DHCP e TFTP do dnsmasq, portanto, mesmo que o NM + dnsmasq incluísse um servidor DNS real, teríamos que executar outro dnsmasq
Mas não tenho certeza se eles ainda são válidos e / ou como a correção resolve o (s) problema (s). Além disso, nenhum deles é muito claro exatamente o que eles fizeram e como fizeram para resolver seu problema. Ou seja, a parte da solução está faltando na longa discussão . Alguém pode preencher os espaços em branco, por favor? Ou seja,
O produto dnsmasq
fornecido pelo Ubuntu não está funcionando, no lado do servidor, pelos motivos acima. E também, no lado do cliente, "o dnsmasq instalado nesses laptops Ubuntu não pode fazer a consulta DNS da LAN no meu servidor DNS" , porque "o NetworkManager (dos laptops Ubuntu) está fazendo com que eles tenham uma configuração estranha do servidor de nomes 127.0.1.1" ( ref: solução DNS para LAN ou rede doméstica local )
Como fazer com que o dnsmasq funcione sem problemas com o NetworkManager, de modo a fornecer DNS e DHCP (e TFTP) à minha rede local, no servidor e no cliente?
TL'dr
para quem procura a resposta. De todas as respostas abaixo, achei que a solução mais simples é a @ brad's, para o lado do servidor (ainda não há uma boa resposta para o lado do cliente):
a única solução para o problema é desativar o dnsmasq da unidade NM ..., instalar o dnsmasq "padrão" e configurá-lo através do
/etc/dnsmasq.conf
arquivo de configuração padrão .
Respostas:
Eu também tenho seus problemas.
Em princípio, após o wiki.archlinux , parece que, para ativar o cache, deve ser suficiente criar um arquivo
/etc/NetworkManager/dnsmasq.d/cache
contendo simplesmenteEu tentei isso, mas, após o NM reiniciar, ainda não tenho cache:
Observe que o arquivo conf citado está sempre vazio: não consegui configurar nenhuma opção usando este procedimento.
Em suma, parece que o dnsmask escravizado pelo NM no 14.04 (que é fornecido pelo pacote dnsmasq-base) está completamente bloqueado, portanto, não é possível ativar o cache, nem qualquer outra coisa (dhcp, tftp).
Se isso estiver certo, acho que, como você diz, a única solução para o problema é desativar o dnsmasq da unidade NM comentando a linha
no arquivo
/etc/NetworkManager/NetworkManager.conf
e instale o dnsmasq "padrão" e configure-o por meio de seu/etc/dnsmasq.conf
arquivo de configuração padrão .fonte
--conf-dir=/etc/NetworkManager/dnsmasq.d
, ocache-size
especificado no arquivo que você criou é usado. Você pode ver a diferença usandodig
É possível substituir as configurações colocando-as em
/etc/NetworkManager/dnsmasq.d/*.conf
. As configurações do arquivo de configuração têm precedência sobre os sinalizadores da linha de comando. Eles são aplicados quando o NetworkManager inicia o dnsmasq. Corrasudo service network-manager restart
para reaplicar. (Se houver alguma dúvida: a resposta de Brad perdeu o fato deps ax | grep dns
mostrar uma--conf-dir
discussão)Por exemplo:
Pelo que me lembro, o NetworkManager desabilita o cache do dnsmasq por padrão devido a preocupações com o envenenamento do cache. Para uma máquina em que todos os usuários são confiáveis, pode não ser um problema.
O NetworkManager não se integra
resolvconf
e o servidor da NM127.0.1.1
não será usado localmente se o pacote resolvconf estiver instalado. O resolvconf faz parte das instalações padrão do ubuntu-minimal e padrão; O NetworkManager reimplementa essa funcionalidade de maneira mais integrada e com menos scripts.NetworkManager faz ter certeza de não interferir com uma instância dnsmasq global (ligação a uma auto-retorno secundário IP e configuração
bind-interfaces
através/etc/dnsmasq.d/network-manager
). Se você instalar uma instância global do dnsmasq e manter a instância do NM, verifique novamente/etc/resolv.conf
para ver qual o host usará por padrão.Embora você possa personalizar a instância dnsmasq do NetworkManager, como mostrado acima, se desejar um servidor DNS vinculado a interfaces públicas, instale o
dnsmasq
pacote (o NetworkManager usa apenasdnsmasq-base
, que não configura uma instância global) e faça sua configuração/etc/dnsmasq.d/*.conf
. A instância escrava do NetworkManager destina-se apenas a vincular-se à interface de loopback e configurá-la além desse escopo arriscaria quebrá-la.Em resumo, para alguém que apenas deseja cache de DNS local:
Para uma LAN simples, o compartilhamento de conexão do NetworkManager ainda deve ser suficiente. Mas para uma LAN configurada personalizada, com TFTP e assim por diante:
fonte
dnsmasq
pacote. então qual é o próximoecho
comando? desde que adnsmasq
vontade se foi.dnsmasq
, mas você ainda deve terdnsmasq-base
instalado devido ao NM.Eu queria atribuir um MAC específico a um endereço IP específico e, para fins de estabilidade, manter o Network Manager / dnsmasq padrão o máximo possível.
https://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/src/dnsmasq/nm-dnsmasq-manager.c tem o comentário sobre o uso de --conf-file para ignorar configurações, mas posteriormente no arquivo que temos
No Ubuntu 16.04 LTS, depois de configurar um ponto de acesso Wi-Fi e compartilhar outra conexão,
ps auxgww | grep dnsmasq
mostra que o último argumento da linha de comando de cada um dos processos dnsmasq é:Portanto, é possível criar arquivos de configuração nesse diretório que são compartilhados entre todas as chamadas do dnsmasq iniciadas pelo Network Manager.
Criei /etc/NetworkManager/dnsmasq-shared.d/Hue
e reiniciado, embora executando
teria funcionado.
Isso resultou no meu dispositivo obtendo o endereço IP apropriado.
Sim, isso está errado, porque significa que todas as chamadas do dnsmasq pelo NetworkManager receberão essa declaração, mas, neste caso, é inofensivo, porque só importa se o MAC aparecer na rede em questão. Se a rede não for 192.168.1, haverá problemas.
Isso é mais robusto do que substituir / usr / sbin / dnsmasq por um script, conforme proposto em https://gist.github.com/magnetikonline/6236150
A solução certa seria modificar como o dnsmasq é chamado para usar corretamente os arquivos de configuração do dnsmasq. Entendo o desejo de ter o Network Manager "apenas funcionando", mas tornar as ferramentas à prova de idiotas significa que apenas os idiotas podem usá-las.
fonte
Minha solução pode quebrar o Network Manager e manter tudo de maneira simples. Com a maneira quebrada do NM de lidar com o dnsmasq, eu apenas o substitui pelo meu método abaixo.
Uma solução alternativa para o problema era simplesmente fazer o seguinte:
Edite o
~/dnsmasq.conf
arquivo no diretório do usuário como deseja e salve-o.Criei um alias simples do bash e coloquei na parte inferior do meu arquivo ~ / .bash_aliases para facilitar a edição do arquivo dnsmasq.conf. Aqui está o alias:
Claro, você pode escolher qualquer editor que você goste do segundo comando sudo no pseudônimo, mas eu usei o nano lá para facilitar a todos. Salve o arquivo, feche e reabra a guia / janela do terminal de comando. Isso deve permitir que o alias esteja disponível para as abas / janelas do terminal recém-abertas.
Basta executar a
eddmc
partir da sua conta de usuário e ela solicitará sua senha para executar os comandos elevados.Observe que eu sempre
chattr +i
o arquivo. Isso significa que o Network Manager não substituirá sua configuração por ela própria.Nas conexões Ethernet com fio, não deve haver problemas. Descobri desde que uso o dnsmasq para cache de DNS em laptops com conexão sem fio que tenho que reiniciar manualmente o dnsmasq.service após conectar-me a um ponto de acesso. Acho que o Network Manager pode executar tarefas como reiniciar serviços ao conectar, mas ainda não examinei isso.
fonte
Apesar das reivindicações aqui e em outros lugares, o NetworkManager ignora completamente todos e quaisquer arquivos de configuração do dmsmasq - mesmo aqueles em seu próprio diretório
/etc/NetworkManager/dnsmasq-shared.d
. A prova está no código fonte do NetworkManager ... Aqui está o comentário relevante:Aqui está o link para o código fonte relevante (linhas 139-144).
fonte