unbound.conf (Ver 1.6.0-3+deb9u1) 説明 2/10 – Server Options
なお、これらの説明は Debian stretch (Unbound Ver 1.6.0-3+deb9u1) による
Server Options
Server Options は、”server: ” 配下に記述する
内容
饒舌さの設定。ログ等への出力状態を設定する
default値 | |
Debian stretch | 1 |
Official | 1 |
設定項目・内容 | |||
設定値 | 内容 | 設定値 | 内容 |
0 | エラーのみ | 1 | 操作情報 |
2 | 詳細な操作情報 | 3 | クエリーレベルの情報についてクエリー毎の出力 |
4 | アルゴリズムレベルの情報 | 5 | キャッシュミスのクライアントの識別 |
設定例
verbosity: 1
備考
verbosityはコマンドラインのオプションで増やす事も出来る
・unbound(8) より
-v : 饒舌さを増やします。複数回与えると、より多くの情報を記録します。
これは設定ファイルのverbosityの値に加えられます。
内容
スレッド毎にログに統計情報を出力する間隔の秒数
default値 | |
Debian stretch | 0 (disable) |
Official | 0 (disable) |
設定例
statistics-interval: 0
内容
統計を出力した後に統計のカウンターをクリアせずに、unboundを起動してからの情報情報を累積する
default値 | |
Debian stretch | no |
Official | no |
設定例
statistics-cumulative: yes
内容
拡張された統計がunbound-control(8)から出力される
デフォルトが “off” であるのは、追跡するのに時間がかかる為
default値 | |
Debian stretch | no |
Official | no |
設定例
extended-statistics: no
内容
クライアントに提供するために生成するスレッド数
スレッドを使わない時は “1”
値はCPUコア数に等しくなるように設定する
default値 | |
Debian stretch | 1 |
Official | 1 |
設定例
2Core x CPU4個 の場合 … num-threads: 8
4Core x CPU1個 の場合 … num-threads: 4
備考
DNSキャッシュサーバ チューニングの勘所 P13~17
・DNSキャッシュサーバ チューニングの勘所 P17より引用
ワーカースレッドは、このデー タ構造アクセス時に、スラブ毎にロックを獲得するため、スラブ数とワーカースレッド数と一致させ るとロックコンテンションが減らせる。
内容
サーバーがクエリーに応答するポート番号
(Unbound ←→ クライアント間の、Unboundの待受ポート番号)
default値 | |
Debian stretch | 53 |
Official | 53 |
設定例
port: 53
内容
情報 このオプションは複数指定出来る
クライアントへの回答をするインターフェースを指定
ポート番号は@ポートでインターフェース毎個別に指定出来る
(ポート番号指定時は、インターフェース・@・ポート番号の間には空白無し)
指定されない時はデフォルトのポート (port) が使われる
重要 リロード (kill -HUP) では変更が反映されない為、再起動する事
default値 | |
Debian stretch | localhost (127.0.0.1 and ::1) |
Official | localhost (127.0.0.1 and ::1) |
設定例
interface: 192.0.2.153
interface: 192.0.2.154
interface: 192.0.2.154@5003
interface: 2001:DB8::5
内容
情報 このオプションは複数指定出来る
“interface: ” と同じ
( nsd.conf とのコンパチ用)
default値 | |
Debian stretch | (無し) |
Official | (無し) |
設定例
ip-address: 192.0.2.153
ip-address: 192.0.2.154
ip-address: 192.0.2.154@5003
ip-address: 2001:DB8::5
内容
UDPクエリーのソース インターフェースを検出し、応答にそのインターフェースをコピーして利用する(実験的)
(OSが固有のソケット オプションをサポートしている必要がある)
クエリーを受けたインターフェースから応答を返す
デフォルト以外のポート使用時は、これを “no” にする
default値 | |
Debian stretch | no |
Official | no |
設定例
interface-automatic: no
備考
・Unboundの紹介とその運用 [PDF] P12より引用
DSR構成のLBを使っていたり、anycastをしている場合、サービス用のIPアドレスとInterfaceのIPアドレスが異なる
–その場合に、なにもケアしないと、応答をInterfaceのIPアドレスから返そうとする
–“interface-automatic: yes” とすると、クエリを受けたIPアドレスから返す
内容
情報 このオプションは複数指定出来る
権威サーバーにクエリーを送信するインターフェースを指定
無指定時は、デフォルト (all) インターフェース
複数指定時は、ランダムに選ばれた外向きのインターフェースから外向きのクエリーが送信される
default値 | |
Debian stretch | (all) |
Official | (all) |
設定例
outgoing-interface: 192.0.2.153
outgoing-interface: 2001:DB8::5
outgoing-interface: 2001:DB8::6
内容
(権威サーバーにクエリーを送信する時に使用) オープンするポートの数
“num-queries-per-thread: ” の2倍の値にする
1以上の数値を設定する
default値 | |
Debian stretch | 4096 ? |
Official | コンパイルオプションによる |
設定例
outgoing-range: 4096
備考
・DNSキャッシュサーバ チューニングの勘所 P28より引用
OS側のハード・ソフトリミットの引き上げ
• Unbound/BIND9ともに、root権限で起動するとulimitを自動的に引き上げ てくれる。手動で引き上げたい時は、unbound/namedを起動するスクリプ ト中でulimitコマンドを実行 ulimit -HSn 100000
・最適化の方法 – 日本Unboundユーザー会 より引用
outgoing-range
を可能な限り値を大きくするように設定します。全体で1024の制限を乗り越える方法については後述するセクションを見てください。これにより一度に多くのクライアントにサービスを提供します。1コアでは、950。2コアでは、450。4コアでは、200。num-queries-per-thread
はoutgoing-range
の半分の数に設定するのが最もよいです。しかし、クエリーの数が突出したときにそれを吸収できるだけたくさん欲しいでしょう。
内容
情報 このオプションは複数指定出来る
(権威サーバーへの) クエリーの送信に利用するポート番号 or ポート番号の範囲
範囲指定時は (空白無しの “低い値-高い値” の形式) にて指定
default値 | |
Debian stretch | 1024~ |
Official | 1024~ |
設定例
outgoing-port-permit: 32768
outgoing-port-permit: “32768-55225”
備考
“outgoing-port-permit: ” と “outgoing-port-avoid: ” は記述された順番に処理される
送信に利用するポート番号を追加したり、送信に利用するポート番号の集まりから送信に利用しないポート番号を差し引いたり出来る
送信に利用するポート番号の集まりの中で、1024より大きいIANAにより割り当てられていないポート番号で処理は始まる
内容
情報 このオプションは複数指定出来る
クエリーの送信に利用しないポート番号 or ポート番号の範囲を指定
範囲指定時は (空白無しの “低い値-高い値” の形式) にて指定
他のデーモンが使用するポート番号を unbound が使用しないようするためにこれを使う
default値 | |
Debian stretch | – |
Official | – |
設定例
outgoing-port-avoid: 3200
outgoing-port-avoid: “3200-3208”
内容
スレッド毎の権威サーバーへの同時TCPリクエスト最大数
default値 | |
Debian stretch | 10 |
Official | 10 |
設定例
outgoing-num-tcp: 10
備考
内容
スレッド毎のユーザ同時TCPリクエスト最大数
default値 | |
Debian stretch | 10 |
Official | 10 |
設定例
incoming-num-tcp: 10
備考
内容
EDNSのバッファーサイズとして通知するバイトサイズ数
実際のバッファーサイズは (TCPもUDPも両方とも) “msg-buffer-size: “により決められる
重要 “msg-buffer-size: “より高い値を設定してはいけない
default値 | |
Debian stretch | 4096 (RFC推奨値) |
Official | 4096 (RFC推奨値) |
設定例
edns-buffer-size: 4096
備考
フラグメンテーション発生時は、タイムアウトが大抵発生する
その場合は、“1480” がその問題を解決する
内容
UDP の最大サイズ設定 (TCPには適用されない)
推奨値は、512~4096
“65536” にて無効
default値 | |
Debian stretch | 4096 |
Official | 4096 |
設定例
max-udp-size: 4096
内容
メッセージバッファのバイトサイズ数 (TCP・UDP 共)
デフォルトの “65552” は、DNSの最大パケットである64Kbには十分である
これ以上のメッセージは送受信出来ない
メモリを節約するために減らす事が出来るが、巨大なリソースレコードなどのDNSデータの要求によっては、クライアントに “SERVFAIL” 応答が返される
重要 “edns-buffer-size: ” は “msg-buffer-size: ” より高い値を設定してはいけない
default値 | |
Debian stretch | 65552 |
Official | 65552 |
設定例
msg-buffer-size: 65552
内容
メッセージキャッシュのバイトサイズ数
[k,m,G] を使用出来る
メモリ使用量は “msg-cache-size: ” と “rrset-cache-size: ” の合計値を元に計算
プロセスの実メモリ使用量 (RSS) は、指定した合計キャッシュサイズの2.5倍程度まで拡大することを想定するのが良い
default値 | |
Debian stretch | 4m |
Official | 4m |
設定例
msg-cache-size: 4m
msg-cache-size: 256k
msg-cache-size: 2G
備考
内容
メッセージキャッシュ内のスラブ数
値は2の累乗に設定する事。CPUの数(に近い値)に設定する
(スレッド数1~2では2、スレッド数3~4では4、5~8では8を指定)
default値 | |
Debian stretch | 2 |
Official | 2 |
設定例
msg-cache-slabs: 4
備考
・DNSキャッシュサーバ チューニングの勘所 P17 より引用
キャッシュを構成するハッシュデータ構造のスラブ数を指定している。ワーカースレッドは、このデー タ構造アクセス時に、スラブ毎にロックを獲得するため、スラブ数とワーカースレッド数と一致させ るとロックコンテンションが減らせる
内容
スレッド毎に同時に対応できるクエリーの数
重要 “outgoing-range: ” の1/2にする
リクエスト受信/秒 * 平均リクエスト処理時間(sec) * マージン (倍)
(num-queries-per-thread 1個辺り約20kB消費)
default値 | |
Debian stretch | 1024 ? |
Official | コンパイルオプションによる (512 or 1024) |
設定例
num-queries-per-thread: 2
備考
DNSキャッシュサーバ チューニングの勘所 P22~25
・DNSキャッシュサーバ チューニングの勘所 P24より引用
いくつなら良いと言い切るのは難しいが、理論的には以下の値となる
• 単位時間あたりのリクエスト受信数 × 1リクエストの処理にかかる平均時間 × マージン
• 1万リクエスト受信/秒、平均リクエスト処理時間0.1秒、マージン4倍ならば、
1万 × 0.1 × 4 = 同時管理リクエスト数 4000
• Unbound設定: num-queries-per-thread: 2000 (2threadsの場合)
・DNSキャッシュサーバ チューニングの勘所 P25より引用
unbound-control statsでスレッド毎・プロセス全体のリクエストリ スト数(未解決の処理中リクエスト数)をモニタ可能。
• current.userが設定値に近づいていたり、exceededやoverwrittenがカウントアップしているようなら、num-query-per-threadを引き上げる。
・最適化の方法 – 日本Unboundユーザー会 より引用
num-queries-per-threadはoutgoing-rangeの半分の数に設定するのが最もよいです。しかし、クエリーの数が突出したときにそれを吸収できるだけたくさん欲しいでしょう。outgoing-rangeの制限のためにnum-queries-per-threadも制限されます。
内容
サーバー高負荷時のタイムアウト
非常に多くのクエリーが届いた時には、クエリーの50%は実行することが許可される。
残りの50%は、設定された時間以上の時間を費やしていれば、新しく来たクエリーに置き換えらる
default値 | |
Debian stretch | 200 (msec) |
Official | 200 (msec) |
設定例
jostle-timeout: 200
備考
・長く続いているクエリーのqps (約) = ( num-queries-per-thread / 2 ) / ( 長いクエリーの平均値 )
・短いクエリーのqps (約) = スレッド毎のおおよそ ( num-queries-per-thread / 2 ) / ( jostletimeout [単位をsecに直す] )
例: jostle-timeout: 200 , num-queries-per-thread: 1024
( 1024 / 2 ) / 0.2(sec) = 約2560 qps
内容
UDP が wait になってからクローズする時間設定 (msec)
“0” にて無効
default値 | |
Debian stretch | 0 (disable) |
Official | 0 (disable) |
設定例
delay-close: 0
内容
UDP Port53 内向き(受信)バッファーの最大サイズを設定
(getsockopt(2) はこの 2倍された値を返す)
OSの上限設定値を回避する場合root権限を必要とする
“0” にてシステムデフォルト
参考値として “4m” or “8m” が例示されている
1リクエスト128バイトのメモリを消費する
default値 | |
Debian stretch | 0 |
Official | 0 |
設定例
so-rcvbuf: 0
備考
Man page of SOCKET – JM Project
socket(7) – Linux manual page
DNSキャッシュサーバ チューニングの勘所 P19~21
・DNSキャッシュサーバ チューニングの勘所 P21より引用
いくつならよい、と言い切るのは難しいが・・・ •
Unboundでは、大規模環境では 4m or 8m(バイト) という値が例示されている
• 1リクエスト128バイトとすると、それぞれ3万 or 6万リクエスト分に相当
• 最繁時間帯に netstat -su で RcvbufErrors が増えているようなら、値を引き上げる等の対応をしてもよい
・最適化の方法 – 日本Unboundユーザー会 より引用
負荷の高いサーバでは
so-rcvbuf
をより大きな値(4mか8m)に設定します。これは負荷が突出したときにメッセージが失われないようにカーネルバッファを大きく設定します。応答信頼性(reply-reliability)のパーセンテージにさらに9sを加えます。OSは最大値で上限をかけます。Linux上ではunboundはその制限を回避するためにroot権限を必要とします。あるいは管理者はsysctl net.core.rmem_max
を使うことができます。
内容
UDP Port53 外向き(送信)バッファーの最大サイズを設定
(getsockopt(2) はこの 2倍された値を返す)
OSの上限設定値を回避する場合root権限を必要とする
“0” にてシステムデフォルト
参考値として “4m” or “8m” が例示されている
1リクエスト128バイトのメモリを消費する
default値 | |
Debian stretch | 0 |
Official | 0 |
設定例
so-sndbuf: 0
備考
Man page of SOCKET – JM Project
socket(7) – Linux manual page
DNSキャッシュサーバ チューニングの勘所 P19~21
・DNSキャッシュサーバ チューニングの勘所 P21より引用
いくつならよい、と言い切るのは難しいが・・・ •
Unboundでは、大規模環境では 4m or 8m(バイト) という値が例示されている
• 1リクエスト128バイトとすると、それぞれ3万 or 6万リクエスト分に相当
• 最繁時間帯に netstat -su で SndbufErrors が増えているようなら、値を引き上げる等の対応をしてもよい
内容
重要 since Linux 3.9
1 つのポートを複数のプロセスで bind 出来る様にする
※ UNIXとLinuxでは実装が異なる
default値 | |
Debian stretch | no |
Official | no |
設定例
so-reuseport: no
備考
Linuxでは、「他のSO_REUSEPORTで動いてるやつのlistenを奪うと混乱させる」との情報もあり
同一ポートを使うプログラムは使わないほうが良さそうなの?
Kazuho Okuさんのツイート: “SO_REUSEPORTがダメなんじゃなくて、linuxのSO_REUSEPORTが運用至難でダメなんですよ”
内容
重要 Linux 2.6.24 以降
このソケットで透過プロキシ (transparent proxy) が出来る様になる
(uses IP_BINDANY on FreeBSD)
default値 | |
Debian stretch | no |
Official | no |
設定例
ip-transparent: no
備考
内容
重要 Linux 2.4 以降
ローカルではないIPアドレスや存在しないIPアドレスをバインド出来る様になる
default値 | |
Debian stretch | no |
Official | no |
設定例
ip-freebind: no
備考
内容
RRsetキャッシュのバイトサイズ数
[k,m,G] を使用出来る
default値 | |
Debian stretch | 4m |
Official | 4m |
設定例
rrset-cache-size: 4m
rrset-cache-size: 256k
rrset-cache-size: 2G
備考
内容
RRsetキャッシュ内のスラブ数
値は2の累乗に設定する事。CPUの数(に近い値)に設定する
(スレッド数1~2では2、スレッド数3~4では4、5~8では8を指定)
default値 | |
Debian stretch | 2 |
Official | 2 |
設定例
rrset-cache-slabs: 4
備考
・DNSキャッシュサーバ チューニングの勘所 P17 より引用
キャッシュを構成するハッシュデータ構造のスラブ数を指定している。ワーカースレッドは、このデー タ構造アクセス時に、スラブ毎にロックを獲得するため、スラブ数とワーカースレッド数と一致させ るとロックコンテンションが減らせる
内容
キャッシュ内のRRsetとメッセージの生存期間(TTL)の最大値
default値 | |
Debian stretch | 86400 (1day) |
Official | 86400 (1day) |
設定例
cache-max-ttl: 86400
内容
キャッシュ内のRRsetsとメッセージの生存期間(TTL)の最小値
default値 | |
Debian stretch | 0 |
Official | 0 |
設定例
cache-min-ttl: 0
内容
Negative-Cacheの生存期間(TTL)の最大値
default値 | |
Debian stretch | 3600 |
Official | 3600 |
設定例
cache-max-negative-ttl: 3600
内容
ホストキャッシュ内のエントリのTTL
default値 | |
Debian stretch | 900 |
Official | 900 |
設定例
infra-host-ttl: 900
内容
インフラストラクチャキャッシュ内のスラブ数
値は2の累乗に設定する事。CPUの数(に近い値)に設定する
(スレッド数1~2では2、スレッド数3~4では4、5~8では8を指定)
default値 | |
Debian stretch | 2 |
Official | 2 |
設定例
infra-cache-slabs: 4
内容
情報 (roundtrip, EDNS, lame) がキャッシュされるホスト数
default値 | |
Debian stretch | 10000 |
Official | 10000 |
設定例
infra-cache-numhosts: 10000
内容
infra-cache の動的再送信タイムアウトの下限値
default値 | |
Debian stretch | 50(msec) |
Official | 50(msec) |
設定例
infra-cache-min-rtt: 50
内容
重要 “local-zone-tag: ” “access-control-tag: ” の tag 設定より前に設定する事 (エラーになる)
“local-zone-tag: ” “access-control-tag: ” で使用出来る tag を設定
情報 タグを複数設定する時は、タグとタグの間に半角スペースを用い設定する事
default値 | |
Debian stretch | – |
Official | – |
設定例
define-tag: “tag1“
define-tag: “tag1 tag2 tag3”
備考
unbound.conf (Unbound Ver 1.6.0-3+deb9u1) その1 – Unbound 設定 ファイル [当サイト]
内容
クエリーの回答や送信に、IPv4 を使用する
default値 | |
Debian stretch | yes |
Official | yes |
設定例
do-ip4: yes
内容
クエリーの回答や送信に、IPv6 を使用する
default値 | |
Debian stretch | yes |
Official | yes |
設定例
do-ip6: yes
内容
権威サーバへのクエリにIPv6を優先する
default値 | |
Debian stretch | no |
Official | no |
設定例
prefer-ip6: no
備考
(間違ってるかもしれない)
例 : IP_FREEBINDを利用し、IPv6下位64bitをランダムなアドレスを用い問い合わせを行う (Linux)
1.下記を設定する
ip -6 addr add 2001:db8::/64 dev lo
ip -6 route add local 2001:db8::/64 dev lo
2.”unbound.conf” に下記を設定する
ip-freebind: yes … (Linuxでは “ip-freebind: ” を “yes” にする)
outgoing-interface: 2001:DB8::/64
prefer-ip6: yes
内容
クエリーの回答や問い合わせに、UDP を使用する
default値 | |
Debian stretch | yes |
Official | yes |
設定例
do-udp: yes
内容
クエリーの回答や問い合わせに、TCP を使用する
default値 | |
Debian stretch | yes |
Official | yes |
設定例
do-tcp: yes
内容
クエリー回答の TCP の MSS 設定値
default値 | |
Debian stretch | 0 (system default) |
Official | 0 (system default) |
設定例
tcp-mss: 0
備考
内容
(権威サーバーにクエリーを送信する時に使用する) TCP の MSS 設定値
default値 | |
Debian stretch | 0 (system default) |
Official | 0 (system default) |
設定例
outgoing-tcp-mss: 0
備考
内容
上流へのクエリーにTCPのみを使うかを指定
トンネリング時に役立つ
default値 | |
Debian stretch | no |
Official | no |
設定例
tcp-upstream: no
内容
重要他のサーバはこれをサポートしている必要がある
上流へのクエリーにSSLのみを使うかを指定
トンネリング時に役立つ
SSLストリーム内にTCPでのプレーンのDNSメッセージを格納する
情報 ” unbound-control set_option ” にて on/off 出来る
default値 | |
Debian stretch | no |
Official | no |
設定例
ssl-upstream: no
備考
内容
重要 公開鍵は “ssl-service-pem: ” で指定
TLSセッションの プライベート鍵 ファイルを指定
有効であれば、サーバーはTCPソケットでSSLサービスを提供する
クライアントは “ssl-upstream: yes” を使わなくてはならない
通常のDNSのTCPサービスは提供されず、エラーを出す
重要 リロードでは変更が反映されない為、再起動する事
情報 これはプライベート鍵をrootのパーミッションに保ち、さらにchrootする前にプライベート鍵を読むためである
default値 | |
Debian stretch | “” (off) |
Official | “” (off) |
設定例
ssl-service-key: “path/to/privatekeyfile.key”
備考
・unbound.conf(5) – 日本Unboundユーザー会 より引用
このサービスは異なるport:の設定かinterfaceの設定における@port接尾語で動作します。
・Debian 付属 unbound.conf(5) より引用
this service is best run with a different port: config or @port suffixes in the interface config.
内容
TLSセッションの 公開鍵証明書pem ファイルを指定
デフォルトは””で、オフである
default値 | |
Debian stretch | “” (off) |
Official | “” (off) |
設定例
ssl-service-pem: “path/to/publiccertfile.pem”
内容
TCP SSLサービスを提供するポート番号
情報 “interface: ” に @port 設定をした物のみがSSLサービスを提供する
default値 | |
Debian stretch | 853 |
Official | 853 |
設定例
ssl-port: 853
内容
unboundサーバーをデーモンとしてバックグランドで動作させるかの設定
default値 | |
Debian stretch | yes |
Official | yes |
設定例
do-daemonize: yes
内容
情報 このオプションは複数指定出来る
問い合わせのアクセスコントロール
マッチしない物は “deny” となる
重要 Unbound の access-control は “access-control: ” 部を設定していない状態でも “access-control-tag:“,”access-control-tag-action:“,”access-control-tag-data:“,”access-control-view:” 項目を設定した場合、再帰が許可されてしまう
default値 | |
Debian stretch | localhost allow (その他は refused) |
Official | localhost allow (その他は refused) |
設定項目・内容 | |
action | 内容 |
deny | ホストからのクエリーを止める |
refuse | ホストからのクエリーを止め、DNSの応答コードREFUSEDエラーメッセージを送り返す |
allow | アクセスを許可する 非再帰クエリーは拒否する 但しlocal-dataにアクセスする非再帰クエリーは許可する |
allow_snoop | 非再帰アクセスも許可する (管理者がデバッグの為に使用する) |
deny_non_local | ホストからのクエリーを止める 但しlocal-dataにアクセスする非再帰クエリーは許可する |
refuse_non_local | ホストからのクエリーを止め、DNSの応答コードREFUSEDエラーメッセージを送り返す 但しlocal-dataにアクセスする非再帰クエリーは許可する |
設定例
access-control: 0.0.0.0/0 refuse
access-control: 127.0.0.0/8 allow
access-control: ::0/0 refuse
access-control: ::1 allow
access-control: ::ffff:127.0.0.1 allow
備考
内容
情報 このオプションは複数指定出来る
“define-tag: ” で指定した tag と [IP netblock] とを関連付ける
更に “local-zone-tag: ” に設定された項目に [IP netblock] を関連付ける
重要
※ これを指定すると、 “acccess-control: ” にて allow を設定したのと同じとなる
(“access-control” に何も設定していなくても、これを設定すると allow に設定した事になる)
情報 タグを複数設定する時は、タグとタグの間に半角スペースを用い設定する事
default値 | |
Debian stretch | – |
Official | – |
設定例
access-control-tag: 192.0.1.128 “tag1”
access-control-tag: 192.0.2.0/24 “tag2 tag3”
備考
内容
情報 このオプションは複数指定出来る
設定された [IP netblock] と tag に該当した場合、”local-zone-tag: ” で設定された当該 zone について action で設定した動作を行う
重要 “access-control-tag: ” と “local-zone-tag: ” の間で最初にマッチしたものを処理する
default値 | |
Debian stretch | – |
Official | – |
設定項目・内容 | |
action | 内容 |
deny | ホストからのクエリーを止める |
refuse | ホストからのクエリーを止め、DNSの応答コードREFUSEDエラーメッセージを送り返す |
設定例
access-control-tag-action: 192.0.2.0/24 tag3 refuse
備考
なお、action は、”deny” と “refuse” しか設定できない模様
情報 但し、”unbound-checkconf” は通ってしまう。しかし、起動は出来ない
内容
情報 このオプションは複数指定出来る
設定された [IP netblock] と tag に該当した場合、設定した ‘resource record string’ を応答する
default値 | |
Debian stretch | – |
Official | – |
設定例
access-control-tag-data: 192.0.2.0/24 tag2 “A 127.0.0.1”
備考
当方では、”access-control-tag-data: ” を動作させる事が出来なかった
内容
情報 このオプションは複数指定出来る
設定された [IP netblock] は ‘view name’ に設定された view へ振り分けられる
default値 | |
Debian stretch | – |
Official | – |
設定例
access-control-view: 192.0.2.0/24 viewname
備考
内容
chrootのディレクトリ指定
情報 “” 設定時は、chrootは実行されない (無効)
重要 オリジナルのルートからフルパスとして(コマンドラインから)記述する
chrootが実行後は、リロード後にコンフィグファイルを再読込出来る様に、コンフィグファイルのパスの使わなくなった部分が削除される
他のファイルのパスはいくつかの方法で指定出来る
作業ディレクトリ (directory: ) , ログファイル (logfile: ) , ルートヒント (root-hints: ) , キーファイル
1.新しいルートに関する絶対パス
2.作業ディレクトリへの相対パス
3.オリジナル ルートに関する絶対パスなど
上記3のケースでは、そのパスは使用されない部分を取り除くように調整される
PIDファイル (pidfile: )
1.作業ディレクトリの相対パス
2.オリジナル・ルートに対して相対的な絶対パス
PIDファイルはchrootのする前に書かれ、権限は落とされる
例: PIDファイルを/var/run/unbound.pidにして、/var/unboundにchrootする事を許可する
unboundはchrootの内側から(エントロピーのために)/dev/randomにアクセスできる必要がある
default値 | |
Debian stretch | /etc/unbound |
Official | /usr/local/etc/unbound |
設定例
chroot: “/etc/unbound”
備考
内容
実行ユーザ名指定
情報 “” 設定時は、ユーザの変更が行われない
ポートをバインドした後に、ユーザ権限が落とされる
default値 | |
Debian stretch | unbound |
Official | unbound |
設定例
username: “unbound”
内容
プログラムが動作するディレクトリ (作業ディレクトリ) を設定
default値 | |
Debian stretch | /etc/unbound |
Official | /usr/local/etc/unbound |
設定例
directory: “/etc/unbound”
備考
内容
ログファイル指定
“” 指定時は、ログ出力は標準エラーになる。但し、デーモン化された時にはどこにも出力されない
重要 ファイル名指定時には use-syslog が “no” に設定される
default値 | |
Debian stretch | “” |
Official | “” |
設定例
logfile: “”
備考
次のようなフォーマットで出力される
[seconds since 1970] unbound[pid:tid]: type: message.
内容
Logをがsyslog(3)を使ってsyslogdにログメッセージに送るようにする
ログファシリティは “LOG_DAEMON” 、identity は “unbound”
identity は、”log-identity: ” にて変更する事が出来る
重要“yes” 設定時は、”logfile” 設定は上書きされる
default値 | |
Debian stretch | yes |
Official | yes |
設定例
use-syslog: yes
内容
log の接頭詞を設定
“” 指定時は、”unbound” となる
default値 | |
Debian stretch | “” |
Official | “” |
設定例
log-identity: “”
内容
ログのタイムスタンプを UTC ascii にする
default値 | |
Debian stretch | no |
Official | no |
設定例
log-time-ascii: no
内容
クエリーログを使用する
1行に出力される項目は以下の通り
1.timestamp 2.IP address 3.name 4.type 5.class
名前の非印字文字は ‘?’ として出力される
重要 サーバーが “slower” になる
default値 | |
Debian stretch | no |
Official | no |
設定例
log-queries: no
内容
pidfile を指定する
default値 | |
Debian stretch | /run/unbound.pid |
Official | /usr/local/etc/unbound/unbound.pid |
設定例
pidfile: “/etc/unbound/unbound.pid”
備考
内容
ルートヒントファイル指定
情報 ファイルのフォーマットは zone ファイル形式
default値 | |
Debian stretch | – |
Official | – |
設定例
root-hints: “”
備考
ルートヒント – Unbound – ArchWiki
ルートヒント systemd タイマー – Unbound – ArchWiki
内容
有効にすると、id.server と hostname.bind クエリーは拒否される
default値 | |
Debian stretch | no |
Official | no |
設定例
hide-identity: no
内容
報告する識別子を設定する
“” 設定時は、デフォルトになり、サーバーのホスト名が返される
default値 | |
Debian stretch | “” |
Official | “” |
設定例
identity: “”
内容
有効にすると version.server と version.bind クエリーは拒否される
default値 | |
Debian stretch | no |
Official | no |
設定例
hide-version: no
内容
バージョンを設定する
“” 設定時は、デフォルトになり、パッケージのバージョンが返される
default値 | |
Debian stretch | “” |
Official | “” |
設定例
version: “”
内容
ネームサーバーのターゲットアドレスを日和見的に取ってくるかを決めるために、unboundにより使用されるターゲットフェッチポリシーを設定する
“0 0 0 0 0” : BIND 9に近い動作
“-1 -1 -1 -1 -1” : BIND 8に近いと噂をされる動作
default値 | |
Debian stretch | 3 2 1 0 0 |
Official | 3 2 1 0 0 |
設定例
target-fetch-policy: “3 2 1 0 0”
内容
クエリーからの非常に小さいEDNSのバッファサイズが無視される
default値 | |
Debian stretch | no |
Official | no |
設定例
harden-short-bufsize: no
内容
非常に大きいクエリーが無視される
default値 | |
Debian stretch | no |
Official | no |
設定例
harden-large-queries: no
内容
サーバーの権威内にあるときのみグルー(glue)を信頼する
default値 | |
Debian stretch | yes |
Official | yes |
設定例
harden-glue: yes
内容
トラストアンカーのゾーンのためにDNSSECデータを必要とする
そのデータが無ければ、そのゾーンは偽物と判断される
設定をオフにした場合、DNSSECデータを受けない
(あるいはDNSKEYデータが検証に失敗する)
default値 | |
Debian stretch | yes |
Official | yes |
設定例
harden-dnssec-stripped: yes
内容
draft-vixie-dnsext-resimproveより、すでにnxdomainになると知られているもう一つの名前の下で名前のクエリーにnxdomainを返す
default値 | |
Debian stretch | no |
Official | no |
設定例
harden-below-nxdomain: no
備考
RFC 8020 – NXDOMAIN: There Really Is Nothing Underneath [IETF]
内容
インフラストラクチャデータのために追加クエリーを実行する際に参照パスを強行する
default値 | |
Debian stretch | no |
Official | no |
設定例
harden-referral-path: no
内容
DSレコードの検証アルゴリズムのダウングレードを許可する
default値 | |
Debian stretch | no |
Official | no |
設定例
harden-algo-downgrade: no
内容
だましの試みを未然に防ぐためにクエリーに0×20符号化されたランダムなビットを使用し、クエリーのエントロピーを上げる
情報 権威サーバーに送るクエリー名に大・小文字を混在させ、回答が正しい大・小文字を持っているかを確認する
draft dns-0×20の実験的な実装
default値 | |
Debian stretch | no |
Official | no |
設定例
use-caps-for-id: no
内容
情報 このオプションは複数指定出来る
“use-caps-for-id” を実行しないドメインを指定
default値 | |
Debian stretch | – |
Official | – |
設定例
caps-whitelist: “licdn.com”
caps-whitelist: “senderbase.org”
内容
クエリ情報漏洩の最小化
default値 | |
Debian stretch | yes |
Official | no |
設定例
qname-minimisation: no
備考
Debian stretch の Default では、外部ファイル内に “yes” と設定されている
RFC 7816 – DNS Query Name Minimisation to Improve Privacy [IETF]
内容
QNAME minimisation の strict mode
情報 これを “yes” にすると “qname-minimisation: ” も “yes” になる
default値 | |
Debian stretch | no |
Official | no |
設定例
qname-minimisation-strict: no
備考
RFC 7816 – DNS Query Name Minimisation to Improve Privacy [IETF]
内容
情報 このオプションは複数指定出来る
プライベートアドレスを設定
ここで設定されたアドレスは、パブリックなインターネットの名前を返す事を許可しない (逆引き)
重要 デフォルトでは、設定した全ての “local-data: ” が許可され、”private-domain: ” を使った追加の名前を指定する事が出来る
default値 | |
Debian stretch | – |
Official | – |
設定例
private-address: 10.0.0.0/8
private-address: 172.16.0.0/12
private-address: 192.168.0.0/16
private-address: 169.254.0.0/16
private-address: fd00::/8
private-address: fe80::/10
private-address: ::ffff:0:0/96
内容
情報 このオプションは複数指定出来る
“private-address: ” 設定時の動作を除外するドメインを設定
情報 このドメインとプライベートアドレスを含むそのサブドメインの全てを許可する
default値 | |
Debian stretch | – |
Official | – |
設定例
private-domain: “example.com”
内容
スレッド毎に望まれない回答の総数が追跡される
設定値に達すると、RRsetとメッセージキャッシュがクリアされ、警告がログに出力される
うまくいけば、どんな毒も削除される
1000万の値が提案されている
default値 | |
Debian stretch | 0 (off) |
Official | 0 (off) |
設定例
unwanted-reply-threshold: 0
内容
設定されたアドレスをクエリーしない
default値 | |
Debian stretch | – |
Official | – |
設定例
do-not-query-address: 127.0.0.1
do-not-query-address: 127.0.0.1/8
do-not-query-address: ::1
内容
“yes” 設定時、”do-not-query-address: ” に “localhost” が追加される
default値 | |
Debian stretch | yes |
Official | yes |
設定例
do-not-query-localhost: yes
内容
キャッシュを最新に保つ為に期限切れにする前に、メッセージキャッシュの要素がプリフェッチされる
情報 当機能は、マシンに約10パーセントのトラフィックと負荷を与える
default値 | |
Debian stretch | no |
Official | no |
設定例
prefetch: no
内容
“yes” 設定時、DSレコードに出会った時、DNSKEYを検証プロセスの中で事前に取得する
リクエストの遅延を低くする
キャッシュが0に設定されていれば、利用されない
情報 ほんの少し多くのCPUを使う
default値 | |
Debian stretch | no |
Official | no |
設定例
prefetch-key: no
内容
Unboundはレスポンス内のRRsetの順番を循環させる
(DNSラウンドロビン)
default値 | |
Debian stretch | no |
Official | no |
設定例
rrset-roundrobin: no
備考
内容
DNS応答のauthority section/additional section を(DNSプロトコル上許される範囲で)省略する機能
default値 | |
Debian stretch | no |
Official | no |
設定例
minimal-responses: no
備考
DNSキャッシュサーバ チューニングの勘所 P44~45
Unboundの紹介とその運用 [PDF] P10
内容
DNSSEC lameness check を無効にする
default値 | |
Debian stretch | no |
Official | no |
設定例
disable-dnssec-lame-check: no
内容
使用するモジュールの設定
重要 列挙するモジュールの順番が重要
default値 | |
Debian stretch | validator iterator |
Official | validator iterator |
設定項目・内容 | |
設定値 | 内容 |
iterator | DNSSEC検証しない |
validator | DNSSEC検証が有効になる “validator iterator” と設定する (モジュールの順番が重要) トラストアンカーも設定する必要がある |
python | python スクリプトモジュールを使用する 設定は、最初若しくは validator と iterator の間 (“validator python iterator”) に行う |
dns64 | dns64 モジュールを使用する 設定例. module-config: “dns64 validator iterator” |
subnetcache | EDNS Client Subnet Module を使用する 設定例. module-config: “subnetcache validator iterator” |
ipsecmod | Opportunistic IPsec Support Module を使用する 設定例. module-config: “ipsecmod validator iterator” |
cachedb | Cache DB Module を使用する 設定例. module-config: “validator cachedb iterator” |
設定例
module-config: “validator iterator”
内容
トラストアンカー ファイルを指定
フォーマットは標準のDNSゾーンファイルの形式
default値 | |
Debian stretch | “” or no trust anchor file |
Official | “” or no trust anchor file |
設定例
trust-anchor-file: “”
備考
“auto-trust-anchor-file: “を設定する事により、RFC5011 による trust-anchor の自動更新を利用出来る
内容
RFC5011の探索で追跡される一つのゾーンのトラストアンカーを持つファイルを指定
(RFC5011 による trust-anchor の自動更新)
その探索は月に数回行われる
その為、マシンは頻繁にオンラインである必要がある
初期のファイルはtrust-anchor-fileに記述されるような内容にする事が出来る
このファイルはアンカーが更新されたときに書き込まれる
その為、unboundユーザーが書き込み権限を持つ必要がある
ファイルへの書き込み権限だけでなく、ファイルシステムの完全なイベントに対処する為に必要な一時ファイルを作成するための権限も、chroot(使用されている場合)内にある必要がある
default値 | |
Debian stretch | /var/lib/unbound/root.key |
Official | ? |
設定例
auto-trust-anchor-file: “/etc/unbound/root.key”
備考
Debian stretch の Default では、外部ファイル内に ‘auto-trust-anchor-file: “/var/lib/unbound/root.key”‘ と設定されている
・Debian stretch unbound.conf サンプルより 引用
Please note usage of unbound-anchor root anchor is at your own risk and under the terms of our LICENSE (see that file in the source).
内容
情報 このオプションは複数指定出来る
検証で使用する鍵のためのDSあるいはDNSKEYリソースレコードを設定
“trust-anchor-files” に加えて,複数のエントリーが複数の信頼済み鍵を指定する事により与えられる
リソースレコードは ‘dig ‘や ‘drill’ の出力と同じ形式 (ゾーンファイルと同じ形式) で記述する
1行に””で囲い記述する
TTLはカット アンド ペーストの容易さで指定出来るが,無視される
クラスは指定する事が出来る
クラスINがデフォルトである
default値 | |
Debian stretch | ? |
Official | ? |
設定例
trust-anchor: “nlnetlabs.nl. DNSKEY 257 3 5 AQPzzTWMz8qSWIQlfRnPckx2BiVmkVN6LPupO3mbz7FhLSnm26n6iG9N Lby97Ji453aWZY3M5/xJBSOS2vWtco2t8C0+xeO1bc/d6ZTy32DHchpW 6rDH1vp86Ll+ha0tmwyy9QP7y2bVw5zSbFCrefk8qCUBgfHm9bHzMG1U BYtEIQ==”
trust-anchor: “jelte.nlnetlabs.nl. DS 42860 5 1 14D739EB566D2B1A5E216A0BA4D17FA9B038BE4A”
備考
内容
情報 このオプションは複数指定出来る
検証のための信頼済み鍵を持つファイルを指定
情報 複数のエントリーがある時には,エントリー毎に一つのファイルを指定する
フォーマットは BIND9 の形式である
trusted-keys { name flag proto algo “key”; };
このオプションでワイルドカードを使う事が出来る
ワイルドカードは起動時やリロード時に展開される
default値 | |
Debian stretch | “” |
Official | “” |
設定例
trusted-keys-file: “”
内容
DLV (DNSSEC Lookaside Validation)の信頼済み鍵を持つファイルを指定
フォーマットは DS と DNSKEY のエントリの両方とも “trust-anchor-file: “オプションと同じ形式
1つのDLVだけ設定出来る
より多く設定したら遅くなる
DLV はルートの信頼される DLV として使われる
これはルートのように見せる事を意味する
デフォルトは””であり、DLVアンカー ファイルがないことを示す
default値 | |
Debian stretch | “” |
Official | “” |
設定例
dlv-anchor-file: “dlv.isc.org.key”
内容
ドメイン名をinsecureに設定する
DNSSEC の信頼の輪はそのドメイン名に対して無視される
default値 | |
Debian stretch | – |
Official | – |
設定例
domain-insecure: “example.com”
内容
(デバッグの為) 検証時の現在の日付を上書きする
デフォルトは””あるいは”0″であり、デバッグ機能を無効にする
RRSIG形式の日付を与える事により有効にしたら、現在の日付の代わりに、RRSIGの有効期間の開始日時と終了日時を検証するために,その日付は使用される
-1は日付を全く無視する
特別なアプリケーションによっては役に立つ
重要署名の有効期間の開始日時と終了日時をデバッグしないのであれば、これを設定してはいけない
default値 | |
Debian stretch | “” |
Official | “” or “0” |
設定例
val-override-date: “20171212010203”
備考
有効期間終了フィールドの値と有効期間開始フィールドの値は、どちらも
1970年1月1日0時0分0秒(UTC)から経過した秒数を符号無し10進整数で表記するか、
またはUTCの YYYYMMDDHHmmSS 形式で表記しなければならない(MUST)。
ここで、YYYYMMDDHHmmSSの意味は以下のとおりである。YYYY: 年(0001-9999。ただしセクション3.1.5参照のこと)
MM: 月(01-12)
DD: 日(01-31)
HH: 24時間表記の時間(00-23)
mm: 分(00-59)
SS: 秒(00-59)
内容
検証される署名に適応される時計のずれの最小の秒数
この設定の上限として、署名の有効期間(終了日時 – 開始日時)の10%の値が使われる
短い生存期間の署名の厳格な検証の為にこの値を低く出来る
default値 | |
Debian stretch | 3600 (1 hour) 夏時間の差を許容する |
Official | 3600 (1 hour) 夏時間の差を許容する |
設定例
val-sig-skew-min: 3600
内容
検証される署名に適応される時計のずれの最大の秒数
この設定の上限として、署名の有効期間(終了日時 – 開始日時)の10%の値が使われる
最小と最大の両方をとても小さくする事は、時計のズレの許容を無効にする
最小と最大の両方をとても大きくする事は、署名のタイムスタンプを少ない厳格さでバリデータが検証する事になる
default値 | |
Debian stretch | 86400 (24 hour) 安定したドメインでのタイムゾーンの設定の問題で許容する |
Official | 86400 (24 hour) 安定したドメインでのタイムゾーンの設定の問題で許容する |
設定例
val-sig-skew-max: 86400
内容
不適正データの生存期間(TTL)
不適正データとは、不正な署名や他の確認の為に、検証が失敗したデータの事である
そのデータのTTLは信頼出来ない
代わりにこの値が使われる
その時間の間隔は不適正データの再検証を繰り返すのを防ぐ
default値 | |
Debian stretch | 60 (sec) |
Official | 60 (sec) |
設定例
val-bogus-ttl: 60
内容
正しく署名されていないセキュアメッセージの追加セクションからデータを削除する様にバリデータに教える
次のメッセージには作用しない
1.安全ではない (insecure) 2.不適正 (bogus) 3.不確定 (indeterminate) 4.未確認 (unchecked)
情報 追加セクションの潜在的に間違ったデータから、認証の為のバリデータにユーザが依存するのを防ぐ為に使用する
default値 | |
Debian stretch | yes |
Official | yes |
設定例
val-clean-additional: yes
内容
バリデータに検証失敗をログに出力させる
“verbosity: ” の設定に関係無い
何が検証で起きているかを見る事が出来る
情報 そのクエリーでなぜ検証が失敗しているかを見つける為に、dig や drill のような診断ツールを使う
default値 | |
Debian stretch | 0 (off) |
Official | 0 (off) |
設定項目・内容 | |
設定値 | 内容 |
0 | off |
1 | 1行毎に失敗したユーザのクエリーを出力 |
2 | 設定 “1” の内容に加え、なぜunboundがそれが悪いと考えたか (reason)、どのサーバーが失敗するデータを送ったのか (bad IP) も出力する |
設定例
val-log-level: 0
内容
不確定として不適正メッセージに印を付けるようにバリデータに指示する
セキュリティの確認が実行されるが、結果が不適正(セキュリティが失敗している)の時には、通常通りにクライアントに SERVFAIL で回答するのを抑える
従ってクライアントは不適正なデータを受け取る
安全であると分かったメッセージでは、ADビットが回答に設定される
ログ出力も完全な検証のために実行される
default値 | |
Debian stretch | no |
Official | no |
設定例
val-permissive-mode: no
内容
unboundがクライアントからのCDフラグを無視し、クライアントに不適正(bogus)の回答を返すのを拒否する
このように、CD (Checking Disabled)フラグはもはやチェックする事を無効にしない
これはCDフラグを設定するのにDNSSECを検証できないレガシー(w2008)サーバーがクライアントである時に役に立つ
そして、unboundはDNSSEC保護を持つそれらを提供する
default値 | |
Debian stretch | no |
Official | no |
設定例
ignore-cd-flag: no
内容
実際の解決が完了するのを待つ事なく、TTLが0のキャッシュから古い応答を提供しようとする
実際の解決策の回答は、キャッシュで終了する
default値 | |
Debian stretch | no |
Official | no |
設定例
serve-expired: no
内容
鍵サイズと繰り返し回数のリスト
スペース区切りにして、引用符で囲い設定する
たくさんのハッシュ化の繰り返しを実行する代わりにメッセージが安全でないと単に印を付ける前に、これはNSEC3の繰り返し回数で許可される最大値を決める
“1024 65535″に設定したら、NSEC3繰り返し回数に制限は無い
このリストは短いままにしておかなければならない
非常に長いリストは動作を遅くする原因となる
情報 このリストは昇順でなければならず、少なくとも一つのエントリーを持つ必要がある
default値 | |
Debian stretch | 1024 150 2048 500 4096 2500 |
Official | 1024 150 2048 500 4096 2500 |
設定例
val-nsec3-keysize-iterations: “1024 150 2048 500 4096 2500”
備考
“キーサイズ 繰り返し回数 キーサイズ 繰り返し回数 …” の順で設定する
内容
設定された期間に新しいトラストアンカーが見つかったら、新しいトラストアンカーを追加するようにRFC5011トラストアンカー自動更新の auto-trust-anchor-file 検出機構に命じる
default値 | |
Debian stretch | 2592000 (30 days) [RFCに従い] |
Official | 2592000 (30 days) [RFCに従い] |
設定例
add-holddown: 2592000
内容
設定された期間に破棄リストに保たれたならば、破棄されたトラストアンカーを削除するようにRFC5011トラストアンカー自動更新の auto-trust-anchor-file 検出機構に命じる
default値 | |
Debian stretch | 2592000 (30 days) [RFCに従い] |
Official | 2592000 (30 days) [RFCに従い] |
設定例
del-holddown: 2592000
内容
設定した期間に新しいトラストアンカーが見つからなかったら、見つからないトラストアンカーを削除するようにRFC5011トラスト アンカー自動更新の auto-trust-anchor-file 検出機構に命じる
これは対象のゾーンがトラストアンカーの破棄を実行しなかったらその状態ファイルを一掃する
その為、これは通常の (RFC5011ではない) ロールオーバーを実行するゾーンで自動検出機構が働くようにする
情報 RFCに従い、値 0 は見つからないアンカーを削除しない
default値 | |
Debian stretch | 31622400 (366 days) |
Official | 31622400 (366 days) |
設定例
keep-missing: 31622400
内容
情報 デバッグ用オプション
autotrust RFC5011トラスト アンカー自動更新の auto-trust-anchor-file 検出機構のロールオーバータイマーは非常に小さい値になる
default値 | |
Debian stretch | no |
Official | no |
設定例
permit-small-holddown: no
内容
鍵キャッシュのバイトサイズ数
[k,m,G] を使用出来る
default値 | |
Debian stretch | 4m |
Official | 4m |
設定例
key-cache-size: 4m
key-cache-size: 256k
key-cache-size: 2G
内容
鍵キャッシュ内のスラブの数
値は2の累乗に設定する事。CPUの数(に近い値)に設定する
(スレッド数1~2では2、スレッド数3~4では4、5~8では8を指定)
default値 | |
Debian stretch | 2 |
Official | 2 |
設定例
key-cache-slabs: 4
内容
積極的なネガティブ キャッシュのバイトサイズ数
[k,m,G] を使用出来る
default値 | |
Debian stretch | 1m |
Official | 1m |
設定例
neg-cache-size: 1m
neg-cache-size: 256k
neg-cache-size: 2G
内容
“private-address: ” のフイルタ機能を無効にする
有効にした場合、プライベートアドレス空間の、逆引き参照はフィルタされなくなる
これにより、Unboundがホスト上で dns サービスとして実行されている時に、「lan」の上流へすべてのクエリを出す事が出来る
有効にすると、”localhost”、”127.0.0.1″ のリバースおよび “:: 1” のリバースゾーンのみが既定のローカルゾーンで構成される
この様なルックアップ (RFC 準拠) をフィルタリングする必要があるマシンのグループに対して (DHCP-) DNS ネットワークリゾルバとして Unbound が実行されている場合、このオプションを無効にすると、上位 DNS サーバーへのローカルネットワークに関する潜在的なデータ漏洩も停止する
default値 | |
Debian stretch | no (disable) |
Official | no (disable) |
設定例
unblock-lan-zones: no
内容
有効にすると、プライベートアドレス空間の逆引きはDNSSEC検証されない
全てのドメインを “domain-insecure: ” へリストアップするのと同じである
これは、通常、”unblock-lan-zones: “が使用されている場合に必要である
default値 | |
Debian stretch | no |
Official | no |
設定例
insecure-lan-zones: no
内容
情報 このオプションは複数指定出来る
ローカルゾーンの設定
“type” は “local-data: “に一致しないときに与える回答を決める
下記12種類の “type” がある
本設定後に、(暗黙的に)デフォルトの設定が並べられている
デフォルト設定を使わないのならば、そのゾーンの “type” を “nodefault” にて設定する
ローカル ゾーンにデータを入力する為には “local-data: “を使用する
ローカル ゾーンに対する回答は権威あるDNSの回答である
デフォルトではゾーンクラスは “IN” である
参照・ワイルドカード・CNAME/DNAMEサポート・DNSSEC権威サービスなどの複雑な権威データを必要とする場合、後述する “stub-zone: ” を使用する
default値 | |
Debian stretch | – |
Official | – |
設定項目・内容 | |
type | 内容 |
deny | 回答を送信せず、クエリーを落とす ローカルデータに一致したら、クエリーに回答する |
refuse | “rcode REFUSED” エラーメッセージ を返答する ローカルデータに一致したら、クエリーに回する |
static | ローカルデータに一致したら、クエリーに回答する 一致しない時は、クエリーに対して “nodata” or “nxdomain” を回答する ゾーン頂点ドメインの “local-data” として存在する時には、否定回答として回答にSOAが含まれる |
transparent | ローカルデータに一致したら、クエリーに回答する 一致しない時は、クエリーが普通に解決される (再帰) クエリーがローカルデータで与えられた名前、かつローカルデータで与えらたデータのタイプでな居場合、”noerror nodata” の回答が返される “local-zone” が指定されていない時には、”local-data” はデフォルトで生成される “transparentゾーン” を与える |
redirect | クエリーはゾーン名のローカルデータから回答される これを設定したゾーン名の下にローカルデータは無くてもよい これを設定したゾーンは、ゾーンとゾーンのローカルデータがあるゾーンの全てのサブドメインに対して ”redirect” される エンドユーザーに(本来とは)異なるアドレスレコードを返すためにドメインをリダイレクトする為に使われる <local-zone: “example.com.” redirect> と <local-data: “example.com A 127.0.0.1″> を設定時、”www.example.com” と “www.foo.example.com” のクエリーはユーザがウェブブラウザで “example.com” でサイトにアクセス出来ない様にリダイレクトされる |
typetransparent | ローカルデータに一致したら、クエリーに回答する クエリーが異なる名前の為か異なるタイプで同じ名前の為であれば、クエリーは普通に解決される “AAAA” クエリーに “nodata” の返答を引き起こさないローカルデータのAレコードがあるように、”transparent” に似ていてローカルデータにリストされたタイプは普通に解決される |
inform | クエリーは “transparent” 同様に回答される クライアントIPアドレス (及びポート番号) がログファイルに出力される ログメッセージは次のとおり ”timestamp” , “unbound-pid” , “info:” , “zonename” , “inform IP@port” , “queryname” , “type class” ウィルス感染したマシンがある時、検索している感染したマシンの名前を記録し、それらにアンチウィルスを実行する用途に使用出来る |
inform_deny | 回答を送信せず、クエリーを落とす そして “inform” のようにログに記録される クエリに答えることなく感染マシンを見つけるのに有用 |
always_transparent | “transparent” と似ているが、ローカルデータを無視し、通常に解決される |
always_refuse | “refuse” と似ているが、ローカルデータを無視し、”rcode REFUSED” エラーメッセージ を返答する |
always_nxdomain | “static” と似ているが、ローカルデータを無視し、”nxdomain” を返答する |
nodefault | AS112ゾーンの為のデフォルトの内容をオフにする (他のタイプ設定時もゾーンのデフォルトの内容をオフにする) ‘nodefault’ オプションは与えられたゾーンに対するデフォルトの内容をオフにする以外の効果はない |
デフォルトのゾーンは “localhost” , “127.0.0.1” と “::1” の逆引き, “AS112” ゾーンである
・”AS112″ ゾーンとは
インターネットが正しい回答を提供する事が出来ないプライベートおよび予約IPアドレスの逆引きDNSゾーン
デフォルトではNXDOMAIN(逆引きの情報なし)という回答を与えるように設定されている
その名前についてあなたが設定した “local-zone: ” を指定したり、”nodefault” タイプを使用したりする事によりデフォルトをオフにする事が出来る
デフォルトのゾーンの内容の一覧 | |
zone | 内容 |
localhost | IPv4とIPv6のlocalhostの情報が与えられる NSとSOAレコードは完全さの為とDNS更新ツールに適合する為に提供される デフォルトの内容は次の通り local-zone: “localhost.” static |
reverse IPv4 loopback |
IPv4ループバックの逆引き デフォルトの内容は次の通り local-zone: “127.in-addr.arpa.” static |
reverse IPv6 loopback |
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 |
onion (RFC 7686) |
デフォルトの内容は次の通り
local-zone: “onion.” static |
reverse RFC1918 local use zones |
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レコードが提供される |
reverse RFC3330 IP4 this, link-local, testnet and broadcast |
RFC3330で規定されたIPv4アドレスの’this’, リンク ローカル, テストネット、ブロードキャストの逆引き 0.in-addr.arpa, 254.169.in-addr.arpa, 2.0.192.in-addr.arpa (TEST NET 1), 100.51.198.in-addr.arpa (TEST NET 2), 113.0.203.in-addr.arpa (TEST NET 3), 255.255.255.255.in-addr.arpaのゾーンの逆引きデータ |
reverse RFC4291 IP6 unspecified |
RFC4291で規定されたIPv6の未指定アドレスの逆引き 次のゾーンの逆引きデータ 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. |
reverse RFC4193 IPv6 Locally Assigned Local Addresses |
RFC4193 IPv6の ローカルに割り当てられたローカルアドレス(Locally Assigned Local Addresses)の逆引き D.F.ip6.arpaのゾーンの逆引きデータ |
reverse RFC4291 IPv6 Link Local Addresses |
RFC4291 IPv6 のリンク ローカル アドレスの逆引き 8.E.F.ip6.arpaからB.E.F.ip6.arpaのゾーンの逆引きデータ |
reverse IPv6 Example Prefix |
IPv6の例示のプレフィックスの逆引き 8.B.D.0.1.0.0.2.ip6.arpaゾーンの逆引きデータ このゾーンはチュートリアルや例のために使われる 次の様な記述でこのゾーンのブロックを削除する事が出来る local-zone: 8.B.D.0.1.0.0.2.ip6.arpa. nodefault “local-zone” 文でゾーンの一部を “transparent” に設定する事で選択的に防がない事も出来る これは他のデフォルトのゾーンでも機能する |
設定例
local-zone: “localhost.” nodefault
local-zone: “127.in-addr.arpa.” nodefault
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.” nodefault
local-zone: “onion.” nodefault
local-zone: “10.in-addr.arpa.” nodefault
local-zone: “example.com.” static
local-zone: “example.jp” static ← zone名末尾 “.” (ドット) 無し
local-zone: “1.168.192.in-addr.arpa.” static
備考
内容
情報 このオプションは複数指定出来る
ローカルデータの設定
ローカルデータに対するクエリーに応答する際に使われる
“local-zone: ” を “redirect” として設定しなければ、クエリーは正確に一致する必要がある
正確に一致しなければ、”local-zone: ” タイプは更なる処理を決める
“local-data: ” に対する “local-zone: ” が ( “local-zone: ” のサブドメインとなるようにも) 設定されていない場合、その”local-zone: ” に “transparent” が設定される
TXTのようなレコードタイプでは、「local-data: ‘example. TXT “text”‘」のようにシングルクオートを使う
参照・ワイルドカード・CNAME/DNAMEサポート・DNSSEC権威サービスなどの複雑な権威データを必要とする場合、後述する “stub-zone: ” を使用する
default値 | |
Debian stretch | – |
Official | – |
設定例
local-data: “example.com. IN A 192.0.2.51”
local-data: ‘mytext.local TXT “content of text record”‘
local-data: “1.168.192.in-addr.arpa. 86400 SOA ns1.example.jp. hostmaster.example.jp. 2017110401 86400 7200 604800 86400”
local-data: “1.168.192.in-addr.arpa. 86400 NS ns1.example.jp.”
local-data: “2.1.168.192.in-addr.arpa. 86400 PTR ns1.example.jp.”
local-data: “www.example.jp A 192.168.1.51″ ← Aレコードはドット無しでもOKだった
IN も省略OKであった ( “local-zone: ” のデフォルトクラスは “IN” である為だと思う)
備考
設定出来るレコードは下記のみのようである
”A” , “PTR” , “SOA” , “NS” , “TXT”
逆引き (PTR) 時、BINDと違い、SOA,NS の応答は無し
内容
情報 このオプションは複数指定出来る
逆引き用PTRレコードのローカルデータ簡略形の設定
例えば、”192.0.2.4 www.example.com”のように記述します。TTLは次のように挿入することができます。 “2001:DB8::4 7200 www.example.com”
default値 | |
Debian stretch | – |
Official | – |
設定例
local-data-ptr: “192.0.2.3 www.example.com”
local-data-ptr: “192.0.2.3 7200 www.example.com”
local-data-ptr: “2001:DB8::4 www.example.com”
local-data-ptr: “2001:DB8::4 7200 www.example.com”
備考
BINDと違い、SOA,NS の応答は無し
内容
情報 このオプションは複数指定出来る
“define-tag: ” 及び “access-control-tag: “で指定した tag と [local-zone] とを関連付ける
情報 タグを複数設定する時は、タグとタグの間に半角スペースを用い設定する事
default値 | |
Debian stretch | – |
Official | – |
設定例
local-zone-tag: “example.com” “tag1”
local-zone-tag: “example.com” “tag2 tag3”
内容
[netblock] に設定されたアドレスからのクエリに対して “local-zone: ” の type をオーバーライドする
ローカルゾーン (タグ付きとタグなしの両方) に設定されたタイプと、”access-control-tag-action: “を使用して設定されたタイプに関係なく、この “local-zone:” タイプを使用する
default値 | |
Debian stretch | – |
Official | – |
設定例
local-zone-override: “example.com” 192.0.2.0/24 refuse
# ratelimit for uncached, new queries, this limits recursion effort.
# ratelimiting is experimental, and may help against randomqueryflood.
# if 0(default) it is disabled, otherwise state qps allowed per zone.
# レートリミット設定
# ratelimit: 0
#ratelimit: 100000
# ratelimits are tracked in a cache, size in bytes of cache (or k,m).
# レートリミットキャッシュ設定
# ratelimit-size: 4m
#ratelimit-size: 128m
# ratelimit cache slabs, reduces lock contention if equal to cpucount.
# 値は2の累乗に設定する事。CPUの数(に近い値)に設定する
# (スレッド数1~2では2、スレッド数3~4では4、5~8では8を指定)
# ratelimit-slabs: 4
#ratelimit-slabs: 2
# 0 blocks when ratelimited, otherwise let 1/xth traffic through
# ratelimit-factor: 10
# override the ratelimit for a specific domain name.
# give this setting multiple times to have multiple overrides.
# ratelimit-for-domain: example.com 1000
# override the ratelimits for all domains below a domain name
# can give this multiple times, the name closest to the zone is used.
# ratelimit-below-domain: com 1000
# DNS64 prefix. Must be specified when DNS64 is use.
# Enable dns64 in module-config. Used to synthesize IPv6 from IPv4.
# dns64-prefix: 64:ff9b::0/96
関連記事:
- unbound.conf (Ver 1.6.0-3+deb9u1) 説明 1/10 なお、これらの説明は Debian stretch (Unbound Ver 1.6.0-3+deb9u1) による Unbound...
- unbound.conf (Ver 1.6.0-3+deb9u1) 説明 10/10 – 参考サイト 仮公開 本公開時、パーマリンク変わります 参考サイト Unbound (本家) Unbound documentation Client based...
- DNS を BIND から Unbound へ移行作業中 ( view も使えるよ) viwe が使えないとの事で移行をひかえていたが、現在 view も使えるようになってる 私の使い方では view でなく、tag で済みそうだ 開発者に感謝!! ...
- Unbound access-control 対応表 & 要望 はじめに Unbound の access-control は “access-control: ” 部を設定していない状態でも “access-control-tag:...
- BIND9 と Unbound の digコマンド応答 サーバー宛 正引き ・レコード指定なし BIND dig @127.0.0.2 ntp1.example.jp ; <<>> DiG...
- Debian stretch の apt は非特権ユーザー (_apt) にて行われる 5.3.2. APTでの後方非互換性が生じるかもしれない変更について | 第5章 stretch で注意すべき点 – [www.debian.org] Debianリファレンス...
- DNSを活用した “広告” & “マルフェア” ブロック DNSを活用した “広告” & “マルフェア” ブロック 前から、特定クライアントにて特定サイトアクセスへのブロックは行っていた BINDからUnboundへの移行 … 続きを読む →...
コメント
unbound.conf (Ver 1.6.0-3+deb9u1) 説明 2/10 – Server Options — コメントはまだありません
HTML tags allowed in your comment: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>