web-dev-qa-db-ja.com

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

誰かがSudo echo nameserver 8.8.8.8 > /etc/resolv.confが何をするのか教えてもらえますか?

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

11
Jeanno

マシンで使用されているネームサーバー(DNS)を Googleパブリック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という行があると、システムはドメイン名をIPアドレスに解決するためにIPアドレス8.8.8.8を持つネームサーバーを使用します。 (実際に起こることの非常に短いバージョン)
  • 8.8.8.8はアドレスの1つです Googleが公開 パブリックDNSサービスがリッスンしている場所について。

Sudo間違い

この説明はもっともらしく聞こえますが、errorが表示されるため、これは機能しません。

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およびNetwork Manager

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


Network Managerを使用した構成

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

  1. オープン接続の編集

    enter image description here

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

    enter image description here

  3. IPv4 Settingsタブで:

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

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

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

    enter image description here

できた.


重要な注意事項

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

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

25
gertvdijk