O que o “sudo echo nameserver 8.8.8.8> /etc/resolv.conf” faz?

13

Alguém pode me dizer o que sudo echo nameserver 8.8.8.8 > /etc/resolv.conffaz?

Eu costumava ter queda aleatória da conexão à Internet por 15 segundos a 3 minutos, mas depois de usar esse comando, a conexão com a Internet estava funcionando como um encanto. Só estou curioso sobre o que essa linha de comando mágica fez.

Jeanno
fonte
3
Estou surpreso isso realmente funciona - sudo só se deve aplicar a ecoar aqui, não para o redirecionamento, e um usuário não-raiz não devem ter acesso a /etc/resolv.conf
Max
@ Max Você está absolutamente certo. Eu perdi essa parte - atualizei minha resposta.
precisa saber é o seguinte

Respostas:

27

Ele substitui o servidor de nomes (DNS) usado em sua máquina pelo serviço DNS público do Google . Se a execução desse comando o ajudar, você provavelmente está com problemas de DNS nas configurações padrão fornecidas pela sua rede (DHCP). Embora seja melhor resolver a causa raiz do problema, esta é uma resposta geral à sua pergunta.


Explicação do comando

sudo echo nameserver 8.8.8.8 > /etc/resolv.conf
  • sudo eleva privilégios para ser root neste caso.
  • echoapenas gera os argumentos a seguir para a saída padrão (neste caso, gera nameserver 8.8.8.8)
  • > redireciona a saída padrão para um arquivo (sobrescreve-o) em um shell Unix comum.
  • /etc/resolv.conf é o arquivo no qual a saída é gravada.
  • Ter uma linha nameserver 8.8.8.8em /etc/resolv.confmarcas o sistema usando o servidor de nomes que tem um endereço IP 8.8.8.8para a resolução de nomes de domínio para endereços IP. (versão muito curta do que realmente acontece)
  • 8.8.8.8é um dos endereços publicados pelo Google sobre onde seus serviços DNS públicos estão ouvindo.

sudo erro

Embora essa explicação pareça plausível, isso não funcionará, devido a um erro que você receberá:

bash: /etc/resolv.conf: Permission denied

Por quê? O redirecionamento de saída é tratado pelo seu shell (aqui: Bash) e não é levado em consideração para o comando usado sudo. Semelhante à multiplicação em matemática tem precedência sobre a adição. Então, é só echoque tem privilégios elevados, mas o seu shell não tem! Para resolver isso, deve-se executar este comando como

sudo sh -c "echo nameserver 8.8.8.8 > /etc/resolv.conf"

ou, usando um pipe e teeenviá-lo para um arquivo:

echo nameserver 8.8.8.8 | sudo tee /etc/resolv.conf  #prints to screen as well

Gerenciador de Rede e Ubuntu

No Ubuntu, isso é apenas uma alteração temporária, pois o Network Manager "gerencia" o /etc/resolv.confarquivo. As modificações locais serão substituídas. É por isso que você deve configurar isso no Network Manager para persistir.


Configuração usando o Network Manager

Eu recomendaria configurar seu PC corretamente usando o Network Manager. Suponho que você esteja usando DHCP na sua rede aqui (mais comum). Em seguida, faça isso para executar o mesmo equivalente ao comando que você estava usando:

  1. Abra Editar conexões :

    insira a descrição da imagem aqui

  2. Edite o perfil de conexão que você está usando.

    insira a descrição da imagem aqui

  3. Na guia Configurações IPv4 :

    • Método: Somente endereços automáticos (DHCP)

      Essa configuração faz uma solicitação DHCP regular para a configuração do endereço IP do seu host, mas ignora outras opções não obrigatórias, como sugerido pelos servidores DNS.

    • Servidores DNS: 8.8.8.8
    • Clique em Salvar

    insira a descrição da imagem aqui

Feito.


Anotações importantes

Em uma rede local ou corporativa, o servidor DNS local pode ser usado para hosts locais. Você perderá essa funcionalidade solicitando diretamente aos servidores do Google que resolvam nomes para você. Portanto, se, por exemplo, o servidor DNS local souber o que é "impressora", você perderá o uso da impressora com esse nome.

Portanto, corrija o servidor DNS local. Se for apenas um encaminhador simples para um servidor DNS quebrado do seu ISP e você não puder mudar isso (all-in-one-router-ISP gerenciado por ISP, por exemplo), essa 8.8.8.8solução poderá ser sua única opção.

gertvdijk
fonte
1
Outra observação importante: presumivelmente, o Google está coletando informações sobre quem está pesquisando o que no DNS, então pense se você está confortável com isso. Você pode usar muitos outros servidores DNS públicos, e eles geralmente são confiáveis. Parece que o OP estava usando um servidor DNS ruim, que pode ou não ter sido local. (Eu tive roteadores ADSL básicos que fazem um trabalho notavelmente ruim com o DNS).
Mc0e