Qual é a maneira correta de alterar o IP do DNS?

56

Eu suspeito que o servidor de nomes fornecido pelo meu modem / roteador ADSL esteja com erros. Sempre que eu navego para um site pela primeira vez no ubuntu, a resolução do nome de domínio leva pelo menos 15 segundos.

Para contornar esse problema, alterei a configuração do servidor de nomes /etc/resolv.confde 192.168.1.1 (meu modem ADSL) para 8.8.8.8 (DNS primário do Google). Isso parece resolver o problema, mas infelizmente minhas alterações /etc/resolv.confsão substituídas pelo "NetworkManager" em cada inicialização.

Qual é a maneira correta de configurar o IP do servidor de nomes no ubuntu 10.4?

Wim Coenen
fonte

Respostas:

51

Se você possui uma configuração de conexão típica com o gerenciador de rede e o DHCP, tente o seguinte:

  1. Clique com o botão direito do mouse no ícone do gerenciador de rede no painel e escolha "Editar conexões ..."
  2. Selecione sua conexão na guia com ou sem fio, escolha "Editar"
  3. (Digite sua senha se a conexão estiver definida como "disponível em todo o sistema")
  4. Escolha a guia Configurações IPv4
  5. Alterne o método para "Somente endereços automáticos (DHCP)"
  6. Digite o servidor de nome desejado na caixa "Servidores DNS adicionais" e pressione "Aplicar"

Isso deve fazer o truque.

Marcel Stimberg
fonte
11
Isso continua funcionando no Ubuntu 12.04 e posterior, embora o NetworkManager agora use o resolvconf para lidar com o resolv.conf.
Jdthood
4
Se você está se perguntando onde a configuração termina, dê uma olhada /etc/NetworkManager/system-connections/(você precisará de privilégios administrativos para acessar esses arquivos de configuração).
precisa saber é o seguinte
2
Isso altera apenas o DNS para a conexão atual, mas há também uma maneira de alterar o DNS global ?
rubo77
a lista está vazia para mim. o que ele usa por padrão?
J. Taylor
11
Funciona exatamente da mesma forma na interface do terminal nmtuibtw!
Granitosaurus
30

Você pode alterá-los assim.

Primeiro, clique no ícone do gerenciador de rede na barra de menus e clique no Edit Connections...item.

insira a descrição da imagem aqui

Agora, mude para as guias "Com fio" ou "Sem fio", dependendo do que você usa - eu uso Wi-Fi, então usarei isso.

Selecione o nome da sua rede e clique em Edit...

Alterne para a guia IPv4 e altere-a de endereços DHCP automáticos para somente endereços DHCP automáticos.

Digite o endereço IP do servidor DNS.

insira a descrição da imagem aqui

Clique em Salvar e pronto!

jrg
fonte
Embora você possa alterar o servidor DNS nas configurações de rede de qualquer PC, é melhor alterá-lo no roteador real que se conecta à Internet, para que todos os dispositivos conectados se beneficiem dele.
Mark Rooney
3
E se ele não tiver um roteador em si? Ou ele só quer mudar o DNS deste computador / usuário? E se for apenas desta vez? Talvez ele realmente não tenha acesso ao roteador e queira usar outro servidor DNS ... Posso adicionar motivos a essa lista a noite toda. Boa dica e resposta @jrg.
Bruno Pereira
6
É um bom tutorial gráfico para configurar o DNS em uma única máquina com o gerenciador de rede. Gostaria apenas de salientar que você pode definir mais de um, separado por vírgula. 8.8.8.8,8.8.4.4. Definir o DNS para uma LAN também pode ser útil, se a LAN for grande o suficiente, eu pessoalmente uso o roteador ou o dnsmask. Em uma LAN, geralmente é mais fácil manter uma lista negra ou proxy em um único local (roteador / dnsmask / squid) e não em cada cliente ou usuário em cada cliente, mas isso está um pouco além da pergunta feita aqui.
Panther
29

A melhor maneira de definir um servidor de nomes por meio da CLI, sem o NetworkManger, com um endereço estático ou independente da conexão, é:

Instale o pacote resolvconf .

Corre

sudo nano /etc/resolvconf/resolv.conf.d/head

(ignore o aviso assustador. /etc/resolv.conf é gerado automaticamente, portanto o aviso existe para que seja colocado no /etc/resolv.conf quando o /etc/resolv.conf for gerado.) No final do arquivo, Adicionar, acrescentar

 nameserver <ip_of_nameserver>

Pressione Ctrl xe responda sim para salvar o arquivo. Para finalizar, gere novamente o arquivo /etc/resolv.conf para que as alterações sejam aplicadas agora:

 sudo resolvconf -u
Azendale
fonte
11
Por alguma razão, cerca de um mês atrás, minha compilação noturna do Xubuntu parou de resolver nomes de host da LAN. Meu servidor DHCP deve emitir-se (192.168.68.1) como servidor DNS, eu também o codifiquei no Network Manager e em todos os lugares (mencionados acima nesta resposta). Com a maneira como o Xubuntu / NetworkMan / Whatever usa um IP 127.0.xx atualmente, é difícil diagnosticar o problema. Eu poderia resolver IPs externos, por isso estava recebendo ALGO para DNS. Enfim, essa foi a única resposta que resolveu meu problema. Obrigado
Adam Plocher
18

Outra maneira de fazer isso é editá- /etc/dhcp3/dhclient.conflo, digitando-o na caixa de diálogo de execução (aparece pressionando Alt+ F2)

gksudo gedit /etc/dhcp3/dhclient.conf

Então encontre a seguinte linha

#prepend domain-name-servers 127.0.0.1;

E mude para

prepend domain-name-servers 8.8.8.8;

Isso fará com que o dhclient (o cliente DHCP que o NetworkManager use) acrescente isso aos seus servidores DNS, para que o resolve.conf acabe assim

nameserver 8.8.8.8
nameserver 192.168.1.1

Esta solução funcionará em todos os lugares e você sempre obterá o DNS escolhido como principal.

LassePoulsen
fonte
4
Parece-me que Network Manager escreve resolv.conf sem consultar dhclient.conf
daithib8
2
no Ubuntu 11.10, é necessário modificar /etc/dhcp/dhclient.conf vez de /etc/dhcp3/dhclient.conf
Pawel Barcik
11
pode colocar em vários?
PyRulez 29/04
11
@PyRulez Sim, separado por vírgulas, ponto e vírgula no final #
Sergiy Kolodyazhnyy
2
Eu tentei isso em 14.10, mas nenhum efeito
rubo77
7

Outra solução é alterar a configuração do seu roteador para usar o outro servidor DNS. Basta fazer login no administrador e, desde que não seja o roteador que está causando o problema, todas as máquinas clientes terão um DNS melhor.

Oli
fonte
+1 Concordado se este for um problema que provavelmente não será resolvido em breve, melhor para corrigi-lo no roteador, ele será corrigido para todas as máquinas da rede. Acho melhor usar o DNS do Google ou o OpenDNS.
Mark-Davidson
11
Eu já fiz isso, mas o roteador ainda atua como um servidor de nomes intermediário entre os clientes e o servidor de nomes configurado, e ainda é muito lento.
Wim Coenen
11
Muitos ISPs bloqueiam seus roteadores para que você não possa alterar essas configurações ou precise pagar para fazê-lo.
LassePoulsen
@ Wim Se o seu roteador não puder fornecer resolução de DNS dentro de um prazo razoável, digamos 50ms em uma boa conexão, algo está seriamente errado com ele. Tão errado que pode estar lidando com outro tráfego de maneira ineficaz. Talvez esteja na hora de uma atualização de US $ 30 / £ 20.
Oli
11
@Oli: O problema do DNS só aparece ao usar o roteador a partir de uma caixa Linux: eu tive o mesmo problema com o debian, mas sem problemas com o Windows. Tenho certeza de que é apenas um problema sutil de compatibilidade. O roteador funciona bem caso contrário.
Wim Coenen
6

Clique no indicador de rede no canto superior direito da tela e escolha Edit Connections.... Escolha a conexão que você deseja modificar (provavelmente na guia Wiredou Wirelesse clique no Edit...botão

Alterne para a IPv4 Settingsguia da janela de conexão e altere o método de Automatic (DHCP)para Automatic (DHCP) addresses only. Agora você deve poder especificar um endereço IP do servidor DNS.

Salve a conexão e você deve estar pronto. Pode ser necessário redefinir a conexão escolhendo-a no menu do indicador após alterar as configurações.

James Henstridge
fonte
1

Eu acredito que se você alterá-lo sob o gerenciador de rede é auto as alterações com persistir.

Para usar eth0, por exemplo

Gerenciador de rede -> Com fio -> Auto eth0 -> Configurações de ipv4.

Defina seu servidor DNS para 8.8.8.8 e aplique.

Mark Davidson
fonte
Eu tive problemas para encontrar algo chamado "gerenciador de rede". Existe um "Sistema - Administração - Ferramentas de rede", mas isso não ajuda. Eventualmente, descobri que precisava de "Sistema - Preferências - Conexões de rede".
Wim Coenen
11
Há um ícone de gerenciador de rede no painel (aquele que exibe o status da sua rede) no qual você pode clicar com o botão direito do mouse para editar as conexões.
Marcel Stimberg
Isso não funciona
user568021
0

Usando o Terminal

Você precisa editar o /etc/resolv.confarquivo para definir o endereço IP do servidor de nomes que o resolvedor deve consultar. É possível definir até 3 endereços IP da Internet do servidor de nomes. Se houver vários servidores, a biblioteca do resolvedor os consultará na ordem listada.

Em primeiro lugar

sudoedit /etc/resolv.conf

Anexe seu endereço IP do servidor DNS preferido da seguinte maneira:

nameserver <preferred-ip1>
nameserver <preferred-ip2>
nameserver <preferred-ip3>

extraído de: http://www.cyberciti.biz/faq/ubuntu-linux-configure-dns-nameserver-ip-address/

Amith KK
fonte
6
Observe que, se os servidores de nomes forem definidos via DHCP, eles /etc/resolv.confserão substituídos. Portanto, essa abordagem é apropriada apenas para máquinas com configurações manuais de rede. Tecnicamente, você poderia fazer chattr +i /etc/resolv.confpara impedir que o arquivo fosse modificado (fiz isso anos atrás), mas a melhor maneira para a maioria das máquinas seria a abordagem do jrg em sua resposta: askubuntu.com/a/90263/13398 .
Scott Severance
@ScottSeverance O que o sistema não tinha X
Amith KK
Nesse caso, provavelmente é um servidor com rede configurada manualmente; nesse caso, sua resposta é perfeitamente apropriada. Mas a maioria das máquinas Ubuntu roda X e pode lidar facilmente com a outra abordagem. Se uma máquina não estiver executando o X, mas tiver uma GUI adequada instalada, você também poderá executar as ferramentas gráficas no SSH usando ForwardX11=yes.
Scott Severance
6
Se você tentar editar manualmente o arquivo /etc/resolv.conf, a maneira correta de fazê-lo (para que não seja sobrescrita) é instalar o pacote "resolvconf" e editar / etc / resolvconf / resolv. conf.d / head ou /etc/resolvconf/resolv.conf.d/tail.
Azendale
0

Para servidores sem cabeça onde não há X e o gerenciamento é via ssh ou qualquer outra coisa, é necessária uma solução de linha de comando. Se resolv.conf não for sobrescrito, é o local correto para alterar os servidores de nomes.

Se resolv.conf não obter substituído em seguida, em 14.04LTS, pelo menos, os arquivos para editar são:

  • /etc/resolvconf/resolv.conf.d/head
  • /etc/resolvconf/resolv.conf.d/tail

Eu sugiro fortemente que você coloque as seqüências de comentários em arquivos como esses, para que apareçam no arquivo gerado (/etc/resolve.conf) e você possa encontrá-los no futuro. Inicio e finalizo cada arquivo com um comentário de uma linha do formulário:

  • # ====== begin /etc/resolveconf/resolv.d/tail ======
  • # ====== end /etc/resolveconf/resolv.d/tail ======

e coloque as diretrizes relevantes entre eles.

Gordon
fonte
0

Eu descobri que adicionando a linha dns-nameserver ipao arquivo de interfaces, definindo as configurações de ipv4 da conexão com fio para somente configurações automáticas (DHCP) e inserindo o IP do servidor DNS e o nome de domínio. A adição do IP DNS local à seção DNS estático do roteador DSL faz com que o NetworkManager inclua esse endereço local no resolv.confarquivo que ele substitui junto com outras informações recuperadas do roteador. Tudo isso junto parece persistente na resolução de nomes de DNS local - parece uma tarefa surpreendentemente difícil. Minha necessidade de DNS local é montar um cliente Linux em um compartilhamento Samba usando mount.cifsem uma rede servida por DHCP.

Danegerous
fonte
0

Se Network-Managerestá parado e /etc/resolvconf/resolv.conf.d/basefoi configurado.

Talvez resolvconf --enable-updatesseja útil.

J.Doe
fonte
0

Você pode alterar as configurações de DNS do IPv4 da maneira gráfica, conforme respondidas aqui

Mas se você está se perguntando como fazer a mesma coisa usando a linha de comando, é necessário listar os arquivos no /etc/NetworkManager/system-connectionsdiretório com o lscomando:

ls /etc/NetworkManager/system-connections

Tem que haver um arquivo com o nome da sua conexão, o meu é chamado Wired Connection 1.

Então, precisamos editar o arquivo e adicionar servidores DNS nele:

Sudo nano "/etc/NetworkManager/system-connections/Wired connection 1"

Adicione quantos servidores DNS desejar na [ipv4]seção e separe-os com ponto ;e vírgula e também coloque um ;no final do último servidor DNS como este:

[ipv4]
dns=1.1.1.1;8.8.8.8;9.9.9.9;

Você pode simplesmente excluir esta linha se não quiser atribuir nenhum DNS.

Você também deve adicionar esta linha ignore-auto-dns=truepara ignorar os servidores DNS fornecidos pelo DHCP (como o servidor DNS definido na configuração do roteador):

[ipv4]
dns=1.1.1.1;8.8.8.8;9.9.9.9;
ignore-auto-dns=true

Um pouco de contexto para esta resposta: eu estava tentando descobrir qual arquivo é editado quando adiciono um servidor DNS nas configurações de DNS da GUI, então estava executando este comando por mais de 16 horas: sudo grep -rs "1.1.1.1" /que estava verificando todos os arquivos na minha máquina virtual Ubuntu mas ele nunca terminou mesmo depois de executar tanto tempo, mas eu sabia que era possível que o arquivo existisse, /etc/NetworkManagerentão eu corri grepnovamente apontando para o diretório e encontrei o seguinte: /etc/NetworkManager/system-connections/Wired connection 1:dns=1.1.1.1;então voltei aqui para escrever uma resposta e descobrir que Lekensteyn já havia apontou isso nos comentários sobre a resposta aceita .

Shayan
fonte