A maioria das informações que vejo online diz para editar /etc/resolv.conf
, mas todas as alterações que eu fizer lá serão substituídas.
$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND --
# YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1
Parece que 127.0.1.1 é uma instância local de dnsmasq
. Os dnsmasq
documentos dizem para editar /etc/resolv.conf
. Tentei colocar servidores de nomes personalizados /etc/resolv.conf.d/base
, mas as alterações não apareceram /etc/resolv.conf
após a execução sudo resolvconf -u
.
Para sua informação, não quero alterar o DNS por conexão, quero definir as configurações de DNS padrão para usar em todas as conexões quando não especificado de outra forma.
ATUALIZAR:
Eu mesmo respondi a esta pergunta: https://unix.stackexchange.com/a/163506/67024
Eu acho que é a melhor solução desde:
- Funciona.
- Requer a menor quantidade de alterações e
- Ele ainda funciona em conjunto com o cache DNS do dnsmasq, em vez de ignorá-lo.
dns=none
em/etc/NetworkManager/NetworkManager.conf
(ver detalhes na minha resposta abaixo).Respostas:
Acredito que se você deseja substituir o servidor de nomes DNS, basta adicionar uma linha semelhante a essa em seu
base
arquivo emresolv.conf.d
.Exemplo
Em seguida, coloque sua lista de servidores de nomes da seguinte maneira:
Finalmente atualize
resolvconf
:Se você der uma olhada na página de manual,
resolvconf
ela descreve os vários arquivos abaixo/etc/resolvconf/resolv.conf.d/
.Mesmo que haja um aviso na parte superior do
head
arquivo:esse aviso existe para que, quando esses arquivos forem construídos, o aviso finalmente chegue ao
resolv.conf
arquivo resultante que esses arquivos serão usados para criar. Assim, você poderia facilmente adicionar asnameserver
linhas descritas acima para obase
arquivo, aohead
arquivo também.Referências
fonte
base
e executoresolvconf -u
, os servidores de nomes não foram colocados no resolv.conf - quando eu coloquei os servidores de nomeshead
, eles estavam/run/resolvconf/interface/NetworkManager
nslookup google.com
e o primeiro IP na lista deve ser o seu novo servidor de nomes, se não, você fez errado/etc/resolvconf/resolv.conf.d/head
apenas, não combase
. Confirmado comnslookup google.com
.resolvconf
instalado. Você pode instalá-lo fazendosudo apt-get install resolvconf
.Também estou interessado nesta questão e tentei a solução proposta @sim.
Para testar, eu coloquei
dentro
/etc/resolvconf/resolv.conf.d/base
eno
/etc/resolvconf/resolv.conf.d/head
Então eu reiniciei a rede com
O resultado é que
/etc/resolv.conf
parecee
nm-tool
afirma que o dnsserver équais são os fornecidos pelo meu roteador. Por outro lado, digitar um endereço informa que
Se estou certo, concluo de tudo isso que
Em suma, funciona, mas não creio que seja o resultado pretendido. Uma solução mais próxima, acho que é a seguinte. Editar
então adicione
O resultado é o seguinte: resolv.conf contém apenas 127.0.0.1, o que significa que o cache do dnsmasq é chamado e o nm-tool diz
o que significa que, se o nome pesquisado não estiver no cache, ele será solicitado em 8.8.8.8 e não no servidor fornecido pelo dhcp.
Outra opção (talvez melhor) é usar "prefpend" em vez de "substituir": dessa maneira, se o nome não for resolvido em 8.8.8.8, a solicitação retornará ao outro servidor. De fato, a ferramenta nm diz
fonte
Descobri que você pode alterar os servidores de nomes que
dnsmasq
usa adicionando as seguintes linhas a/etc/dnsmasq.conf
:No entanto, eu não tinha um
/etc/dnsmasq.conf
arquivo, pois ele é instalado pelo pacote dnsmasq, mas o Ubuntu vem apenas com o dnsmasq-base. Eu corrisudo apt-get install dnsmasq
, editei/etc/dnsmasq.conf
, entãosudo service dnsmasq restart
esudo service network-manager restart
.Corri
sudo tail -n 200 /var/log/syslog
para verificar meu syslog e verificar sednsmasq
estava usando os servidores de nomes que especifiquei:fonte
sudo service network-manager restart
)Para situações IP estáticas, o Guia do Servidor Ubuntu diz para alterar o arquivo / etc / network / interfaces, que pode ser assim:
Você altera os IPs 192.168.3.45 192.168.8.10 para os que deseja, como 8.8.8.8
https://help.ubuntu.com/14.04/serverguide/serverguide.pdf Página 38
fonte
ifdown eth0; ifup eth0
.Abra
Em seguida, selecione WiFi ou Ethernet, ou o que você estiver usando, e clique em editar. Você receberá isso:
Selecione o ipv4 nas abas
Digite seu nome DNS abaixo e salve-o
Você Terminou
fonte
sudo service network-manager restart
, espere um pouco, verifique comnmcli d list | grep 'DNS\|IP-IFACE'
. E execute ping no seu cliente interno pelo nome.Uma solução rápida e suja que não foi mencionada ainda está definindo o sinalizador imutável no
resolv.conf
arquivo logo após editá-lo.Adicione isso e salve:
Então:
Isso deve fazer o truque. Eu também faço isso no meu sistema.
fonte
Configuração de DNS no Linux
O uso do DNS no linux é feito através de um conjunto de rotinas na biblioteca C que fornece acesso ao DNS (Internet Domain Name System). O arquivo de configuração do resolvedor (
resolv.conf
) contém informações que são lidas pelas rotinas do resolvedor na primeira vez em que são invocadas por um processo. Em resumo, cada processo que solicita o DNS lê/etc/resolv.conf
sobre a biblioteca. O NSS está em camadas e é configurado por/etc/nsswitch.conf
.A configuração de DNS do Linux está localizada no arquivo,
/etc/resolv.conf
MAS existem vários programas / serviços que desejam gerenciar e manipular automaticamente o arquivo de configuração de DNS em/etc/resolv.conf
. Em algumas situações, você pode querer gerenciar esse arquivo sozinho. Cada programa / serviço que gerencia o DNS tem seus próprios arquivos de configuração, como/etc/dnsmasq.conf
(para o serviço dnsmasq) e anexa a configuração do DNS na alteração da conexão e / ou em outros eventos ... uma solução rápida é bloquear o arquivo de configuração do DNS,chattr +i /etc/resolv.conf
mas isso não é recomendado em certo caso, uma solução melhor é configurar corretamente todos os programas / serviços usando o DNS como (dnsmasq / network-manager / resolvconf / etc.)Voltando ao controle do DNS
Aqui está uma lista exaustiva de configurações para recuperar o controle do resolv.conf e evitar que ele seja sobrescrito ( como desativar / configurar o DNS de outro local que não seja o resolv.conf ). Observe que o resolvconf é um programa independente do resolv.conf, também dependendo do seu sistema / configuração, você pode não ter um ou muitos dos programas listados aqui.
1. Resolvconf:
Arquivos de configuração
Atualize a configuração
Desativar resolvconf
2. Serviço Dnsmasq:
Arquivos de configuração
Atualize a configuração
3. Gerenciador de Rede:
Arquivos de configuração
Desativar DNS
Ativar DNS
Usar serviço resolvido
Use resolvconf
Atualize a configuração
4. Interfaces de rede:
Arquivos de configuração
Atualizar a configuração
5. Cliente DHCP:
Arquivos de configuração
Atualizar a configuração
6. Serviço Rdnssd:
Desativar rdnssd
7. Serviço Resolvido:
Desativar resolvido
8. Netconfig:
Arquivos de configuração
Desativar netconfig
Atualizar a configuração
Definindo o servidor DNS
Exemplo de uma
/etc/resolv.conf
configuraçãofonte
Meu problema era um pouco diferente, eu queria substituir os servidores DNS dos meus roteadores. Encontrei este link no Ubuntu: https://wiki.ubuntu.com/OverrideDNSServers
Ele diz: Se você deseja substituir as configurações de DNS fornecidas por um servidor DHCP, abra
e adicione a seguinte linha:
substituindo
<dns_ip_address*>
itens pelo conteúdo adequado.fonte
dhcp3
pasta? Eu tenho o Xubuntu 17.10, mudou-se/etc/dhcp
simplesmente?Talvez esteja faltando alguma coisa, mas de acordo com as instruções de configuração em https://help.ubuntu.com/14.04/serverguide/network-configuration.html, tudo o que você faz é atualizar o seguinte. Não estou executando um proxy - apenas uma máquina protegida por um firewall e DNS local (o exemplo mostra o Google, mas defina-o como necessário).
Padrão:
ATUALIZADA:
Reinicie, se você puder.
fonte
Tente adicionar
dns-nameservers XXX.XXX.XXX.X
ao seu/etc/networking/interfaces
arquivo.fonte
Algumas das respostas aqui funcionam muito bem. No entanto, eu não estava feliz com o fato de que eu tenho que ir manualmente através de arquivos de configuração apenas para definir o "bom"
DNS
que eu já estou recebendo ao longoDHCP
comNetworkManager
.Pesquisei um pouco e notei que o
/etc/resolv.conf
arquivo é realmente um link e está apontando para ele/run/systemd/resolve/stub-resolv.conf
. Após algumas experiências, parece que o/run/systemd/resolve/
diretório contém outro arquivo chamado,resolv.conf
que já contém as configurações que você recebeuDHCP
. Portanto, em vez de substituir / criar manualmente os arquivos de configuração/etc/
, basta vincular novamente o link/etc/resolv.conf
para apontar para o/run/systemd/resolve/resolv.conf
arquivo e tudo deve ficar bem:Agora você deve poder editar as configurações mesmo no Gerenciador de Rede do Gnome. :)
Não tenho certeza se isso funcionará nos ubuntu mais antigos, mas no Ubuntu 17.10.
fonte
systemd-resolve --flush-cache
aparentemente, quando executamos o arquivo vinculado original, a resposta acima restaura a funcionalidade originalEDIT MAIO 6,2016
Eu escrevi um script para atualizar todas as configurações das conexões do sistema no
/etc/Network-Manager/system-connections/
diretório A GUI que você usa para editar conexões individuais, edita um arquivo específico nesse diretório. O script atualiza todos os arquivos - apenas procura aqueles que não possuem o DNS definido com grep e o define com awk.Como acessar esses arquivos requer
sudo
acesso, execute este script comsudo
e depois reinicie o gerenciador de redeScript em ação:
POST ORIGINAL Alguns usuários aqui apontaram que o DNS é de alguma forma controlado por
dnsmasq
. Isso é realmente verdade. Eu enfrentei um problema um pouco menor, onde não importa o quanto eu mudeihead
oubody
em/etc/resolvconf/resolv.conf.d
, meu computador não poderia realmente acessar internado por nome de domínio - trabalhando apenas com endereços IP.O que eu fiz foi editar o
/etc/NetworkManager/NetworkManager.conf
arquivo. Originalmente, ela dissedns=dnsmasq
, mas eu mudei para:dns=208.67.222.222
. Embora desta forma,nm-tool
não mencione 208.67.222.222, eu ainda era capaz de usar nomes de domínio, não apenas endereços IP.Aqui está como meu
NetworkManager.conf
arquivo se parece agora:NOTA: Para mais detalhes sobre o meu problema e esta solução, consulte a minha publicação no askubuntu.com .
ATUALIZAÇÃO # 1
Tendo voltado para casa da universidade hoje, descobri que não conseguia me conectar ao meu WiFi em casa. Eu li um pouco sobre
man NetworkManager.conf
isso e constatamos quedns=
in[main]
é realmente uma linha para plug-ins, então linedns=dnsmasq
está realmente adicionando o plug-in dnsmasq ao NetworkManager, aparentemente.Portanto, minha solução ainda funcionou, exatamente como eu esperava. Aqui está um trecho da página de manual:
Portanto, definindo
dns=208.67.222.222
eu posso ter basicamente impedido o NetworkManager de usar esse plug-in, que de outra forma usaria o servidor DNS local (o que aparentemente não funciona).fonte
Existem dois métodos
Método 1
O servidor DNS a ser usado pode ser alterado atualizando o
head
arquivo emresolv.conf.d
e depois corra
O acima irá gerar um
resolv.conf
arquivo genérico no/etc
diretório Todos os seus pedidos de resolução serão enviados para o servidor de nomes mencionado acima. Resolvido.No entanto, existem implicações nisso. Ao usar
resolvconf
para consultar diretamente1.1.1.1
as resoluções de endereço, o poder do cache fornecido pelo dnsmasq se foi. Toda solicitação irá para1.1.1.1
Método 2
Se você não deseja que isso aconteça e use o dnsmasq para resoluções de DNS, consulte esta resposta. A resposta é simplesmente descrita aqui.
Adicione o seguinte conteúdo no
/etc/dnsmasq.conf
arquivo.Em seguida, reinicie o serviço dnsmasq
As coisas vão funcionar bem. Resolvido.
fonte
A maneira mais fácil de alterar o DNS:
Se surgirem problemas, instale
nano
:então ..
dns-nameservers
dns-nameservers 199.85.126.10 199.85.127.10
Espero que esta seja a melhor maneira, eu fiz assim em um VPS a propósito.
fonte
na raiz:
dns=dnsmasq
sobre/etc/NetworkManager/NetworkManager.conf
supersede domain-name-servers 4.2.2.1,4.2.2.3,4.2.2.5,4.2.2.4,4.2.2.1,4.2.2.2;
no final de/etc/dhcp/dhclient.conf
sudo service network-manager restart
O seguinte faz as alterações mostradas acima:
Aguarde 7/10 segundos para concluir o processo de reinicialização, verifique sua configuração com "nslookup nist.gov". Funciona bem no Ubuntu LTS 14.04.
fonte
Nota: Como a maioria das respostas, esta assume o uso do NetworkManager. No entanto, diferentemente da maioria das outras respostas, ele não pressupõe o uso de
resolvconf
,dhclient
ou de qualquer outra coisa - tome cuidado para que elas possam assumir o controle (consulte a atualização).Dado o número de visualizações desta pergunta, é incrível que essa solução de 8 caracteres ainda não tenha sido publicada: de acordo com
man NetworkManager.conf
,Portanto, adicione
na
[main]
seção/etc/NetworkManager/NetworkManager.conf
, reinicie o NetworkManager e ele não será/etc/resolv.conf
mais modificado .Observe que a configuração
rc-manager=unmanaged
deve ser equivalente adns=none
, e essa configuração,rc-manager=symlink
além de ter/etc/resolv.conf
como um link simbólico, pode ser uma idéia melhor (leia a página de manual acima mencionada).Atualização:
Depois que o NetworkManager parou de sobrescrever
/etc/resolv.conf
, imaginei quedhcpcd
já estava sendo substituído/etc/resolv.conf
por um arquivo vazio inútil na inicialização. A página de manual dedhcpcd.conf
ajudou, basta adicionarno seu
dhcpcd.conf
(o meu está dentro/etc/dhcpcd.conf
).fonte
No meu servidor Linux centos7, a melhor maneira de mudar essa opção era usando
comando que não é sugerido em nenhuma resposta aqui. Você pode editar servidores de nomes nessa ferramenta e, quando alterar as opções do gerenciador de rede desse utilitário, elas serão aplicadas automaticamentenmtui
/etc/resolv.conf
após a reinicialização. Aqui você pode encontrar mais informações .fonte