「sudo echo nameserver 8.8.8.8> /etc/resolv.conf」は何をしますか?


13

誰かが何かを教えてくださいできsudo echo nameserver 8.8.8.8 > /etc/resolv.confていますか?

以前は15秒から3分間、インターネット接続がランダムに切断されていましたが、このコマンドを使用した後、インターネット接続は魅力的に機能しています。私はこの魔法のコマンドラインが何をしたのか興味があります。


3
sudoが唯一ではないリダイレクトに、ここでエコーに適用すべきである、とroot以外のユーザーは/etc/resolv.confのへのアクセス権を持つべきではない-私は、この実際に動作驚い
マックス

@Maxまったくその通りです。私はその部分を逃した-私の答えを更新しました。
gertvdijk

回答:


27

これは、Google Public DNSサービスによってマシンで使用されるネームサーバー(DNS)を置き換えます。そのコマンドを実行することが役立つ場合、おそらくネットワーク(DHCP)によって提供されるデフォルト設定にDNSの問題があります。問題の根本原因を解決することをお勧めしますが、これはあなたの質問に対する一般的な答えです。


コマンドの説明

sudo echo nameserver 8.8.8.8 > /etc/resolv.conf
  • sudo この場合、特権をルートに昇格させます。
  • echo標準出力に続く引数を出力するだけです(この場合はを出力しますnameserver 8.8.8.8
  • > 通常のUnixシェルで標準出力をファイルにリダイレクト(上書き)します。
  • /etc/resolv.conf 出力が書き込まれるファイルです。
  • ラインnameserver 8.8.8.8を入れる/etc/resolv.confと、システムは8.8.8.8ドメイン名をIPアドレスに解決するためにIPアドレスを持つネームサーバーを使用します。(実際に起こることの非常に短いバージョン)
  • 8.8.8.8は、パブリックDNSサービスがリッスンしている場所に関してGoogleが公開しているアドレスの1つです。

sudo 間違い

この説明はもっともらしいように思えますが、エラー発生するため、これは機能しません。

bash: /etc/resolv.conf: Permission denied

どうして?出力リダイレクトはシェル(ここではBash)によって処理され、に使用されるコマンドについては考慮されませんsudo。数学の乗算が加算よりも優先されることに似ています。だから、それechoは昇格された特権を持っているだけですが、あなたのシェルはそうではありません!これを解決するには、次のようにこのコマンドを実行する必要があります

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

または、パイプを使用して、teeそれをファイルに出力します。

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

Ubuntuおよびネットワークマネージャー

Ubuntuでは、Network Managerが/etc/resolv.confファイルを「管理」するため、これは一時的な変更にすぎません。ローカルの変更は上書きされます。そのため、Network Managerでこれを構成して永続化する必要があります。


Network Managerを使用した構成

Network Managerを使用してPCを適切に構成することをお勧めします。ここでネットワークでDHCPを使用していると仮定しています(最も一般的)。次に、これを実行して、使用していたコマンドと同じことを実行します。

  1. 接続の編集を開きます

    ここに画像の説明を入力してください

  2. 使用している接続プロファイルを編集します。

    ここに画像の説明を入力してください

  3. 上のIPv4設定 ]タブ:

    • 方法:自動(DHCP)アドレスのみ

      この設定により、ホストのIPアドレス構成に対して通常のDHCP要求が行われますが、DNSサーバーのような他の必須ではないオプションは無視されます。

    • DNSサーバー: 8.8.8.8
    • ヒット保存

    ここに画像の説明を入力してください

できた


重要な注意事項

ローカルまたは企業ネットワークでは、ローカルホストにローカルDNSサーバーが使用される場合があります。Googleのサーバーに名前の解決を直接依頼することにより、この機能を失います。したがって、たとえばローカルDNSサーバーが「プリンター」が何であるかを知っている場合、その名前でプリンターを使用することはできません。

そのため、代わりにローカルDNSサーバーを修正してください。ISPの壊れたDNSサーバーへの単なるフォワーダーであり、それを変更できない場合(たとえば、ISPが管理するオールインワンルーター)、この8.8.8.8ソリューションが唯一の選択肢かもしれません。


1
もう1つの重要な注意事項:googleはおそらくDNSで誰が何を検索しているかを収集しているので、それに満足しているかどうかを考えてください。使用できるパブリックDNSサーバーは他にもたくさんありますが、一般に信頼できるサーバーです。OPが不良DNSサーバーを使用していたように聞こえますが、これはローカルサーバーである場合とそうでない場合があります。(私はdnsで非常に貧弱な仕事をするコモディティADSLルーターを持っていました)。
mc0e
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.