名前
resolv.conf -
レゾルバ設定ファイル
説明
resolver
は、インターネットのドメインネームシステム
(DNS)
へのアクセスを提供する
C
ライブラリのルーチン群である。
レゾルバ設定ファイルには、レゾルバルーチンがプロセスによって最初に
起動されたときに読み込まれる情報が格納されている。
このファイルは人間に可読なように設計されている。
キーワードと値のリストが含まれ、いろいろなタイプのレゾルバ情報を提供する。
設定ファイルは DNS
情報の信頼できる情報源とみなされる
(例えば、このファイルからの
DNSSEC AD
ビット情報は変更されずにそのまま返される)。
このファイルが存在しない場合、問い合わせはローカルマシン上の
ネームサーバに対してのみ行われる。ドメイン名はホスト名から決定され、
ドメインの検索パスはドメイン名から作成される。
この状態を変更するための設定オプションには、以下のようなものがある。
- nameserver
ネームサーバの IP
アドレス
- レゾルバが問い合わせをするネームサーバのインターネットアドレス。
アドレスには IPv4
アドレスか IPv6
アドレスを指定する。
IPv4
アドレスはドット表記で、
IPv6 アドレスは RFC 2373
で定められたコロン表記
(おそらくドット表記も可)
で指定する。
このキーワード 1
つごとに 1 台づつ、
MAXNS 台 (現状では 3
台、<resolv.h> を参照)
までのネームサーバをリストできる。
複数のサーバが指定された場合、レゾルバライブラリは
リストされた順に問い合わせを行う。
nameserver
エントリーがない場合、
デフォルトではローカルマシン上のネームサーバが使われる。
(ここで使われるアルゴリズムは以下のようなものである。
はじめにネームサーバに問い合わせを試みる。
この問い合わせがタイムアウトになった場合、
次のネームサーバに問い合わせを試みる。
これをネームサーバがなくなるまで続ける。
それでも応答がない場合は、リトライ最大回数に達するまで
全てのネームサーバに問い合わせを繰り返す。)
- domain
ローカルドメイン名
- このドメインにある名前の問い合わせのほとんどに、
このローカルドメインに対する短い名前を使用することができる。
'.'
が設定された場合、
ルートドメインが指定されたとみなされる。
domain
エントリーがない場合、ドメイン名は
gethostname(2)
で返されるローカルホスト名から決定され、
最初の '.'
以降の全ての部分がドメイン名とされる。
このホスト名にもドメイン部を含んでいない場合、ルートドメインが仮定される。
- search
ホスト名ルックアップのための検索リスト
- 検索リストは通常ローカルドメイン名から決定される。
デフォルトでは、検索リストはローカルドメイン名のみである。
これを変更するには、search
キーワードの後に
希望するドメイン検索パスをスペースまたはタブで区切ってリストすればよい。
ドットの数が ndots
(デフォルトでは 1)
より少ないレゾルバの問い合わせは、
一致するものが見つかるまで検索パスの各要素を順に使って試す。
複数のサブドメインを持つ環境では、
第三者による攻撃
(man-in-the-middle attack) と ルート DNS
サーバへの不必要なトラフィックを避けるために、
以下の options ndots:n
を読んでほしい。
このプロセスは遅く、リストされたドメインがローカルのものでない場合、
多大なネットワークトラフィックを発生させることに注意すること。
さらに、これらのドメインのいずれかひとつにでも適切なサーバがない場合、
問い合わせがタイムアウトになる点にも注意すること。
- 現状では、検索リストは
6 ドメイン・計 256
文字に制限されている。
- sortlist
- このオプションを使うと、
gethostbyname(3)
で返されるアドレスをソートさせることができる。
sortlist は IP
アドレスとネットマスクのペアで指定される。
ネットマスクは省略可能であり、
デフォルトではネットに対するデフォルトのネットマスクである。
IP
アドレスとオプションのネットマスクのペアはスラッシュで区切る。
最大 10
組のペアを指定できる。
以下に例を示す。
sortlist 130.155.160.0/255.255.240.0 130.155.0.0
- options
- options
により、レゾルバの内部変数を変更することができる。
書式は以下の通りである。
- options option ...
ここで option
は次のうちのいずれかである。
- debug
- RES_DEBUG を _res.options
にセットする (glibc
がデバッグを有効にしてコンパイルされている場合にのみ有効である;
resolver(3) を参照)。
- ndots:n
- 「最初の完全な名前での問い合わせが実行される前に、
res_query(3) (resolver(3) を参照)
に与えられる名前に含まれているべきドットの数の閾値」を設定する。
n のデフォルトは 1
である。
これは、名前にドットがある場合、search
list
の要素が付加される前に、
その名前が完全な名前として最初に試されるということを意味している。
このオプションの値の上限は
15
であり、黙ってこの値まで切り詰められる。
- timeout:n
- 「レゾルバが他のネームサーバで問い合わせをリトライする前に、
リモートネームサーバからの応答を待つ時間」を設定する。
単位は秒で、デフォルトは
RES_TIMEOUT である
(現状では 5
秒、<resolv.h> を参照)。
このオプションの値の上限は
30
であり、黙ってこの値まで切り詰められる。
- attempts:n
- 「レゾルバが諦めて呼び出し元のアプリケーションにエラーを返すまでに、
ネームサーバに問い合わせを行う回数」を設定する。
デフォルトは RES_DFLRETRY
回である (現状では 2
回、<resolv.h> を参照)。
このオプションの値の上限は
5
であり、黙ってこの値まで切り詰められる。
- rotate
- _res.options に RES_ROTATE
を設定する。リストされているネームサーバから選ぶときに、ラウンドロビン
(round-robin)
選択を行わせる。リストされている全てのサーバで問い合わせの負荷を分散する効果があり、最初にリストされたサーバに全てのクライアントが毎回最初に問い合わせを行うわけではなくなる。
- no-check-names
- _res.options に RES_NOCHECKNAME
を設定する。
入ってくるホスト名とメールアドレスに、
アンダースコア (_)・ASCII
以外の文字・制御文字といった
不正な文字が含まれていないかを調べる
最近の BIND
のチェックを無効にする。
- inet6
- _res.options に RES_USE_INET6
を設定する。このオプションが設定されると、
gethostbyname(3) 関数の内部で A
レコードの問い合わせを行う前に
AAAA
レコードの問い合わせを行うようになる。
また、AAAA
レコードは見つからないが
A
レコードセットが存在する場合に、
IPv4 の応答を
IPv6「トンネル形式」にマップするようになる。
- ip6-bytestring (glibc
2.3.4 以降)
- _res.options に RES_USE_BSTRING
を設定する。このオプションが設定されると、IPv6
アドレスの逆引きで
RFC 2673 で規定された bit-label
形式が使用されるようになる。
このオプションが設定されない場合、nibble
形式が使用される。
- ip6-dotint/no-ip6-dotint
(glibc 2.3.4 以降)
- _res.options への RES_NOIP6DOTINT
のセット/クリアを行う。
このオプションがクリアされると
(ip6-dotint)、 IPv6
アドレスの逆引きが
(非推奨の) ip6.int
ゾーンで行われるようになり、
このオプションがセットされると
(no-ip6-dotint)、 IPv6
アドレスの逆引きがデフォルトの
ip6.arpa
ゾーンで行われるようになる。
このオプションはデフォルトでセットされる。
- edns0 (glibc 2.6
以降)
- _res.options に RES_USE_EDNSO
をセットする。これにより、RFC 2671
で規定されている DNS
拡張のサポートが有効になる。
- single-request
(glibc 2.10 以降)
- _res.options に RES_SNGLKUP
をセットする。 glibc
バージョン 2.9
以降では、 glibc
はデフォルトでは IPv4
と IPv6
の検索を並行して実行する。
アプライアンス DNS
サーバの中には、このような問い合わせを
適切に処理できず、検索要求がタイムアウトになってしまう。
このオプションをセットすると、このデフォルトの動作が無効になり、
glibc は IPv6 と IPv4
の検索を順番に実行するようになる
(名前解決処理が若干遅くなるというデメリットがある)。
- single-request-reopen
(glibc 2.9 以降)
- リゾルバは同じソケットを使って
A レコードと AAAA
レコードの検索要求を行う。
いくつかのハードウェアは実装が間違っており、応答を一つしか返さない。
この状況になると、クライアントシステムは
2
番目の応答を待ち続けてしまう。
このオプションを有効にすると、この動作が変更され、
同じポートからの 2
つの検索要求が正しく処理されなかった場合、
2
番目の検索要求を送信する前にソケットをクローズし
新しいソケットをオープンするようになる。
- no-tld-query (glibc
2.14 以降)
- RES_NOTLDQUERY を _res.options
にセットする。
このオプションを設定すると、
res_nsearch()
が完全なドメイン名ではない名前のトップレベルドメイン
(TLD)
としての検索を行わなくなる。
これにより、localhost
に検索リストの要素をつけるのではなく、“localhost”
を TLD
として設定しているようなサイトでは問題が起こる可能性がある。
RES_DEFNAMES も RES_DNSRCH
もセットされていない場合には、このオプションは効果はない。
domain と search
キーワードは、互いに排他的である。
これらのキーワードが
2
つ以上記述されている場合、
最後に記述されているものが有効になる。
システムの resolv.conf
ファイルにある search
キーワードは、
スペースで区切った検索ドメインのリストを
環境変数 LOCALDOMAIN
に設定することにより、各プロセス毎に上書きすることができる。
システムの resolv.conf
ファイルにある options
キーワードは、 上の
options
セクションで説明したように、
スペースで区切ったレゾルバオプションのリストを
環境変数 RES_OPTIONS
に設定することにより、各プロセス毎に修正することができる。
キーワードと値は同じ行に書かなければならない。
また、(nameserver のような)
キーワードが行の先頭になければならない。
値はキーワードの後にスペースで区切って続ける。
セミコロン (;)
かハッシュ文字 (#)
で始まる行はコメントとして扱われる。
ファイル
/etc/resolv.conf, <resolv.h>
この文書について
この man ページは Linux
man-pages
プロジェクトのリリース
3.79 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man-pages/
に書かれている。