unbound.conf

Section: unbound 1.0.0-1.0.2 (5)
Updated: Aug 7, 2008


名前

unbound.conf - Unbound 設定ファイル

書式

unbound.conf

説明

unbound.conf はunboundの設定ファイルです。このファイル形式は属性と値を持ちます。
属性の内側に属性を持つものもあります。記述方法は”属性: 値”です。

コメントは#から行の終わりまです。空行も行の先頭の空白も無視されます。

unbound-checkconfというユーティリティはunbound.confの用法をチェックするために利用できます。

設定ファイルの例を後述します。その内容を/etc/unbound/unbound.confにコピーして、次のコマンドで起動します。

        $ unbound -c /etc/unbound/unbound.conf

ほとんどの設定はデフォルトのままでよいです。次のコマンドでサーバーを停止します。

        $ kill `cat /etc/unbound/unbound.pid`

最小の設定ファイルは次の通りです。配布しているファイルには全てのオプションを記述してあるexample.confを含んでいます。

# unbound.conf config file for unbound(8).
server:
        directory: "/etc/unbound"
        username: unbound       # make sure it can write to pidfile.
        # make sure unbound can access entropy from inside the chroot.
        # e.g. on linux the use these commands (on BSD, devfs(8) is used):
        #      mount --bind -n /dev/random /etc/unbound/dev/random
        # and  mount --bind -n /dev/log /etc/unbound/dev/log
        chroot: "/etc/unbound"
        # logfile: "/etc/unbound/unbound.log"  #uncomment to use logfile.
        pidfile: "/etc/unbound/unbound.pid"
        # verbosity: 1          # uncomment and increase to get more logging.
        # listen on all interfaces, answer queries from the local subnet.
        interface: 0.0.0.0
        interface: ::0
        access-control: 10.0.0.0/8 allow
        access-control: 2001:DB8::/64 allow

ファイル形式

キーワード間にはホワイトスペースが必要です。属性のキーワードはコロン’:'で終わります。属性の次には属性あるいは値が続きます。

include:ディレクティブを使ってファイルを取り込むことができます。これはどこでも記述することができ、引数に一つのファイル名を取ります。取り込んだファイルのテキストはその箇所で設定ファイルにコピーされたような処理を行います。

サーバのオプション

以下のオプションはserver:節に記述します。

verbosity: <number>
饒舌さの数。レベル0はエラーのみ。レベル1は操作情報。レベル2は詳細な操作情報。レベル3はクエリーレベルの情報についてクエリー毎の出力。レベル4はアルゴリズムレベルの情報。デフォルトは1です。verbosityはコマンドラインのオプションで増やすこともできます。unbound(8).
statistics-interval: <seconds>
スレッド毎にログに統計情報を出力する間隔の秒数。値0あるいは”"で無効になります。デフォルトでは無効です。
statistics-cumulative: <yes or no>
有効にすると、統計を出力した後に統計のカウンターをクリアせずに、unboundを起動してからの情報情報を累積します。デフォルトはnoです。
num-threads: <number>
クライアントに提供するために生成するスレッド数。スレッドなしの場合は0を使用します。
port: <port number>
サーバがクエリーに応答するポート番号。デフォルト:53。
interface: <ip address>
ネットワークへの接続に使用するインターフェース。このインターフェースはクライアントからのクエリーのためにリッスンされ、クライアントへの回答をこのインターフェースから送ります。複数のインターフェースで動くように、このオプションを複数記述することができます。指定がない場合は、デフォルトではlocalhostでリッスンするようになります。インターフェースはリロード(kill -HUP)では変更が反映しません。再起動してください。
interface-automatic: <yes or no>
UDPクエリーのソース・インターフェースを検出し、応答のために使用します。この機能は実験的で、あなたのOSがIPv6(とそのソケット・オプション)とIPv4(とソース・インターフェース・ソケット・オプション)をサポートしている必要があります。デフォルト値はnoです。
outgoing-interface: <ip address>
ネットワークへの接続に使用するインターフェース。このインターフェースは権威サーバにクエリーを送信し、その応答を受信するために使用されます。複数のインターフェースを使用するときには複数回記述します。何も指定がないときには、デフォルト(all)が使用されます。interface:outgoing-interface: の行で同じインターフェースを指定することができます。そのときには、インターフェースは両方の目的で使用できます。スプーフィングを防ぐために、ランダムな外向きのインターフェース経由で外向きのクエリーは送信されます。
outgoing-range: <number>
オープンするポートの数。このファイル記述子の数はスレッド毎にオープンされます。最小1です。デフォルトは256です。大きい数を指定するとOSから余分なリソースを必要とします。
outgoing-port-permit: <port number or range>
クエリーの送信に利用するポート番号あるいはポート番号の範囲をオープンするのを許可します。大きい数の外側へのポートはスプーフィングの試みへの耐性を増やします。このポート番号が他のデーモンに必要とされないようにしてください。デフォルトではIANAにより割り当てられていない1024より大きいポート番号のみです。ポート番号あるいは”低い値-高い値”の形式をスペースなしで指定します。
outgoing-port-avoid: <port number or range>
クエリーを送信するのに使用するポート番号あるいはポート番号の範囲をオープンするのを許可しません。他のデーモンが必要とするポート番号をunboundが使用しないようにします。このポート番号は全ての外向きのインターフェース、IPv4とIPv6ともに避けられます。デフォルトでは、IANAにより割り当てられていない1024を超えるポート番号のみが使われます。ポート番号あるいは”低い値-高い値”の形式をスペースなしで指定します。
outgoing-num-tcp: <number>
スレッド毎に割り当てる外向きのTCPバッファの数。デフォルトでは10です。0が設定されたら、あるいは、do_tcpが”no”であれば、権威サーバへのTCPクエリーは行われません。
incoming-num-tcp: <number>
スレッド毎に割り当てる内向きのTCPバッファの数。デフォルトでは10です。0が設定されたら、あるいは、do_tcpが”no”であれば、クライアントからのTCPクエリーは受け付けません。
msg-buffer-size: <number>
メッセージ・バッファのバイトサイズ数。デフォルトは65552バイトです。この値はDNSの最大メッセージサイズである64Kbのパケットを処理するには十分なものです。これより大きいメッセージを送受信することはありえません。使用するメモリを少なくするために減らすこともできます。しかし、大きいリソースレコードを求めるDNSデータのリクエストでは、クライアントへの応答がSERVFAILの結果になります。
msg-cache-size: <number>
メッセージ・キャッシュのバイトサイズ数。デフォルトは4メガバイトです。数字だけの時はバイトです。キロバイト、メガバイト、ギガバイトのときには数字の後ろに’k'、’m'、’g'を追加します。なお、メガバイトは1024*1024バイトです。
msg-cache-slabs: <number>
メッセージ・キャッシュ内のスラブ数。スラブはスレッドによるロックの競合を減らします。値は2の累乗です。CPUの数(に近い値)に設定することは妥当な推定です。
num-queries-per-thread: <number>
スレッド毎に同時に対応できるクエリーの数。より大きなクエリーにサービス数が達したら、クエリーは落とされます。このときにはクライアントにタイムアウト後に再送させます。存在しているクエリーを処理することにサーバの時間を割り当てます。デフォルトは1024です。
rrset-cache-size: <number>
RRsetキャッシュのバイトサイズ数。デフォルトは4メガバイト。
数字だけの時はバイトです。キロバイト、メガバイト、ギガバイトのときには数字の後ろに’k'、’m'、’g'を追加します。なお、メガバイトは1024*1024バイトです。
rrset-cache-slabs: <number>
RRsetキャッシュ内のスラブ数。スラブはスレッドによるロックの競合を減らします。値は2の累乗です。
cache-max-ttl: <seconds>
キャッシュ内のRRsetとメッセージの生存期間(TTL)の最大値。デフォルトは86400秒(1日)です。最大値になるまで、クライアントへの応答はオリジナルの(より大きい)値に基づいたTTLを減らしていきます。内部のTTLが期限切れしたら、キャッシュしているデータは期限切れになります。リゾルバにデータへのクエリーを頻繁に行わせるように低く設定することができます。(非常に大きい)TTLの値を信用しません。
infra-host-ttl: <seconds>
ホスト・キャッシュ内のエントリのTTL。ホスト・キャッシュはラウンドトリップ・タイムとEDNSサポート情報を含みます。デフォルトは900です。
infra-lame-ttl: <seconds>
委譲がlameである(不十分)とわかったときのTTL。デフォルトは900です。
infra-cache-slabs: <number>
インフラストラクチャ・キャッシュ内のスラブ数。スラブはスレッドによるロックの競合を減らします。値は2の累乗です。
infra-cache-numhosts: <number>
情報がキャッシュされるホスト数。デフォルトは10000です。
infra-cache-lame-size: <number>
ホスト毎のlameである情報をキャッシュが使用することを許可されるバイト数。デフォルトは10kbです。この値は2,3のスコアゾーンの最大の格納領域を与え、lameゾーン名の長さに依存します。
do-ip4: <yes or no>
IPv4のクエリーに回答したり、IPv4のクエリーを送信したりするかを指定します。デフォルトではyesです。
do-ip6: <yes or no>
IPv6のクエリーに回答したり、IPv6のクエリーを送信したりするかどうかを指定します。デフォルトではyesです。
無効にしたときには、クエリーをIPv6で回答したり、インターネットのネームサーバにクエリーをIPv6で送信したりしません。
do-udp: <yes or no>
UDPのクエリーに回答したり、UDPのクエリーを送信したりするかを指定します。デフォルトではyesです。
do-tcp: <yes or no>
TCPのクエリーに回答したり、TCPのクエリーを送信したりするかを指定します。デフォルトではyesです。
do-daemonize: <yes or no>
unboundサーバがデーモンとしてバックグランドでフォークするかを指定します。デフォルトはyesです。
access-control: <IP netblock> <action>
netblockはクラスレス・ネットワーク・ブロックのために /サイズ を追加したIPv4やIPv6のアドレスとして与えられます。
actionはdeny, refuse, allowのどれかを指定します。denyはそのネットブロックのホストからのクエリーを止めます。refuseもクエリーを止めますが、DNSのrcodeのREFUSEDエラーメッセージを送り戻します。allowはそのネットブロックのクライアントからアクセスを許可します。デフォルトではlocalhostのみが許可(allow)され、残りは拒否(refuse)されます。プロトコルの使いやすさのために、デフォルトでは拒否(refuse)されます。DNSプロトコルはポリシーによる落とされたパケットを扱うようには設計されていません。パケットを落とすことは(たぶん度を超えた)クエリーを繰り返すことになります。
chroot: <directory>
chrootが有効にされるとき、オリジナル・ルートからフルパスとして(コマンドラインから)コンフィグファイルに記述するべきです。chrootが実行された後には、リロード後にコンフィグファイルを再読込できるように、コンフィグファイルのパスの使わなくなった部分が削除されます。
他のファイルのパス(作業ディレクトリ、pidファイル、ログファイル、ルートヒント、キーファイル)はいくつかの方法で指定できます。新しいルートに関する絶対パス、作業ディレクトリへの相対パス、オリジナル・ルートに関する絶対パスなど。サイトの場合は、そのパスは使用されない部分を取り除くように調整されます。
さらに、unboundは(エントリピーのために)/dev/randomに、chrootの内側に(syslogを使うために)/dev/logにアクセスできる必要があります。
値が与えられると、chrootが与えられたディレクトリに行われます。デフォルトは”/var/unbound”です。”"が与えられたら、chrootは実行されません。
username: <name>
値が与えられると、ポートをバインドした後に、ユーザ権限が落とされます。デフォルトは”unbound”です。username: “”が与えられると、ユーザの変更が行われません。
このユーザがポートをバインドすることができないときには、(HUPシグナルでの)リロードは開いているポートを残したままにします。コンフィグファイルのポート番号を変更したら、その新しいポート番号は権限を必要とします。そのときには、リロードが失敗します。リスタートを必要とします。
directory: <directory>
プログラムが動作するディレクトリを設定します。デフォルトでは”/var/unbound”です。
logfile: <filename>
“”が与えられると、ログ出力は標準エラーになります。デーモン化されたときにはどこにも出力されません。次にような形式でログファイルが追加されます。

[seconds since 1970] unbound[pid:tid]: type: message.

このオプションが与えられると、use-syslogが”no”に設定されます。SIGHUPでコンフィグファイルが再読込されると、追加のためにログファイルが再オープンされます。

use-syslog: <yes or no>
unboundがsyslog(3)を使ってsyslogdにログメッセージに送るようにします。ログ・ファシリティLOG_DAEMONが使われます。アイデンティティは”unbound”です。use-syslogが有効なときには、ログファイルの設定は上書きされます。デフォルトはsyslogにログ出力されます。
pidfile: <filename>
プロセスIDがそのファイルに書き込まれます。デフォルトは”/var/unbound/unbound.pid”です。

kill -HUP `cat /var/unbound/unbound.pid`

はリロードします。

kill -QUIT `cat /var/unbound/unbound.pid`

は終了します。

root-hints: <filename>
このファイルからルートヒントを読みます。デフォルトは何もありません。INクラスの組み込みのヒントを使います。ファイルはゾーンファイルの形式です。ルート・ネームサーバの名前とアドレスのみです。サーバが変更したら、デフォルトは古くなります。そのため、ルートヒント・ファイルを使うのは良い実践です。
hide-identity: <yes or no>
有効にすると、id.serverとhostname.bindクエリーは拒否されます。
identity: <string>
報告するアイデンティティを設定します。”"に設定したら、デフォルトになり、サーバのホスト名が返されます。
hide-version: <yes or no>
有効にすると version.server と version.bind クエリーは拒否されます。
version: <string>
報告するバージョンを設定します。”"に設定したら、デフォルトになり、パッケージのバージョンが返されます。
target-fetch-policy: <list of numbers>
ネームサーバのターゲット・アドレスを日和見的に取ってくるかを決めるために、unboundにより使用されるターゲット・フェッチ・ポリシーを設定します。
unboundがクエリーに回答するときに追跡する最大の依存の深さを数値が決めます。-1の値は依存の深さに応じて日和見的に全てのターゲットを取ってくることを意味します。0の値は要求に応じてのみに取ってくることを意味します。正の値は日和見的に多くのターゲットを取ってきます。
引用符(”")でリストを囲って、数字の間にスペースを置きます。デフォルトは”3 2 1 0 0″です。全ての値を0(”0 0 0 0 0″)にするとBIND 9に近い動作を与えます。また、”-1 -1 -1 -1 -1″はBIND 8に近いと噂をされる動作を与えます。
harden-short-bufsize: <yes or no>
クエリーからの非常に小さいEDNSのバッファ・サイズが無効にされます。デフォルトはnoです。それはクエリーを送るために適切なプロトコルであり、unboundがこれらのクエリーへのとても小さい回答を可能であれば与えようとするためです。
harden-large-queries: <yes or no>
非常に大きいクエリーが無効にされます。デフォルトはnoです。それはクエリーを送るのに適切なプロトコルであり、TSIGかEDNSのペイロードが非常に大きければ動作のために必要になるからです。
harden-glue: <yes or no>
サーバの権威内にあるときのみグルー(glue)を信頼しますか? デフォルトはyesです。
harden-dnssec-stripped: <yes or no>
Trust-AnchorのあるゾーンのためにDNSSECデータを必要とします。そのようなデータが無ければ、そのゾーンは偽物になります。設定をnoにしたら、DNSSECデータを受けません(あるいはDNSKEYデータが検証に失敗します)。それから、そのゾーンはセキュアではなくなります。これはTrust Anchorが無いような動作になります。パケットからDNSSECデータを取り除くような余計なことをするファイアウォールの内側にあるときにはこの設定をnoに設定できます。そうでないとゾーンは「署名されている(signed)」からよく間違って署名されているため「署名されていない」に変更されます。設定を切ったら、ゾーンのセキュリティを無効にするダウングレード攻撃の危険を負います。デフォルトはyesです。
use-caps-for-id: <yes or no>
だましの試みを未然に防ぐためにクエリーに0×20符号化されたランダムなビットを使用します。これはクエリー名の小文字と大文字を混乱させ、回答が正しい枠を持っているかを確認します。デフォルトでは無効にされています。キャッシング・フォワーダーはこれをサポートしていないかもしれないからです。0×20をサポートしていない権威サーバもあります。解答はそのために失敗します。解決方法はTODOリストにあります。この機能はdraft dns-0×20の実験的な実装です。
do-not-query-address: <IP address>
与えられたIPアドレスをクエリーしません。IPv4でもIPv6でもよいです。クラスレス委譲のネットブロックを示すために「/数値」を追加します。たとえば、10.2.3.4/24や2001::11/64のように書きます。
do-not-query-localhost: <yes or no>
yesのときには、do-not-query-addressエントリーにlocalhostが追加されます。IPv6の::1とIPv4の127.0.0.1/8の両方です。noのときにはlocalhostはクエリーを送るのに使われます。デフォルトはyesです。
module-config: <module names>
モジュールの設定です。スペース区切りでモジュール名のリストを記述子、引用符(”")で囲みます。モジュールにはvalidatorとiteratorが使用できます。”iterator”に設定すると、検証しないサーバになります。”validator iterator”に設定すると、DNSSEC検証が有効になります。検証をやりやすくするために、trust-anchorも設定する必要があります
trust-anchor-file: <filename>
検証のための信頼された鍵を持つファイル。DSとDNSKEYエントリーがそのファイルに記述できます。そのファイルの形式は標準のDNSゾーンファイルの形式です。デフォルトは”"です。または、trust anchorファイルがないです。
trust-anchor: <Resource Record>
検証で使用する鍵のためのDSあるいはDNSKEYリソースレコード。trust-anchor-filesに加えて,複数のエントリーが複数の信頼された鍵を指定することにより与えられます。リソースレコードは’dig’や’drill’の出力と同じ形式,すなわちゾーンファイルと同じ形式で入力されます。1行に”"で囲う必要があります。TTLはカット・アンド・ペーストの容易さで指定できますが,無効にされます。クラスは指定することができますが,クラスINがデフォルトです。
trusted-keys-file: <filename>
検証のための信頼される鍵を持つファイル。複数のエントリーがあるときには,エントリー毎に一つのファイルを指定します。trust-anchor-fileのようですが,ファイル形式は異なります。BIND9の形式で,trusted-keys { name flag proto algo “key”; };節が読み込まれます。
val-override-date: <rrsig-style date spec>
デフォルトは”"あるいは”0″であり,デバッグ機能を無効にします。RRSIG形式の日付を与えることにより有効にしたら,現在の日付の代わりに,RRSIGの初めと終わりの日を検証するために,その日付は使用されます。署名の始めと終わりをデバッグしないのであれば,この設定をしてはいけません。
val-bogus-ttl: <number>
間違ったデータの生存期間(TTL)。これは,不正な署名や他の確認のために,検証が失敗したデータです。そのデータのTTLは信用できません。代わりにこの値が使われます。この値は秒で記述します。デフォルトは900です。その時間の間隔は間違ったデータの再検証を繰り返すのを防ぎます。
val-clean-additional: <yes or no>
正しく署名されていないセキュア・メッセージの追加セクションからデータを削除するようにバリデータに教えます。セキュアでない,間違った,不定な,確認できていないメッセージには作用しません。デフォルトはyesです。追加セクションの潜在的に間違ったデータから認証のためのバリデータにユーザが依存するのを防ぐためにこの設定が使用されます。
val-permissive-mode: <yes or no>
不確定として間違ったメッセージに印を付けるようにバリデータに指示します。セキュリティの確認が実行されますが,結果が間違っている(セキュリティが失敗している)ときには,通常通りにSERVFAILでクライアントにその回答を与えずにおくことはありません。クライアントが間違ったデータを受け取ります。セキュアであるとわかったメッセージでは,ADビットが回答に設定されます。ログ出力も完全な検証のため,実行されます。デフォルト値はnoです。
val-nsec3-keysize-iterations: <list of values>
キーサイズと繰り返しのカウント数のリスト。スペース区切りにして,引用符で囲います。デフォルトは”1024 150 2048 500 4096 2500″です。これは,たくさんのハッシュの繰り返しを実行する代わりにメッセージがセキュアでないと単に印を付ける前のNSEC3の繰り替えし数で許可される最大値を決めます。このリストは昇順でなければならず,少なくとも一つのエントリーを持つ必要があります。”1024 65535″に設定したら,NSEC3繰り返し数に制限されません。このテーブルは短くしなければなりません。非常に長いリストは動作を遅くする原因となります。
key-cache-size: <number>
キー・キャッシュのバイトサイズ数。デフォルトは4メガバイトです。数字だけの時はバイトです。キロバイト、メガバイト、ギガバイトのときには数字の後ろに’k’、’m’、’g’を追加します。なお、メガバイトは1024*1024バイトです。
key-cache-slabs: <number>
キー・キャッシュ内のスラブの数。スラブはスレッドによるロックの競合を減らします。値は2の累乗です。CPUの数(に近い値)に設定することは妥当な推定です。
local-zone: <zone> <type>
ローカル・ゾーンを設定します。typeはlocal-dataに一致しないときの回答を決めます。
typeにはdeny, refuse, static, transparent, redirect, nodefaultがあり、以降その説明があります。
その後に、デフォルトの設定が並べられています。ローカル・ゾーンにデータを入力するためにはlocal-data:を使用します。
ローカル・ゾーンに対する回答は権威あるDNSの回答です。デフォルトでは、ゾーンはクラスINです。
リファラル、ワイルドカード、CNAME/DNAME、DNSSEC権威サービスなどの複雑な権威データを必要とするときには、後のスタブ・ゾーンの節に詳細な記述があるstub-zoneを設定してください。
deny
回答を送信せず、クエリーを落とします。ローカル・データに一致したら、クエリーに回答します。
refuse
rcodeをREFUSEDにして、エラーメッセージの返答を送信します。ローカル・データに一致したら、クエリーに回答します。
static
ローカル・データに一致したら、クエリーに回答します。一致しないときには、クエリーに対して、nodataあるいはnxdomainを回答します。zone apec domainのlocal-dataとして存在するときには、否定回答として、回答にSOAが含まれます。
transparent
ローカル・データに一致したら、クエリーに回答します。一致しないときには、クエリーが普通に解決されます。local-zoneが指定されていないときには、local-dataはデフォルトで生成されるtransparentゾーンを与えます。
redirect
クエリーはゾーン名のローカル…データから回答されます。ゾーン名の下にローカル・データは無くてもよいです。これはゾーンとゾーンのローカル・データがあるゾーンの全てのサブドメインに対してクエリーを回答します。ドメインを異なるアドレスにリダイレクトするために使用できます。 「local-zone: “example.com.” redirect」と「local-data: “example.com. A 127.0.0.1″」では、www.example.comとwww.foo.example.comのクエリーはリダイレクトされます。
nodefault
AS112ゾーンのために、デフォルトの内容をオフにします。
他のタイプもゾーンのデフォルトの内容をオフにします。nodefaultオプションは与えられたゾーンに対するデフォルトの内容をオフにする以外の効果はありません。
デフォルトのゾーンは localhost, 127.0.0.1と::1の逆引き, AS112ゾーンです。AS112ゾーンはインターネットが正しい回答を提供することができないプライベートおよび予約IPアドレスの逆引きのDNSのゾーンです。デフォルトではNXDOMAIN(逆引きの情報がない)という回答を与えます。その名前のlocal-zoneを指定したり,’nodefault’タイプを使用したりすることによりデフォルトを切ることができます。デフォルトのゾーンの内容の一覧をいかに並べます。
localhost
IPv4とIPv6のlocalhostの情報が与えられます。NSとSOAレコードは完全さのためとDNS更新ツールに適合するために提供されます。デフォルトの内容は次の通りです。

local-zone: "localhost." static
local-data: "localhost. 10800 IN NS localhost."
local-data: "localhost. 10800 IN 

    SOA localhost. nobody.invalid. 1 3600 1200 604800 10800"
local-data: "localhost. 10800 IN A 127.0.0.1"
local-data: "localhost. 10800 IN AAAA ::1"
IPv4ループバックの逆引き
デフォルトの内容は次の通りです。

local-zone: "127.in-addr.arpa." static
local-data: "127.in-addr.arpa. 10800 IN NS localhost."
local-data: "127.in-addr.arpa. 10800 IN
    SOA localhost. nobody.invalid. 1 3600 1200 604800 10800"
local-data: "1.0.0.127.in-addr.arpa. 10800 IN
    PTR localhost."
IPv6ループバックの逆引き
デフォルトの内容は次の通りです。

local-zone: "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.
    0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa." static
local-data: "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.
    0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. 10800 IN
    NS localhost."
local-data: "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.
    0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. 10800 IN
    SOA localhost. nobody.invalid. 1 3600 1200 604800 10800"
local-data: "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.
    0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. 10800 IN
    PTR localhost."
RFC1918プライベート・ゾーンの逆引き
10.in-addr.arpa, 16.172.in-addr.arpaから31.172.in-addr.arpaまで, 168.192.in-addr.arpaのゾーンの逆引きデータ。local-zone:はstaticに設定され,local-data: のSOAとNSレコードが提供されます。
RFC3330 IPv4 this, リンク・ローカル, テストネット、ブロードキャストの逆引き
0.in-addr.arpa, 254.169.in-addr.arpa, 2.0.192.in-addr.arpa, 255.255.255.255.in-addr.arpa. ゾーンの逆引きデータ。
RFC4291 IPv6 unspecifiedの逆引き
次のゾーンの逆引きデータ

0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.
0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa.
RFC4193 IPv6の ローカルに割り当てられたローカルアドレス(Locally Assigned Local Addresses)の逆引き
Reverse data for zone D.F.ip6.arpa.
RFC4291 IPv6 のリンク・ローカル・アドレスの逆引き
Reverse data for zones 8.E.F.ip6.arpa to B.E.F.ip6.arpa.
IPv6の例のプレフィックスの逆引き
Reverse data for zone 8.B.D.0.1.0.0.2.ip6.arpa. このゾーンはチュートリアルや例のために使われます。次のような記述でこのゾーンのブロックを削除することができます。

  local-zone: 8.B.D.0.1.0.0.2.ip6.arpa. nodefault

これは他のデフォルトのゾーンでも機能します。

local-data: <resource record string>
ローカル・データを設定します。ローカル・データに対するクエリーに応答する際に使われます。local-zoneをredirectとして設定しなければ、クエリーは正確に一致する必要があります。正確に一致しなければ、local-zoneタイプはさらなる処理を決めます。local-dataがlocal-zoneのサブドメインではないように設定されていれば、transparent local-zoneが設定されます。TXTのようなレコード・タイプでは、「local-data: ‘example. TXT “text”‘」のようにシングル・クオートを使います。
参照、ワイルドカード、CNAME/DNAME、DNSSEC権威サービスのような複雑な権威データをさらに必要であれば、以降のセクションのスタブ・ゾーンに詳細があるstub-zoneを設定してください。

スタブ・ゾーン・オプション

複数のstub-zone:節があってもよいです。それぞれが「name:」と0以上のホスト名かIPアドレスを持ちます。スタブ・ゾーンでは、ネームサーバのリストが使われます。クラスINは想定されます。

スタブ・ゾーンは公開されているインターネット・サーバを使ってアクセスできないリゾルバに使われる権威データを設定するために使用できます。これは会社のローカルのデータやプライベート・ゾーンに役に立ちます。異なるホスト(あるいは異なるポート)にある権威サーバを設定してください。「stub-addr: <ip address of host[@port]>」の形式でunboundの設定エントリを入力してください。unboundのリゾルバは公開されたインターネットを参照することなく、そのデータにアクセスできます。

公開鍵の付いた信用された鍵のエントリーがコンフィグに記述された場合には、この設定はDNSSECの署名されたゾーンが権威サーバにより提供されるのを許可します。そのため、unboundがデータの検証をして、プライベート・ゾーンへの応答にADビットを設定することができます(権威サーバはADビットを設定しません)。この設定はunboundがプライベート・ゾーンへのクエリーに回答することができるようにし、ADビット(’authentic’)を設定します。しかし、AA(’authoritative’)ビットはこの応答では設定されません。

name: <domain name>
スタブ・ゾーンの名前。
stub-host: <domain name>
スタブ・ゾーンのネームサーバの名前。使用される前に自身の名前の解決が行われます。
stub-addr: <IP address>
スタブ・ゾーンのネームサーバのIPアドレス。IPv4でもIPv6でもよいです。DNS通信の標準でないポート番号を使うためには、ポート番号の前に’@'を追加します。

フォワード・ゾーンのオプション

複数のforward-zone:節があってもよいです。それぞれは「name:」と0個以上のホスト名かIPアドレスを持ちます。フォワード・ゾーンでは、このネームサーバのリストはクエリーをフォワードするために使用されます。そのサーバはクエリーに対して再帰検索を扱う必要があります。クラスINが想定されます。名前”.”とforward-addrターゲットを持つフォワード・ゾーンのエントリーは(キャッシュから回答しなければ)他のサーバに全てのクエリーをフォワードします。

name: <domain name>
フォワード・ゾーンの名前。
forward-host: <domain name>
フォワードするサーバの名前。使用される前に自身の名前の解決が行われます。
forward-addr: <IP address>
フォワードするサーバのIPアドレス。IPv4でもIPv6でもよいです。DNS通信の標準でないポート番号を使うためには、ポート番号の前に’@'を追加します。

メモリ制御の例

以下に示すコンフィグの設定例では、メモリ使用量が削減されます。サービス・レベルは低くなり、著しく大きなデータと高いTCP負荷はもうサポートしません。非常に大きなデータと高いTCP負荷はDNSでは例外的です。DNSSECの検証は有効であり、trust anchorを追加します。3MB以上のメモリを使うプログラムについて心配する必要がなければ、以下の例はあなたに適していません。完全なサービスを受けるためにはデフォルトを使ってください。BSD-32ビットではヘビーな使い方の後で30~40MBを超えます。

# メモリの使用量を削減する設定例
server:
        num-threads: 1
        outgoing-num-tcp: 1     # TCPサービスを制限し、バッファを少なくします。
        incoming-num-tcp: 1
        outgoing-range: 16      # メモリを減らします。しかし、性能も落ちます。
        msg-buffer-size: 8192   # サービスを制限します。
        msg-cache-size: 100k
        msg-cache-slabs: 1
        rrset-cache-size: 100k
        rrset-cache-slabs: 1
        infra-cache-numhosts: 200
        infra-cache-slabs: 1
        infra-cache-lame-size: 1k
        key-cache-size: 100k
        key-cache-slabs: 1
        num-queries-per-thread: 30
        target-fetch-policy: "2 1 0 0 0 0"
        harden-large-queries: "yes"
        harden-short-bufsize: "yes"

ファイル

/var/unbound
デフォルトのunboundの作業ディレクトリ。
/var/unbound
デフォルトのchroot(2) の場所。
/var/unbound/unbound.conf
unboundの設定ファイル
/var/unbound/unbound.pid
動作中のデーモンのプロセスIDを保存しているデフォルトのunboundのPIDファイル。
unbound.log
unboundのログファイル。デフォルトはsyslog(3)に出力します。

関連項目

unbound(8), unbound-checkconf(8).

著者

UnboundはNLnet Labsにより開発されました。詳細は配布ファイルに含まれているファイルCREDITSを見てください。