/etc/resolv.conf
は buntu 12.04 LTS (正確なセンザンコウ)で役に立ちませんか?
DNSサーバー情報が NetworkManager に保存されていることがわかりました。 nmcli
コマンドラインツールを使用すると、それを一覧表示できます。
もう1つ DNS サーバーを追加する場合、resolvconf
パッケージヘルプを使用して/etc/resolv.conf
に追加しますか?
/etc/resolv.conf
にnameserver 127.0.0.1
が含まれている場合、/etc/resolvconf/resolv.conf.d/tail
にエントリを追加しても、実際には何の効果もありません。
NetworkManagerを使用している場合は、代わりにnetwork indicator:Edit Connections ...を介して静的にネームサーバーアドレスを追加する必要があります。編集... | IPv4設定|追加のDNSサーバー。
本当に本当にエントリを/etc/resolv.conf
に追加したい場合は、/etc/resolvconf/resolv.conf.d/tail
を作成してそこに追加します。
すべてのUbuntuリリースと同様、Ubuntuリリースノートを読むことをお勧めします。
デスクトップおよび共通インフラストラクチャのセクションには、へのリンクが含まれています
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の内容をチェックして、追加した行がそこにあることを確認します。さらに、次回マシンを起動するとき、またはネットワークサービスを再起動するときのどちらか早い方でも、そこに残ります。
以下に、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つのファイルに追加できます。
私はUbuntu Server 12.04を実行しています。次の変更を加えてサーバーを再起動しました(通常、これはネットワークインターフェイス、つまりifdown eth0
またはifup eth0
のみを停止することで実行できます)。
ファイル/etc/resolvconf/resolv.conf.d/base
に次のエントリを追加しました。
nameserver 8.8.8.8
nameserver 8.8.4.4
上記がお役に立てば幸いです!
フランクの答えに記載されているようにNetworkManagerを使用できますが、/etc/resolv.conf
を手動で編集する場合は、それを削除し(実際にはシンボリックリンクです)、必要なコンテンツを含む新しいプレーンファイルを作成します。 resolvconf
ユーティリティーは、ファイル/run/resolvconf/resolv.conf
にのみ書き込みます。
注:この回答は、質問のマージ前のバージョンに対するもので、目的のネームサーバーの事前保留にのみ焦点を当てています。
これは、12.04より前に機能します。
/etc/dhcp3/dhclient.conf
を編集して追加:prepend domain-name-servers 127.0.0.1;
(実際、この行はすでに存在します。必要なのは、コメントを外すことだけです。)
resolvconf
は無意味です。 Linuxサーバーを使用していますが、私の IPアドレス は静的であり、私の DNS サーバーは静的です。 resolvconf
や NetworkManager は必要ありません。
サーバーで作業するときは、それをシンプルに保つことが私のポリシーです。複雑さが少ないほど、物事が壊れたときの管理/修正が容易になります。
そこでaptitude purge resolvconf
を実行し、/etc/resolv.conf
が symlink でないことを手動で確認し、静的ファイルを作成しました。プログラムがファイルを変更しようとした場合に備えて、予防措置としてchattr +i
(不変)を/etc/resolv.conf
に変更しました。
上記のほとんどは、ユーザーが手付かずのシステムを持っていることを前提としていますが、現実には、異なる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
を実行して内容を確認してください。
/etc/resolv.conf
のリンクを削除し、ネームサーバーのアドレスを含む定期的なファイルを作成しました。それは機能しますが、Ubuntu開発者が作成したその奇妙な構造を使用する理由は見当たりません。
接続「AUTO ETH0」またはNMでの接続に使用する名前を編集できます。これを行うには、NMを右クリックし、[接続の編集...]を選択します。 [IPv4]タブでは、[方法]として[自動(DHCP)アドレスのみ]を選択できます。NMを使用すると、アドレスがDHCP経由で配信される場合でもネームサーバーアドレスを手動で設定できます。
ソースの順序を変更することでこれを修正しました。 /etc/nsswitch.conf
のdns
の前にmdns
ソースを移動しました:
hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4
設定を維持しながら、この方法でローカルキャッシュサーバーを使用できます。
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
どうですか:
Sudo dpkg-reconfigure resolvconf
その前に、Network Managerを使用してDNSアドレスを変更し、Methodを
自動(DHPC)アドレスのみ
次に、上記のコマンドを実行して再起動します。それで解決できました。
これは非常に人気のある質問であり、標準的な可能な回答のコレクションがありますが、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オタクは私が何を意味するか理解できると思います。おそらく、いくつかの良いサマリタンはコメントでさらに詳細を提供します。 )
別の方法は、次の場所で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
DNSを変更するには、次の手順に従ってください: https://developers.google.com/speed/public-dns/docs/using
ネットワークに移動
DNSを構成する接続を選択します。
ワイヤレス接続の設定を変更するには、[ワイヤレス]タブを選択し、適切なワイヤレスネットワークを選択します。
矢印(右)をクリックし、表示されるウィンドウで[IPv4設定]または[IPv6設定]タブを選択します。
選択した方法が自動(DHCP)の場合、ドロップダウンを開き、代わりに[自動(DHCP)アドレスのみ]を選択します。メソッドが他の値に設定されている場合は、変更しないでください。
[DNSサーバー]フィールドに、DNS IPアドレスをコンマで区切って入力します
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.マシンを再起動します。