web-dev-qa-db-ja.com

Ubuntu 12.04で/etc/resolv.confを編集する方法

DHCP経由で構成された2つのネットワークインターフェイスがあります。その結果、/etc/resolv.confにはDHCPサーバーからの情報が入力されます。

このファイルを編集するにはどうすればよいですか?

prepend domain-name-servers 127.0.0.1/etc/dhcp/dhclient.confを追加すると、nameserver 127.0.0.1の最初の(そして唯一の)行として/etc/resolv.confを取得できることを知っています。

127.0.0.1と、DHCP経由で提供される2つのネームサーバーアドレスのうち1つだけが必要な場合はどうすればよいですか?

5
JustTrying

Ubuntu 12.04以降では、/etc/resolv.confはresolvconfユーティリティによって動的に生成されます。 (実際、resolvconfは/run/resolvconf/resolv.confを生成し、/etc/resolv.confはそれへのシンボリックリンクです。これがデフォルトの構成です。/etc/resolv.confの静的ファイルで実行することもできますが、これは非標準です。)ネームサーバー情報(ネームサーバーアドレスと検索ドメイン名)は、インターフェース構成(ifupNetworkManagerdhclientなど)によってresolvconfに登録されます。登録されている内容に基づいて、resolvconfは最新のresolv.confファイルを生成します。

したがって、resolv.confファイルを直接編集することはできません。 resolv.confで終わるものを制御したい場合、resolvconfユーティリティを設定する必要があります。詳細については、resolvconfのドキュメントを参照してください。

「127.0.0.1と2つのネームサーバーアドレスのうち1つだけがDHCP経由で提供されるようにしたい」という特定の質問に対する回答。は:

  • まず、notprepend domain-name-servers 127.0.0.1/etc/dhcp/dhclient.confに追加します。正しいプロトコルは、ローカルネームサーバーがローカルネームサービスを提供する準備ができたときに、ローカルリスンアドレスをresolvconfに登録することです。彼らがこれをするとき、DHCPクライアントもそうする必要はありません。 Dnsmasqはデフォルトで正しいことを行います。 BIND 9の場合、RESOLVCONF=yes/etc/default/bind9を設定して、resolvconfでアドレス127.0.0.1を登録する必要があります。
  • 次に、resolvconfは、デフォルトで、127.0.0.1などのループバックアドレスの後にネームサーバーのリストを切り捨てます。この動作を無効にするには、/etc/default/resolvconf行を含むTRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS=noファイルを作成します。
  • 3番目に、resolvconfはデフォルトでネームサーバーのリストを3つの項目の後に切り捨てます。 glibcリゾルバは最初の3つ以降のアドレスを無視するため、アドレスを追加しても意味がありません。 2つのアドレスの後にresolvconfがリストを切り捨てるには、スクリプト/etc/resolvconf/update.d/libcを編集してこの行を置き換える必要があります

    [ "$N" = 3 ] && return 0
    

次のいずれかによって。

    [ "$N" = 2 ] && return 0
8
jdthood

それは私の祖父のために働いた、それは私の父のために働いた、そしてそれは私のために働いた。

rm /etc/resolv.conf
vi /etc/resolv.conf

search yourdomain.com
nameserver 8.8.8.8
nameserver 8.8.4.4

編集:

rmは、標準シンボリックリンクを削除します。

viは、代わりに実際のファイルを作成します。

3
SamTzu

12.04をインストールしたとき、このテキストは非常に役立ちました: http://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/

1
user121006

記録については、公式のresolvconfドキュメントはこちら http://anonscm.debian.org/gitweb/?p=resolvconf/resolvconf.git;a=blob;f=README;hb=HEAD

「編集」は、APIのようにresolvconfコマンドラインを使用するのと同じくらい簡単です。

例えば.

echo nameserver 8.8.8.8 | resolvconf -a eth0.goog

ここに。はセパレータであり、インターフェースの後の部分はそのインターフェースの構成の名前です。

このネームサーバーを削除する場合は、インターフェイスと構成に名前を付け、-dを使用して削除します

resolvconf -d eth0.goog

サーバー/クラウドのシナリオでは、これで十分です。モバイルの場合は、ドキュメントを参照してください。