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


207

ある/etc/resolv.confに無用のUbuntu 12.04 LTS(精密センザンコウ)?

DNSサーバー情報がNetworkManagerに保存されるようになりました。nmcliコマンドラインツールはあなたのためにそれを一覧表示することができます。

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


2
上記のコマンドはそうnm-toolではないと思いますnmcli
ジェシーグリック

回答:


139

場合は/etc/resolv.conf含まれnameserver 127.0.0.1、その後にエントリを追加することは/etc/resolvconf/resolv.conf.d/tail本当に便利な何もしません。

NetworkManagerを使用している場合は、代わりにネットワークインジケーターを使用してネームサーバーアドレスを静的に追加する必要があります:接続の編集... | 編集... | IPv4設定| 追加のDNSサーバー

あなたがいる場合、実際に多くのエントリを追加したい/etc/resolv.conf、作成/etc/resolvconf/resolv.conf.d/tailし、そこにそれらを追加します。

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

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


1
@stgraber、私が見つけて以下に投稿した代替アプローチについてコメントしてください。/etc/resolvconf/resolv.conf.d/tailファイルの追加やNetwork Managerの使用と比較してどうですか?ありがとう。
ランドールクック

3
@stgraber Ubuntu Serverには何をお勧めしますか?私はあなたのブログとコメントからNetwork-Mangerがこれを管理するための最良の方法であると気づきましたが、私のシステムにnetwork-managerのインストールを行うと不要なもの(つまりGUIのもの)がインストールされます)。
エイブリーチャン

1
(ブログ投稿によると)/etc/resolvconf/resolv.conf.d/headにエントリを追加するのはどうでしょうか?
sup

3
@ AveryChan、@ randallcookが提案する「3番目のアプローチ」を使用dns-nameserversします/etc/network/interfaces。のeth0セクションに追加するだけです。
mrm

1
/etc/resolvconf/update.d/libcUbuntu 14.04.1サーバーの場合:(ショーの23行目と24行目# Set TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS=no # to allow additional nameserver addresses to be listed in # resolv.conf after an initial loopback address 127.* or ::1. で設定します 。/etc/default/resolvconf/etc/resolvconf/update.d/libc
immeëmosol15年

134

ここで、次のような行を追加する別のアプローチを見つけました/etc/dhcp/dhclient.conf

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

同様に、私は第三のアプローチ見つけ、ここに行を追加する必要が/etc/network/interfaces

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

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


18
third approachこれが最も簡単な方法であるため、私はこれに投票しました。
ビリームーン

1
@billy 3番目のメソッドをまったく動作させることができませんでした。ここにリストされている最初のメソッドであるdclient.confの編集のみが機能しました。
ジェフアトウッド

9
注:dhclient.confの編集は、dhclientが使用されている場合にのみ効果があります(ifupとNetworkManagerの両方で使用されます!)/ etc / network / interfacesの編集は、ifupが使用されている場合にのみ効果があります。NetworkManager接続エディターを使用したNetworkManager接続の設定は、NetworkManagerが使用されている場合にのみ効果があります。
-jdthood

1
間違っていなければ、3番目のアプローチはDHCPによって返されたネームサーバーの後に別のネームサーバーを追加します。最初に表示したい場合は、他のオプションのいずれかがより適切です。私は使用しました/etc/resolvconf/resolv.conf.d/head(そこにある誤解を招く「編集しない」コメントを克服した後):)
starfry 14

1
@ Mr.Hyde、これらはコマンドラインコマンドではなく、/ etc / network / interfacesに追加する行です。
ランドールクック

91

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>

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

sudo resolvconf -u

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


ファイルの警告に関する情報は、まさに私が必要としたものです。ファイルを編集してはいけないという印象を受けました!ありがとう!
シュナミウス

これは私にとって最高の答えです!
Siweiシェン申思维

31

以下に、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つのファイルに追加できます:)


1
ありがとうございました。これも私のお気に入りの方法になりました。トピック外の注意:「ネットワーク」アドレスと「ブロードキャスト」アドレスは「アドレス」と「ネットマスク」から自動的に計算されるため、指定する必要はありません。本当に必要なのは「アドレス」、「ネットマスク」、「ゲートウェイ」だけです。
Martijn Heemels 14

これが最もクリーンな答えです。dns- *キーワードのスペルが正しいことを確認してください。「dns-nameservers」のつづりを間違えたことが私の実際の問題でした。
ジョンマク

18

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

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

nameserver 8.8.8.8
nameserver 8.8.4.4

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


12

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


9

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

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

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

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


DHCPによってアドレスが割り当てられていない場合、これは機能しますか?
アゼンデール

dhclientの設定について詳しく知りたい場合はman dhclient.conf、dhclientのマニュアルページにアクセスしてください。(これは、Azendaleの質問への回答ではありません。)
クリスチャンスクジョート

この答えは完全に間違っています。まず、質問送信者は、アドレス127.0.0.1ではなく、外部namserverのアドレスを追加したいと考えています。外部インターフェイス用のインターフェイスコンフィギュレータは、内部ネームサーバーのアドレスを追加する場所ではありません。次に、ファイルは/ etc / dhcp3ではなく、/ etc / dhcpにあります。第三に、Ubuntu 12.04から、そのようなものはresolvconfを使用して設定されます。
jdthood

1
まず第一に、元の質問はモデレーターのマージによって劇的に変更されたので、もちろん私の答えは奇妙に見えます。dhcp3ファイルは、2011年にこれに答えたときの場所であり、たとえそれが理想的でなくても機能しました。このソリューションを複数のマシンで使用しました。明らかに、ループバックアドレスを追加するアドレスに変更します。RFC6890を読んでいなくても、ほとんどの人がループバックとは何かを知っていると思います。
ベラク

@jdthood独自の答えを追加してみませんか?個人的に、私は物事を行うbsd-ish resolvconfの方法に精通していませんでした。私は直接的な/etc/resolv.confアプローチを好みましたが、新しいRube Goldbergシステムの利点は何なのかわかりません。(/ etc / motdと同様)。
ベラク

7

resolvconf役に立たない。Linuxサーバーを使用していますが、IPアドレスは静的で、DNSサーバーは静的です。私は必要はありませんresolvconfNetworkManagerを

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

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


4
resolvconfは基本システムの一部であるため、それを削除することにより、アップグレード時に将来のトラブルを求めています。
-jdthood

3
コメントと回答の両方に同意します。これにより引き起こされた問題の数、この「問題」の修正に費やされたサポート時間、および回答を探すために時間を費やしたITスタッフの数を検討してください。シンプルが最適です-DNSを不要なものに変更するためにサーバーを使用する必要はありません。
メイ14

6

上記のほとんどは、ユーザーが初期システムを持っていることを前提としていますが、現実には、異なる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 -usudo 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して、そこにあるものを確認してください。


1
ありがとう、これはとても助かりました。上位の回答を最初に試してみましたが、だれもこのトリックを実行していないようです。/run/resolvconf/interface/ディレクトリに追加のファイルはありませんでしたが、私のNetworkManagerファイルには愛が必要でした。あなたの答えはこの問題の解決に役立ちました。
mason81

4

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


1
はい、私はサーバーに影響を与え、複雑さと不透明度を追加するこの種の変更のファンではありません。これは、リリースごとに変わらないコア動作です。
ベラク

この答えは5年前のもので、私見はリストされているすべての中で最高です。シンプルで迅速かつ効果的です。欠点はありますか?
クレイグS.アンダーソン

3

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


3

すでに長いリストに私のビットを追加し、別の方法があります(12.04でテスト済み):

/run/resolvconf/interface/NetworkManagerニーズに合わせて編集します。以下に例を示します。

search foobar.com example.com
nameserver 192.168.1.1

次に、他のほとんどの例で述べたように、aを実行しsudo resolvconf -uます。次のようになりますresolv.conf

nameserver 192.168.1.1
nameserver 127.0.0.1
search foobar.com example.com

私はまだそれが現在実装されている方法が好きではありません(Ubuntuはそれが作るすべてのfooのサービスを必要とするようです)、そしてresolv.conf確かにプレーンを好むでしょう。しかし、これまでのところ、このアプローチは私にとって最良の妥協案のようです。追加された「localhost-NS」はあまり痛くないはずです。


2

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

hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4

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


エントリを追加する代わりに、システムが破損していることを修正し、実際に必要な情報を提供します。+1。
ネラアロ

2

どうですか:

sudo dpkg-reconfigure resolvconf

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

自動(DHPC)アドレスのみ

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


2
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

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

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

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

NetworkManager

またはの上部付近/etc/resolvconf/interface-order

はい-minimalはそれに依存します]。そのため、resolvconfなしでシステムを一貫した更新された状態に保つことは困難です。

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

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


「してくださいあなたはこれを考え出した方法についてより詳細な情報を提供
Pierre.Vriens


1

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

  1. ネットワークに移動

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

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

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

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

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


0

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.マシンを再起動します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.