web-dev-qa-db-ja.com

resolv.conf経由でDNSサーバーを追加するにはどうすればよいですか?

/etc/resolv.confbuntu 12.04 LTS (正確なセンザンコウ)で役に立ちませんか?

DNSサーバー情報が NetworkManager に保存されていることがわかりました。 nmcliコマンドラインツールを使用すると、それを一覧表示できます。

もう1つ DNS サーバーを追加する場合、resolvconfパッケージヘルプを使用して/etc/resolv.confに追加しますか?

207
PnotNP

/etc/resolv.confnameserver 127.0.0.1が含まれている場合、/etc/resolvconf/resolv.conf.d/tailにエントリを追加しても、実際には何の効果もありません。

NetworkManagerを使用している場合は、代わりにnetwork indicatorEdit Connections ...を介して静的にネームサーバーアドレスを追加する必要があります。編集... | IPv4設定|追加のDNSサーバー

本当に本当にエントリを/etc/resolv.confに追加したい場合は、/etc/resolvconf/resolv.conf.d/tailを作成してそこに追加します。

すべてのUbuntuリリースと同様、Ubuntuリリースノートを読むことをお勧めします。

デスクトップおよび共通インフラストラクチャのセクションには、へのリンクが含まれています

139
stgraber

別のアプローチを見つけました here 以下のような行を/etc/dhcp/dhclient.confに追加する必要があります:

prepend domain-name-servers x.x.x.x, y.y.y.y;

同様に、/etc/network/interfacesに行を追加する3番目のアプローチ here を見つけました。

auto eth0
iface eth0 inet static
    . . .
    dns-nameservers 8.8.8.8 8.8.4.4

更新:これは、3番目のアプローチの 公式ドキュメント です。

134
Randall Cook

Resolvconfパッケージについて話しているようです。

resolvconf パッケージをインストールします。

走る

cd /etc/resolvconf/resolv.conf.d
Sudo cp -p head head.orig  #backup copy, always do this
Sudo nano head

ファイルの先頭は恐ろしい警告です。ファイル/etc/resolv.confは、このファイルの内容から自動生成されます。警告があるため、/ etc/resolv.confの生成時に/etc/resolv.confに入れられます。ファイルの最後に、追加します

nameserver <ip_of_nameserver>

押す Ctrlx ファイルを保存する場合はyesと答えます。最後に、/ etc/resolv.confを再生成して、変更がすぐに適用されるようにします。

Sudo resolvconf -u

次に、/ etc/resolv.confの内容をチェックして、追加した行がそこにあることを確認します。さらに、次回マシンを起動するとき、またはネットワークサービスを再起動するときのどちらか早い方でも、そこに残ります。

90
Azendale

以下に、Ubuntu Serverエディションを実行してNetworkManagerではなくifupを使用してから見つけた最良の方法を示します。

実際、私にとっては、/ etc/network/interfacesファイルにすべてを入れることで、これが簡単になりました。 resolv.confに書き込んだ構成と同じ構成を、次の例のようにネットワークアダプター構成と同じファイルに含めることができます。

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        dns-nameservers 75.75.75.75 75.75.76.76
        dns-search local

これが私にとって役立つように助けてくれることを願っています。今では、静的IPアドレスを作成し、ネームサーバーとDNSドメインをすべて1つのファイルに追加できます。

31
Joseph Mituzas

私はUbuntu Server 12.04を実行しています。次の変更を加えてサーバーを再起動しました(通常、これはネットワークインターフェイス、つまりifdown eth0またはifup eth0のみを停止することで実行できます)。

ファイル/etc/resolvconf/resolv.conf.d/baseに次のエントリを追加しました。

nameserver 8.8.8.8
nameserver 8.8.4.4

上記がお役に立てば幸いです!

18
Don Chai

フランクの答えに記載されているようにNetworkManagerを使用できますが、/etc/resolv.confを手動で編集する場合は、それを削除し(実際にはシンボリックリンクです)、必要なコンテンツを含む新しいプレーンファイルを作成します。 resolvconfユーティリティーは、ファイル/run/resolvconf/resolv.confにのみ書き込みます。

12
Jase

注:この回答は、質問のマージ前のバージョンに対するもので、目的のネームサーバーの事前保留にのみ焦点を当てています。

これは、12.04より前に機能します。

/etc/dhcp3/dhclient.confを編集して追加:
prepend domain-name-servers 127.0.0.1;

(実際、この行はすでに存在します。必要なのは、コメントを外すことだけです。)

9
belacqua

resolvconfは無意味です。 Linuxサーバーを使用していますが、私の IPアドレス は静的であり、私の DNS サーバーは静的です。 resolvconfNetworkManager は必要ありません。

サーバーで作業するときは、それをシンプルに保つことが私のポリシーです。複雑さが少ないほど、物事が壊れたときの管理/修正が容易になります。

そこでaptitude purge resolvconfを実行し、/etc/resolv.confsymlink でないことを手動で確認し、静的ファイルを作成しました。プログラムがファイルを変更しようとした場合に備えて、予防措置としてchattr +i(不変)を/etc/resolv.confに変更しました。

7
Mark

上記のほとんどは、ユーザーが手付かずのシステムを持っていることを前提としていますが、現実には、異なるdhcpクライアントをインストールしたり、Ubuntuの特定の以前のバージョンでネットワークマネージャーを無効にしたりすることがよくあります。私はしばらくの間dnsmasqを使用していましたが、それを削除しました。現在、私のシステムには次の/etc/resolv.confの内容がありました(これは私のシステムの/run/resolvconf/resolv.confへのシンボリックリンクです):

cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1

Sudo resolvconf -uまたはSudo dpkg-reconfigure resolvconfを実行する頻度に関係なく、ネームサーバーをNetworkManagerで設定したものに更新しませんでした。 resolvconfがNetworkManagerから使用した情報は存在していました。

cat /run/resolvconf/interface/NetworkManager  
nameserver 8.8.4.4
nameserver 8.8.8.8

ただし、このディレクトリに複数のファイルがある場合、このファイルはまったく使用されない可能性があります。原因はdnsmasqの削除で削除されなかったファイルでした。

cat /run/resolvconf/interface/lo.dnsmasq                        
nameserver 127.0.0.1

このファイルを削除するだけで(その後Sudo resolvconf -uを実行して)、DNSの問題を解決できました。

cat /etc/resolv.conf                        
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.4.4
nameserver 8.8.8.8 

これがデバッグ(これらすべての異なるネットワークツール間の複雑な相互作用)に役立つことを願っています。 resolvconfを使用する場合は、必ずls /run/resolvconf/interfacesを実行して内容を確認してください。

6
Anne van Rossum

/etc/resolv.confのリンクを削除し、ネームサーバーのアドレスを含む定期的なファイルを作成しました。それは機能しますが、Ubuntu開発者が作成したその奇妙な構造を使用する理由は見当たりません。

4
Ivan

接続「AUTO ETH0」またはNMでの接続に使用する名前を編集できます。これを行うには、NMを右クリックし、[接続の編集...]を選択します。 [IPv4]タブでは、[方法]として[自動(DHCP)アドレスのみ]を選択できます。NMを使用すると、アドレスがDHCP経由で配信される場合でもネームサーバーアドレスを手動で設定できます。

3
Frank Barcenas

ソースの順序を変更することでこれを修正しました。 /etc/nsswitch.confdnsの前にmdnsソースを移動しました:

hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4

設定を維持しながら、この方法でローカルキャッシュサーバーを使用できます。

2
Dan B
vi /etc/network/interfaces


This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The primary network interface
allow-hotplug eth0


# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#auto eth0         <<----- change this comment with the #
iface eth0 inet dhcp
2
Roy Rogers

どうですか:

Sudo dpkg-reconfigure resolvconf

その前に、Network Managerを使用してDNSアドレスを変更し、Methodを

自動(DHPC)アドレスのみ

次に、上記のコマンドを実行して再起動します。それで解決できました。

2
Adige72

これは非常に人気のある質問であり、標準的な可能な回答のコレクションがありますが、IMOはすべてかなりハックです。私は、NetworkManagerで設定したDNS設定、特に「自動(DHCP)アドレスのみ」の静的DNSサーバーの設定をUbuntuに反映させるのに常に問題を抱えていました。そして、今日、実際に間違っていることがわかりました。

問題は、resolvconfとNetworkManagerの相互作用にあります。 resolvconfには、/etc/resolvconf/interface-orderというこのファイルがあります。少なくとも私のシステムでは、NetworkManager ではないこのファイルはすべて(最後に*ワイルドカードで覆われていることを除いて)。したがって、何が起こるかというと、resolvconfに対するdhclientの最新のレポートは、NetworkManagerが言わなければならないものよりも優先されます。

したがって、少なくとも私の場合、実際の答えは

NetworkManager

/etc/resolvconf/interface-orderの上部またはその近く。

(はい、多くの人が単に「resolvconfをアンインストール」と言うことを知っていますが、それはそれ自体は悪い考えのように思えます。しかし、それ以上に、少なくとも賢明でゼニアルはresolvconfをシステムの重要な部分と見なします[すなわちubuntu -minimalはそれに依存します]。したがって、resolvconfなしでシステムを一貫した更新された状態に保つことは困難です。

リクエストに応じて、これをどのように理解したかについて詳細を提供できます。 (EDIT:リクエストされたときにそうしなかったようです。申し訳ありません。この時点で、私が次に言うこと以上の詳細は覚えていません:)一言で言えば、私は置き換えました引数、入力、出力、およびstderrをファイルにダンプするシェルラッパーを含むresolvconf実行可能ファイル。 set -xをresolvconfの更新スクリプトに追加しました。

EDIT:Ican最初の部分の意味は、実際のwhichコマンドまたはtypeコマンドを使用して見つけることができるresolvconf実行可能ファイルその後、最終的に移動したresolvconfを実行するだけでなく、引数をファイルにエコーし、シェルリダイレクトを使用してstdin、stdout、stderrを送信するシェルスクリプトを作成します「resolvconfの更新スクリプト」がどこにあるか思い出せず、現在簡単に確認することはできません。多くのLinuxオタクは私が何を意味するか理解できると思います。おそらく、いくつかの良いサマリタンはコメントでさらに詳細を提供します。 )

2
Steven Collins

別の方法は、次の場所でdocker固有のDNSサーバーを定義することです。

/etc/docker/daemon.json

そのようなファイルがない場合は、作成するだけです。

{
    "dns": ["10.0.0.2", "8.8.8.8"]
}

ソース: https://robinwinslow.uk/2016/06/23/fix-docker-networking-dns/

また、以下を参照してください: https://docs.docker.com/engine/reference/commandline/dockerd/#/daemon-configuration-file

1
AndreyKo

DNSを変更するには、次の手順に従ってください: https://developers.google.com/speed/public-dns/docs/using

  1. ネットワークに移動

  2. DNSを構成する接続を選択します。

  3. ワイヤレス接続の設定を変更するには、[ワイヤレス]タブを選択し、適切なワイヤレスネットワークを選択します。

  4. 矢印(右)をクリックし、表示されるウィンドウで[IPv4設定]または[IPv6設定]タブを選択します。

  5. 選択した方法が自動(DHCP)の場合、ドロップダウンを開き、代わりに[自動(DHCP)アドレスのみ]を選択します。メソッドが他の値に設定されている場合は、変更しないでください。

  6. [DNSサーバー]フィールドに、DNS IPアドレスをコンマで区切って入力します

1
Ferroao

0.一時DNSを追加します。 /etc/resolv.confを編集します。

nameserver 4.4.4.4
nameserver 8.8.8.8

1. resolvconfをインストールまたは更新します。

root@ubuntu:~# apt-get install resolvconf -y

2.ネームサーバーを/etc/resolvconf/resolv.conf.d/tailに追加します

nameserver 4.4.4.4
nameserver 8.8.8.8

3.マシンを再起動します。

0
xiaoliuzi