Devo editar meu arquivo resolv.conf para corrigir um problema de DNS incorreto?

34

Eu tenho o problema que minha máquina Ubuntu usa o servidor DNS errado. Por algum motivo, a máquina consulta localhost para informações de DNS.

Eu adicionei o servidor DNS na GUI de configurações de rede, mas /etc/resolv.conf ainda contém 127.0.0.1 como o endereço do servidor DNS. Agora, pensei em editar o arquivo sozinho, mas ele explicitamente diz que eu não deveria editar o arquivo manualmente.

Agora, como a GUI de configurações de rede não gerou o arquivo com as configurações corretas, como gero um novo arquivo resolv.conf sozinho?

    
por Ahatius 16.10.2012 / 07:39

4 respostas

40

O que nenhuma das respostas postadas até agora é a aparência de que o questionador não entende que ter nameserver 127.0.0.1 em /etc/resolv.conf está correto, supondo que um servidor de nome local esteja em execução. E no Ubuntu 12.04 Desktop existe, por padrão, um servidor de nomes local em execução, ou seja, um processo dnsmasq controlado pelo NetworkManager que escuta em 127.0.0.1 . No Ubuntu 12.10, o endereço de escuta foi alterado para 127.0.1.1 .

Portanto, a solução não é fazer alterações em resolv.conf . Está correto, assumindo que o questionador deseja usar o servidor de nomes local.

Se o serviço de nomes não estiver funcionando, o servidor de nomes local não receberá endereços de encaminhamento corretos ou haverá algum outro problema de rede.

O questionador tentou usar a "GUI de configurações de rede" para "gerar o arquivo com as configurações corretas" e isso não funcionou. Não sei exatamente o que isso significa, mas aqui está o caminho certo para inserir endereços de servidores de nomes, para que eles acabem em resolv.conf na hora certa. Eu suponho que o questionador está usando NetworkManager e não ifup para configurar interfaces.

Na maioria das vezes, as interfaces são configuradas usando o protocolo DHCP. Nesse caso, nada precisa ser configurado no sistema local. O servidor DHCP sabe qual endereço de servidor deve usar e envia essa informação para o cliente DHCP, que a envia para o NetworkManager, que a envia para o resolvconf, que coloca a informação em resolv.conf . Portanto, neste caso, é o servidor DHCP que pode precisar ser configurado.

Se a interface de rede na máquina local for configurada estaticamente, os endereços de servidores de nomes corretos deverão ser inseridos no NetworkManager, por exemplo, no indicador de rede | Editar conexões ... | Sem fio | myconnection | Editar ... | Configurações IPv4 | Servidores DNS adicionais.

É possível que o servidor de nomes local não esteja funcionando corretamente. Nesse caso, o questionador deve editar /etc/NetworkManager/NetworkManager.conf

sudo gedit /etc/NetworkManager/NetworkManager.conf

e comente a linha

dns=dnsmasq

na seção "[principal]". Para comentar a linha, coloque um # no início da linha e salve o arquivo. Em seguida, reinicie o gerenciador de rede.

sudo restart network-manager

Depois disso, os endereços de servidores de nomes não locais serão inseridos em resolv.conf em vez do endereço 127. *.

Se o questionador estiver usando ifup em vez de NetworkManager para configurar interfaces de rede, então a resposta jmartin2279 está correta: você tem para adicionar os endereços do servidor de nomes ao / etc / network / interfaces na maneira descrita por jmartin2279.

Ao contrário do que algumas outras respostas recomendam, em geral você deve não adicionar nameserver , domain ou search opções aos arquivos em /etc/resolvconf/resolv.conf.d/ . Veja meus comentários sobre essas respostas.

    
por jdthood 29.10.2012 / 09:10
18

Se você estiver usando o ifup para configurar a interface estaticamente, você poderá adicioná-lo ao arquivo / etc / network / interfaces.

Abra um terminal e digite:

sudo gedit /etc/network/interface*

Você deve ver algo como:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Edite para:

auto eth0
iface eth1 inet static
address 192.168.1.10 
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8

usando suas próprias informações de rede. isso permitirá que você defina o dns. você pode usar vários servidores de DNS aqui:

dns-nameservers 8.8.8.8 8.8.4.4

Depois de fazer isso, execute

ifdown eth0
ifup eth0
    
por jmartin2279 16.10.2012 / 08:32
11

No Ubuntu 12.04, a manipulação do resolv.conf mudou.

Se você quiser adicionar seu (s) próprio (s) endereço (s) de servidores de nomes, edite o arquivo /etc/resolvconf/resolv.conf.d/head

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

e adicione seu servidor de nomes lá (por exemplo: Google open dns)

nameserver 8.8.8.8

salve o arquivo e, em seguida, execute

sudo resolvconf -u

Sem reinicialização ou qualquer outra coisa. Talvez você precise reiniciar o gerenciador de rede

sudo service network-manager restart

Concluído.

Você pode testá-lo com o comando

nslookup www.google.com

O resultado deve ser semelhante a

Server: 8.8.8.8
Address: 8.8.8.8#53
    
por Nick Thom 16.10.2012 / 08:31
1

Para adicionar mais entradas a /etc/resolv.conf , crie um arquivo /etc/resolvconf/resolv.conf.d/tail e adicione-as lá.

Mas se /etc/resolv.conf contiver 127.0.0.1 , a inclusão de entradas em /etc/resolvconf/resolv.conf.d/tail não alterará nada. Você precisa configurar seus endereços de servidor DNS estaticamente no NetworkManager, que os enviará para o dnsmasq, que escuta em 127.0.0.1 .

A configuração do DNS para uma interface estática deve ser como entradas " dns-nameservers ", " dns-search " e " dns-domain " adicionadas à sub-rotina iface apropriada em /etc/network/interfaces

Leia este para mais informações.

'Além disso:

Você pode instalar uma ferramenta GUI chamada gnome-network-admin que definirá seu DNS. Experimente:

sudo apt-get install gnome-network-admin
    
por user61928 16.10.2012 / 08:00