A maioria das informações que vejo on-line diz para editar /etc/resolv.conf
, mas quaisquer alterações que eu fizer 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 do 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 for especificado de outra forma.
ATUALIZAR:
Eu mesmo respondi a esta pergunta: https://unix.stackexchange.com/a/163506/67024
Acho que é a melhor solução, pois:
- Funciona.
- Requer o mínimo de mudanças e
- Ele ainda funciona em conjunto com o cache DNS do dnsmasq, em vez de ignorá-lo.
Responder1
Acredito que se você quiser substituir o servidor de nomes DNS, basta adicionar uma linha semelhante a esta em seu base
arquivo em resolv.conf.d
.
Exemplo
OBSERVAÇÃO:Antes de começarmos, certifique-se de que o seguinte pacote esteja instalado, apt install resolvconf
.
$ sudo vim /etc/resolvconf/resolv.conf.d/base
Em seguida, coloque sua lista de servidores de nomes assim:
nameserver 8.8.8.8
nameserver 8.8.4.4
Finalmente atualize resolvconf
:
$ sudo resolvconf -u
Se você der uma olhada na página de manual, resolvconf
ela descreve os vários arquivos em /etc/resolvconf/resolv.conf.d/
.
/etc/resolvconf/resolv.conf.d/base
File containing basic resolver information. The lines in this
file are included in the resolver configuration file even when no
interfaces are configured.
/etc/resolvconf/resolv.conf.d/head
File to be prepended to the dynamically generated resolver
configuration file. Normally this is just a comment line.
/etc/resolvconf/resolv.conf.d/tail
File to be appended to the dynamically generated resolver
configuration file. To append nothing, make this an empty
file. This file is a good place to put a resolver options line
if one is needed, e.g.,
options inet6
Mesmo que haja um aviso no topo do head
arquivo:
$ cat /etc/resolvconf/resolv.conf.d/head
# 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
esse aviso existe para que, quando esses arquivos forem construídos, o aviso acabe chegando ao resolv.conf
arquivo resultante que esses arquivos serão usados para criar. Portanto, você poderia facilmente adicionar as nameserver
linhas descritas acima para o base
arquivo head
também.
Referências
Responder2
Também estou interessado nesta questão e tentei a solução proposta @sim.
Para testar, coloquei
nameserver 8.8.8.8
dentro /etc/resolvconf/resolv.conf.d/base
e
nameserver 8.8.4.4
em/etc/resolvconf/resolv.conf.d/head
Então reiniciei a rede com
sudo service network-manager restart
O resultado é que /etc/resolv.conf
parece
# 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 8.8.4.4
nameserver 127.0.1.1
e nm-tool
afirma que o dnsserver é
DNS: 208.67.222.222
DNS: 208.67.220.220
quais são os fornecidos pelo meu roteador. Por outro lado, cavar um endereço diz que
;; Query time: 28 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)
Se estiver certo, concluo de tudo isto que
- apenas a parte “head” é lida pelo resolvonf: a parte “base” é de alguma forma controlada pelo dnsmasq
- o dnsserver é na verdade forçado para 8.8.4.4 independente do servidor fornecido pelo dhcp, MAS você perde o cache fornecido pelo dnsmasq, já que a solicitação é sempre enviada para 8.8.4.4
- O dnsmasq ainda está usando SOMENTE o dnsserver fornecido pelo dhcp.
Resumindo, funciona, mas não creio que seja o resultado pretendido. Uma solução mais próxima, creio, é a seguinte. Editar
sudo vim /etc/dhcp/dhclient.conf
então adicione
supersede domain-name-servers 8.8.8.8;
O resultado é o seguinte: resolv.conf contém apenas 127.0.0.1, o que significa que o cache dnsmasq é invocado e nm-tool diz
DNS: 8.8.8.8
o que significa que se o nome procurado 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 "prepend" em vez de "substituir": desta forma, se o nome não for resolvido por 8.8.8.8, a solicitação volta para o outro servidor. Na verdade, nm-tool diz
DNS: 8.8.8.8
DNS: 208.67.222.222
DNS: 208.67.220.220
Responder3
Descobri que você pode alterar os servidores de nomes dnsmasq
usados adicionando as seguintes linhas a /etc/dnsmasq.conf
:
server=8.8.8.8
server=8.8.4.4
Eu não tinha um /etc/dnsmasq.conf
arquivo, pois ele é instalado pelo pacote dnsmasq, mas o Ubuntu só vem com o dnsmasq-base. Corri sudo apt-get install dnsmasq
, depois editei /etc/dnsmasq.conf
, depois sudo service dnsmasq restart
e sudo service network-manager restart
.
Corri sudo tail -n 200 /var/log/syslog
para verificar meu syslog e verificar se dnsmasq
estava usando os servidores de nomes que especifiquei:
Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.8.8#53
Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.4.4#53
Responder4
Pesquisar 'Conexão de Rede'
Abra
Em seguida, selecione WiFi ou Ethernet, ou o que você estiver usando, e clique em editar. Você obterá isto:
Selecione ipv4 nas guias
Selecione endereços apenas no método
Digite seu nome DNS abaixo e salve-o
Você Terminou