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つだけが必要な場合はどうすればよいですか?
Ubuntu 12.04以降では、/etc/resolv.conf
はresolvconfユーティリティによって動的に生成されます。 (実際、resolvconfは/run/resolvconf/resolv.conf
を生成し、/etc/resolv.conf
はそれへのシンボリックリンクです。これがデフォルトの構成です。/etc/resolv.conf
の静的ファイルで実行することもできますが、これは非標準です。)ネームサーバー情報(ネームサーバーアドレスと検索ドメイン名)は、インターフェース構成(ifup
、NetworkManager
、dhclient
など)によってresolvconfに登録されます。登録されている内容に基づいて、resolvconfは最新のresolv.conf
ファイルを生成します。
したがって、resolv.conf
ファイルを直接編集することはできません。 resolv.conf
で終わるものを制御したい場合、resolvconfユーティリティを設定する必要があります。詳細については、resolvconfのドキュメントを参照してください。
「127.0.0.1と2つのネームサーバーアドレスのうち1つだけがDHCP経由で提供されるようにしたい」という特定の質問に対する回答。は:
prepend 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
を登録する必要があります。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
それは私の祖父のために働いた、それは私の父のために働いた、そしてそれは私のために働いた。
rm /etc/resolv.conf
vi /etc/resolv.conf
search yourdomain.com
nameserver 8.8.8.8
nameserver 8.8.4.4
編集:
rm
は、標準シンボリックリンクを削除します。
vi
は、代わりに実際のファイルを作成します。
12.04をインストールしたとき、このテキストは非常に役立ちました: http://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/
記録については、公式の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
サーバー/クラウドのシナリオでは、これで十分です。モバイルの場合は、ドキュメントを参照してください。