Como tornar o endereço do servidor de nomes permanente no /etc/resolv.conf?

14

Não consigo reter o endereço do servidor de nomes definido por mim /etc/resolv.conf. Toda vez que eu defino o valor, o gerenciador de rede o substitui pelo gateway padrão na reinicialização.

Como acertar?

Eu preferiria uma maneira diferente de alterar o servidor de nomes no roteador.

Ashildr
fonte
Você precisa alterá-lo com o NetworkManager(como indicado na primeira linha). Este arquivo é gerado novamente em cada inicialização pelo NetworkManager. Depende da sua distribuição Linux (que você não mencionou) como acessar isso NetworkManager.
Rik

Respostas:

13

Depende. Por favor, leia até o fim.

Se você não possui o pacote resolvconf instalado, é fácil: depois de alterá-lo da maneira que desejar, emita o comando

 sudo chattr +i /etc/resolv.conf

O comando altera os atributos do arquivo, tornando-o immutable(a opção + i).

No entanto, se você tiver o pacote resolvconf instalado, o arquivo /etc/resolv.conf poderá ser transformado em um link simbólico,

 # file /etc/resolv.conf
 /etc/resolv.conf: symbolic link to `../run/resolvconf/resolv.conf'

que é um arquivo em um sistema de arquivos virtual, a epitomia de uma versão não permanente. O engraçado é que você pode não saber que possui o resolvconf instalado, porque versões recentes de sistemas operacionais semelhantes ao Debian vêm com ele pré-instalado. Você pode determinar se sua distribuição o instalou para você emitindo o comando:

 #whereis resolvconf
 resolvconf: /sbin/resolvconf /etc/resolvconf /lib/resolvconf /usr/share/man/man8/resolvconf.8.gz

Ainda mais importante, você pode estabelecer se o seu /etc/resolv.conffoi transformado em um link por meio do comando (arquivo /etc/resolv.conf) acima. Se a resposta for ASCII text, use chattr, caso contrário ...

Se você usa um IP estático, a coisa mais simples é adicionar a seguinte linha (ou algo assim)

 dns-nameservers 8.8.4.4 8.8.8.8

à estrofe que define as propriedades da sua interface estática em / etc / network / interfaces.

Se você estiver em um laptop que se conecta o tempo todo a redes diferentes, siga LawrenceCas excelentes sugestões. Porém, se você tiver resolvconf em seu sistema, a maneira correta (e mais simples) de fornecer um conjunto fixo de DNSs é usar os arquivos em /etc/resolvconf/resolv.conf.d . Em particular, os seguintes arquivos são usados ​​(consulte a página de Stephane Graber ):

base : Usado quando nenhum outro dado pode ser encontrado

head : Usado para o cabeçalho do resolv.conf, pode ser usado para garantir que um servidor DNS seja sempre o primeiro da lista

tail : Qualquer entrada no tail é anexada no final do resolv.conf resultante.

Então coloque seus servidores de nomes favoritos na cabeça , da seguinte maneira

  nameserver 8.8.8.8

e você terminou.

MariusMatutiae
fonte
2
@dhiller Ultrasawblade mudou seu nome para LawrenceC, é esse abaixo.
MariusMatutiae
Post muito agradável e interessante, eu gostaria que você adicione alguns links de documentação sobre este tema para os usuários que querem saber mais sobre o tema, Thx
Philippe Gachoud
/etc/resolvconf/não existe por padrão no Ubuntu 18.04.
Dan Dascalescu 21/10/19
9

Adicione uma linha semelhante ao /etc/dhcp/dhclient.confuso de um terminal raiz:

supersede domain-name-servers 74.122.198.48, 50.116.23.211;

Isso faz com que dhcliento programa que emite uma solicitação DHCP e faça alterações de acordo com o que a resposta disse, substitua as informações obtidas do servidor DHCP pelas anteriores, antes de fazer alterações.

Acima estão dois servidores DNS OpenNIC. Substitua conforme necessário para os servidores que você deseja usar.

Como isso acontece sempre que você obtém informações de configuração do DHCP, use dhclient -v eth0ou qualquer outra interface para atualizá-lo e ver a alteração.

LawrenceC
fonte
1
Em vez de substituir o DNS (geralmente roteador), pode-se adicionar a linha, prepend domain-name-servers 8.8.8.8por exemplo. Isso usaria o DNS do ISP quando disponível.
Axel Latvala
3

Parece que foi mencionado pelo @Rik que o motivo das substituições de DNS na reinicialização se deve ao gerenciador / utilitário de rede que está definido. No Linux Mint, conforme a captura de tela, eu tinha meu método IPv4 definido apenas para endereços Automático (DHCP). Você pode inserir as configurações corretas em /etc/resolv.conf ou na seção de servidores DNS. Lembro que no Ubuntu 13.04 meus servidores de nomes mudaram algumas vezes durante um longo período de tempo, mas depois que eu os editei na GUI, tudo parecia estável a partir de então.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Rudolph
fonte
3

Teve o mesmo problema, mas eu uso o endereço IP estático. A correção estava apenas adicionando o DNS em / etc / network / interfaces

iface eth0 inet static
    address [your ip>
    netmask [your netmask]
    network [your network]
    broadcast [your broadcast]
    gateway [your gateway]
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers [dns server1] [dns server2]
    dns-search [your domain]
kanelbolle
fonte
Sim, isso corrige porque o NetworkManager ignora as interfaces listadas em /etc/network/interfaces. Boa pegada!
Izzy #
1

Se você usou o wicd, clique com o botão direito do mouse no ícone e clique em informações da conexão. Quando a janela se abrir, clique nas propriedades da qual você está conectado.

Verifique usar DNS estático e, na linha que diz servidor DNS 1, digite o IP do DNS do Google 8.8.8.8e, na linha do servidor DNS 2 8.8.4.4, clique em "ok".

Se você estiver recebendo erros dos padrões, entre em contato com seu ISP e mencione-o. Eles geralmente atribuem servidores DNS ao seu modem quando você se conecta a eles.

Yames
fonte
0

Invadir seu caminho por chattr +iou similar é uma solução rápida, na melhor das hipóteses, e deve ser evitado sempre que possível (pelo menos a longo prazo - como dito, é uma solução alternativa de curto prazo até encontrar tempo para a solução real) . Como já apontado, este é um trabalho para o NetworkManager, que oferece uma CLI que podemos usar para isso:

# encontre qual interface ajustar
dispositivo nmcli
# output se parece com:
# CONEXÃO DE ESTADO DO TIPO DE DISPOSITIVO
# enp0s3 ethernet conectado ao meu escritório
# lo loopback não gerenciado -
# A partir disso, precisamos da CONEXÃO.

# Agora adicione nossos "domínios de pesquisa":
conexão nmcli modificar my-office ipv4.dns-search example1.com
nmcli com mod meu escritório + ipv4.dns-search example2.com

# E nossos servidores de nomes:
nmcli con modifique meu escritório ipv4.dns 213.73.91.35
nmcli con modifica meu escritório + ipv4.dns 87.118.100.175
# observe o "+" na segunda linha: adicione outra,
# enquanto a primeira linha sobrescreve a entrada existente.
# poderíamos ter feito isso com uma única chamada:
nmcli con modifica my-office ipv4.dns "213.73.91.35 87.118.100.175"

# OK, então agora vamos dizer para ignorar as atualizações do servidor DHCP:
nmcli con modifique meu escritório ipv4.ignore-auto-dns yes

# e aplique as modificações em nossa configuração atual
nmcli con meu escritório

Se você usa um endereço IP estático, também pode usar a solução da resposta de kanelbolle .

Izzy
fonte
0

Incrível como frustrando este pequeno problema pode começar, quando as soluções dadas para que não funcionam mais em Ubunutu 18,04.

O que funcionou para mim foi simplesmente substituir o nameservervalor /etc/resolv.confde cada inicialização. sudoedite /etc/rc.locale adicione esta linha:

 sed -i "s/nameserver 127.0.0.53/nameserver 8.8.8.8/" /etc/resolv.confsudo /etc/rc.local
Dan Dascalescu
fonte