Unbound - yusukew62/docs GitHub Wiki

Unbound

インストールから動作確認まで

# yum install unbound

unbound.confの設定

# cd /etc/unbound/
# cp -p unbound.conf unbound.conf.org
# vi unbound.conf

以下のとおり変更した

# diff -wu /etc/unbound/unbound.conf.org /etc/unbound/unbound.conf| head -n20
--- /etc/unbound/unbound.conf.org       2016-01-08 00:42:14.000000000 +0900
+++ /etc/unbound/unbound.conf   2017-02-21 01:09:23.620216778 +0900
@@ -46,6 +46,7 @@
        # interface: ::0@443
        # interface: 0.0.0.0@80
        # interface: ::0@80
+       interface: 0.0.0.0

        # enable this feature to copy the source address of queries to reply.
        # Socket options are not supported on all platforms. experimental.
@@ -152,6 +153,7 @@

        # Enable IPv6, "yes" or "no".
        # do-ip6: yes
+       do-ip6: no

        # Enable UDP, "yes" or "no".
        # NOTE: if setting up an unbound on tls443 for public use, you might want to
@@ -178,6 +180,7 @@
        # access-control: ::0/0 refuse
        # access-control: ::1 allow
        # access-control: ::ffff:127.0.0.1 allow
+       access-control: 192.168.1.0/24 allow

        # if given, a chroot(2) is done to the given directory.
        # i.e. you can chroot to the working directory, for example,
@@ -468,6 +471,50 @@
        # You can also add PTR records using local-data directly, but then
        # you need to do the reverse notation yourself.
        # local-data-ptr: "192.0.2.3 www.example.com"
+       local-zone: "yusukew62.net" static
+
+        local-data: "openstack01.yusukew62.net. IN A 192.168.1.16"
+        local-data: "ns-in01.yusukew62.net.     IN A 192.168.1.17"
+        local-data: "ns-in02.yusukew62.net.    IN A 192.168.1.18"
+        local-data: "ns-out01.yusukew62.net.  IN A 192.168.1.19"
+        local-data: "unbound01.yusukew62.net. IN A 192.168.1.20"
+        local-data: "ldap01.yusukew62.net.      IN A 192.168.1.21"
+        local-data: "ldap02.yusukew62.net.     IN A 192.168.1.22"
+        local-data: "docker2.yusukew62.net.   IN A 192.168.1.23"
+        local-data: "httpd01.yusukew62.net.   IN A 192.168.1.25"
+        local-data: "zabbix.yusukew62.net.    IN A 192.168.1.29"
+        local-data: "unbound02.yusukew62.net.   IN A 192.168.1.30"
+        local-data: "redmine01.yusukew62.net.   IN A 192.168.1.31"
+        local-data: "docker.yusukew62.net.    IN A 192.168.1.34"
+        local-data: "dhcp01.yusukew62.net.    IN A 192.168.1.36"
+        local-data: "vyos01.yusukew62.net.    IN A 192.168.1.38"
+        local-data: "samba01.yusukew62.net.    IN A 192.168.1.39"
+        local-data: "jenkins01.yusukew62.net.   IN A 192.168.1.48"
+        local-data: "zabbix3.yusukew62.net.   IN A 192.168.1.51"
+        local-data: "postfix01.yusukew62.net.   IN A 192.168.1.52"
+        local-data: "build01.yusukew62.net.     IN A 192.168.1.61"
+        local-data: "proxy01.yusukew62.net.     IN A 192.168.1.62"
+        local-data: "kibana01.yusukew62.net.    IN A 192.168.1.63"
+        local-data: "test2.yusukew62.net.     IN A 192.168.1.64"
+        local-data: "phpipam01.yusukew62.net.   IN A 192.168.1.65"
+        local-data: "zabbix2.yusukew62.net.   IN A 192.168.1.66"
+
+        local-data-ptr: "192.168.1.16 openstack01.yusukew62.net."
+        local-data-ptr: "192.168.1.17 ns-in01.yusukew62.net."
+        local-data-ptr: "192.168.1.18 ns-in02.yusukew62.net."
+        local-data-ptr: "192.168.1.19 ns-out01.yusukew62.net."
+        local-data-ptr: "192.168.1.20 unbound01.yusukew62.net."
+        local-data-ptr: "192.168.1.21 ldap01.yusukew62.net."
+        local-data-ptr: "192.168.1.22 ldap02.yusukew62.net."
+        local-data-ptr: "192.168.1.23 docker2.yusukew62.net."
+        local-data-ptr: "192.168.1.29 zabbix.yusukew62.net."
+        local-data-ptr: "192.168.1.30 unbound02.yusukew62.net."
+        local-data-ptr: "192.168.1.31 redmine01.yusukew62.net."
+        local-data-ptr: "192.168.1.34 docker.yusukew62.net."
+        local-data-ptr: "192.168.1.36 dhcp01.yusukew62.net."
+        local-data-ptr: "192.168.1.38 vyos01.yusukew62.net."
+        local-data-ptr: "192.168.1.39 samba01.yusukew62.net."
+        local-data-ptr: "192.168.1.48 jenkins01.yusukew62.net."
+        local-data-ptr: "192.168.1.49 samba02.yusukew62.net."
+        local-data-ptr: "192.168.1.51 zabbix3.yusukew62.net."
+        local-data-ptr: "192.168.1.52 postfix01.yusukew62.net."
+        local-data-ptr: "192.168.1.61 build01.yusukew62.net."
+        local-data-ptr: "192.168.1.62 proxy01.yusukew62.net."
+        local-data-ptr: "192.168.1.63 kibana01.yusukew62.net."
+        local-data-ptr: "192.168.1.64 test2.yusukew62.net."
+        local-data-ptr: "192.168.1.65 phpipam01.yusukew62.net."
+        local-data-ptr: "192.168.1.66 zabbix2.yusukew62.net."
+

        include: /etc/unbound/local.d/*.conf

@@ -556,3 +603,6 @@
 # You can now also dynamically create and delete forward-zone's using
 # unbound-control forward_add domain.com 1.2.3.4 5.6.7.8
 # unbound-control forward_remove domain.com 1.2.3.4 5.6.7.8
+forward-zone:
+       name: "."
+       forward-addr: 8.8.8.8
+       forward-addr: 8.8.4.4

iptablesの設定

# cp -p /etc/sysconfig/iptables /etc/sysconfig/iptables.org
# vi /etc/sysconfig/iptables

iptablesの設定確認

# diff -wu /etc/sysconfig/iptables.org /etc/sysconfig/iptables
--- /etc/sysconfig/iptables.org 2017-02-19 02:19:06.878999825 +0900
+++ /etc/sysconfig/iptables     2017-02-19 05:07:34.867586069 +0900
@@ -8,6 +8,8 @@
 -A INPUT -p icmp -j ACCEPT
 -A INPUT -i lo -j ACCEPT
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
+-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
+-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
 -A INPUT -j REJECT --reject-with icmp-host-prohibited
 -A FORWARD -j REJECT --reject-with icmp-host-prohibited
 COMMIT

unboundの再起動

# service unbound start

フォワード設定

特定ドメインをフォワードする場合は forward-zoneに設定を記載する
yusukew62.netはUnboundで定義し、Unbound(192.168.1.20)へ訊きに行く
yusukew62.comはfoward先のBINDで定義し、BIND(192.168.1.17)へ訊きに行く

@@ -556,3 +613,11 @@
 # You can now also dynamically create and delete forward-zone's using
 # unbound-control forward_add domain.com 1.2.3.4 5.6.7.8
 # unbound-control forward_remove domain.com 1.2.3.4 5.6.7.8
+forward-zone:
+       name: "yusukew62.com"
+       forward-addr: 192.168.1.17
+
+forward-zone:
+       name: "."
+       forward-addr: 8.8.8.8
+       forward-addr: 8.8.4.4

Unbound(192.168.1.20)で定義している内部向けDNSの動作確認

# nslookup proxy01.yusukew62.net
Server:         192.168.1.20
Address:        192.168.1.20#53

Name:   proxy01.yusukew62.net
Address: 192.168.1.62

foward先BIND(192.168.1.17)の動作確認

# nslookup proxy01.yusukew62.com
Server:         192.168.1.20
Address:        192.168.1.20#53

Non-authoritative answer:
Name:   proxy01.yusukew62.com
Address: 192.168.2.62

BINDには以下の通り設定して実験した

# ls -l /var/named/chroot/var/named/
合計 20
-rw-r--r--. 1 root root 1324  2月 21 08:31 2017 1.168.192.in-addr.arpa.db
-rw-r--r--. 1 root root 1324  2月 21 08:31 2017 2.168.192.in-addr.arpa.db
-rw-r--r--. 1 root root 1707  2月  7 07:01 2017 named.ca
-rw-r--r--. 1 root root 1334  2月 21 08:30 2017 yusukew62.com.db
-rw-r--r--. 1 root root 1334  2月 21 08:30 2017 yusukew62.net.db
# head -n20 1.168.192.in-addr.arpa.db
$TTL    86400
@       IN      SOA     yusukew62.net.  root.yusukew62.net.(
                                      2017022023 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
;
                IN      NS      yusukew62.net.
;
2               IN      PTR     yusukew62.net.
;
16              IN      PTR     openstack01.yusukew62.net.
17              IN      PTR     ns-in01.yusukew62.net.
18              IN      PTR     ns-in02.yusukew62.net.
19              IN      PTR     ns-out01.yusukew62.net.
20              IN      PTR     unbound01.yusukew62.net.
21              IN      PTR     ldap01.yusukew62.net.
22              IN      PTR     ldap02.yusukew62.net.
23              IN      PTR     docker2.yusukew62.net.
# head -n20 2.168.192.in-addr.arpa.db
$TTL    86400
@       IN      SOA     yusukew62.com.  root.yusukew62.com.(
                                      2017022023 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
;
                IN      NS      yusukew62.com.
;
2               IN      PTR     yusukew62.com.
;
16              IN      PTR     openstack01.yusukew62.com.
17              IN      PTR     ns-in01.yusukew62.com.
18              IN      PTR     ns-in02.yusukew62.com.
19              IN      PTR     ns-out01.yusukew62.com.
20              IN      PTR     unbound01.yusukew62.com.
21              IN      PTR     ldap01.yusukew62.com.
22              IN      PTR     ldap02.yusukew62.com.
23              IN      PTR     docker2.yusukew62.com.
# head -n20 yusukew62.net.db
$TTL            86400
@               IN      SOA     yusukew62.net.  root.yusukew62.net.(
                                              2017022023 ; Serial
                                              28800      ; Refresh
                                              14400      ; Retry
                                              3600000    ; Expire
                                              86400 )    ; Minimum
                IN NS    yusukew62.net.
                IN MX 10 mail.yusukew62.net.
@               IN A     192.168.1.17
www             IN A     192.168.1.17
ftp             IN A     192.168.1.17
mail            IN A     192.168.1.17
openstack01     IN A     192.168.1.16
ns-in01         IN A     192.168.1.17
ns-in02         IN A     192.168.1.18
ns-out01        IN A     192.168.1.19
unbound01       IN A     192.168.1.20
ldap01          IN A     192.168.1.21
ldap02          IN A     192.168.1.22
# head -n20 yusukew62.com.db
$TTL            86400
@               IN      SOA     yusukew62.com.  root.yusukew62.com.(
                                              2017022023 ; Serial
                                              28800      ; Refresh
                                              14400      ; Retry
                                              3600000    ; Expire
                                              86400 )    ; Minimum
                IN NS    yusukew62.com.
                IN MX 10 mail.yusukew62.com.
@               IN A     192.168.2.17
www             IN A     192.168.2.17
ftp             IN A     192.168.2.17
mail            IN A     192.168.2.17
openstack01     IN A     192.168.2.16
ns-in01         IN A     192.168.2.17
ns-in02         IN A     192.168.2.18
ns-out01        IN A     192.168.2.19
unbound01       IN A     192.168.2.20
ldap01          IN A     192.168.2.21
ldap02          IN A     192.168.2.22

unbound.conf (ja)

#
# unbound.conf(5)のマニュアルページを参照してください。
#
# これはコメントです。

# これを使用して、ファイルに他のテキストを組み込みます。
# include: "otherfile.conf"

# server句は、主なパラメータを設定します。
server:
	# 空白は必要ありませんが、よりきれいに見えます。

	# 冗長番号、0は最も冗長ではありません。 1がデフォルトです。
	verbosity:1

	# N秒ごとに(すべてのスレッドの)ログに統計情報を出力します。
	# ""に設定するか、無効にするには0を設定します。デフォルトは無効です。
	# muninプラグインに必要
	statistics-interval:0

	# 印刷後に累積統計をクリアすることなく累積統計を有効にします。
	# muninプラグインに必要
	statistics-cumulative:no

	# 拡張統計(クエリの種類、回答コード、ステータス)を有効にする
	# 非結合コントロールから印刷された。スピードのため、デフォルトではオフになります。
	# muninプラグインに必要
	extended-statistics: yes

	# 作成するスレッドの数。 1はスレッドを無効にします。
	num-threads:2

	# ip-addressによる照会に応答するインターフェースを指定します。
	# デフォルトでは、localhost(127.0.0.1と:: 1)を待ち受けます。
	# 使用可能なすべてのインターフェイスにバインドするには、0.0.0.0と:: 0を指定します。
	# 新しい 'interface:'というラベルのついた行にすべてのインターフェースを指定してください。
	# リッスン時にリッスンインターフェイスは変更されず、再起動時にのみ変更されます。
	# interface: 0.0.0.0
	# interface: :: 0
	# interface: 192.0.2.153
	# interface: 192.0.2.154
	# interface: 2001:DB8 :: 5
	# 
	# tls上のdnsとポート80上のDNSのために
	# interface: 0.0.0.0443
	# interface: :: 0 @ 443
	# interface: 0.0.0.0@80
	# interface: :: 0 @ 80

	# この機能を有効にして、返信するクエリの送信元アドレスをコピーします。
	# ソケットオプションは、すべてのプラットフォームでサポートされているわけではありません。実験的。
	# interface-automatic:はい
	#
	# NOTE: interface 0.0.0.0 または ::0 を指定する場合は、このオプションを有効にします。
	# NOTE: デフォルトインストール時に*聞かないようにFedoraポリシーごとに無効にする
	# NOTE: デフォルト以外のポート(80/443など)にデプロイする場合は、これを無効にする必要があります
	interface-automatic: no

	# からの質問に答えるためのポート
	# port: 53

	# 権限を委譲するためにインターフェイスを指定する
	# ipアドレスからのサーバ。存在しない場合、デフォルト(すべて)のインタフェース
	# 使用されている。すべてのインターフェイスを 'outgoing-interface:'行に指定します。
	# outgoing-interface: 192.0.2.153
	# outgoing-interface: 2001:DB8::5
	# outgoing-interface: 2001:DB8::6

	# スレッドごとに割り当てるポートの数、スレッドのサイズを決定する
	# ポート範囲を同時に開くことができます。
	# outgoing-range: 4096

	# バインドされていないポート番号またはポート範囲を
	# 発信インターフェイスを使用して発信クエリを作成します。
	# outgoing-port-permit: 32768

	# ポート番号またはポート範囲の使用をバインド解除します。
	# 発信インターフェイスを使用して発信クエリを作成します。
	# これを使用して、unboundがUDPポートを取得しないようにします。
	# このコンピュータ上の他のサーバーに必要です。デフォルトは避けることです
	# IANAによって割り当てられたポート番号。
	# outgoing-port-avoid: "3200-3208"

	# スレッドごとに保持する送信tcpバッファの同時送信数。
	# outgoing-num-tcp: 10

	# スレッドごとに保持する到着する同時tcpバッファの数。
	# incoming-num-tcp: 10

	# UDPポート53着信用のバッファサイズ(SO_RCVBUFソケットオプション)。
	# 0はシステムのデフォルト値です。混雑したサーバーのクエリスパイクをキャッチするには、4mを使用します。
	# so-rcvbuf: 0

	# UDPポート53の送信用バッファサイズ(SO_SNDBUFソケットオプション)。
	# 0はシステムのデフォルト値です。非常に忙しいサーバーではスパイクを処理するのに4mを使用します。
	# so-sndbuf: 0

	# UDPピアにアドバタイズするEDNSリアセンブリバッファ(実際のバッファ
	# msg-buffer-sizeで設定されます)。 1480は断片化(タイムアウト)を解決できます。
	# edns-buffer-size: 4096

	# DNSデータを処理するためのバッファサイズ。これより大きなメッセージはありません
	# サイズはUDPまたはTCPによって送受信できます。バイト単位。
	# msg-buffer-size: 65552

	# メッセージキャッシュに使用するメモリ量。
	# プレーン値をバイト単位で指定するか、k、mまたはGを付加することができます。デフォルトは "4Mb"です。
	# msg-cache-size: 4m

	# メッセージキャッシュに使用するスラブの数。
	# スラブの数は2の累乗でなければなりません。
	# より多くのスラブはロックの競合を減らしますが、メモリの断片化を軽減します。
	# msg-cache-slabs: 4

	# スレッドがサービスを取得するクエリの数
	# スレッドあたりのnum-queries: 1024

	# 非常にビジー状態の場合、50%のクエリが完了まで実行され、50%がタイムアウトをmsec
	# jostle-timeout: 200

	# RRsetキャッシュに使用するメモリ量。
	# プレーン値をバイト単位で指定するか、k、mまたはGを付加することができます。デフォルトは "4Mb"です。
	# rrset-cache-size: 4m

	# RRsetキャッシュに使用するスラブの数。
	# スラブの数は2の累乗でなければなりません。
	# より多くのスラブはロックの競合を減らしますが、メモリの断片化を軽減します。
	# rrset-cache-slabs: 4

	# 生存時間(TTL)の値の下限(秒)。デフォルトは0です。
	# 1時間以上が古くなったデータのために簡単に問題を起こす可能性がある場合。
	# cache-min-ttl: 0

	# RRsetsの生存時間(TTL)とキャップ内のメッセージ
	# キャッシュ。アイテムは長い間キャッシュされません。すぐに。
	# cache-max-ttl: 86400

	# キャッシングされたラウンドトリップ時間の生存時間(TTL)値、跛行
	# およびホストのEDNSバージョン情報すぐに。
	# infra-host-ttl: 900

	# インフラストラクチャキャッシュに使用するスラブの数。
	# スラブの数は2の累乗でなければなりません。
	# より多くのスラブはロックの競合を減らしますが、メモリの断片化を軽減します。
	# infra-cache-slabs: 4

	# キャッシュされるホストの最大数(ラウンドトリップ、EDNS、ラメ)。
	# infra-cache-numhosts: 10000

	# IPv4を有効にする。「はい」または「いいえ」。
	# do-ip4: yes

	# IPv6を有効にする、「はい」または「いいえ」。
	# do-ip6: yes

	# UDPを有効にする、「はい」または「いいえ」。
	# 注:公共の利用のためにtls443にバインドされていない場合は、
	# DNS増幅攻撃で使用されないようにUDPを無効にします。
	# do-udp: yes

	# TCPを有効にする、「はい」または「いいえ」。
	# do-tcp: yes

	# アップストリーム接続ではTCPのみ(UDPなし)、「はい」または「いいえ」
	# トンネリングシナリオに役立ちます。
	# tcp-upstream: no

	# ターミナルから切り離し、バックグラウンドで「はい」または「いいえ」を実行します。
	# do-daemonize: yes

	# どのクライアントが(再帰的な)問合せを行うことができるかを制御する
	# このサーバーに接続します。 / sizeとactionを持つクラスレスネットブロックを指定します。
	# デフォルトでは、localhostを除いてすべてが拒否されます。
	# 拒否(メッセージをドロップ)、拒否(丁寧なエラー応答)、
	# allow(再帰的ok)、allow_snoop(再帰的および非再帰的ok)
	# 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

	# 指定されていれば、与えられたディレクトリにchroot(2)が実行されます。
	# つまり、作業ディレクトリにchrootすることができます。たとえば、
	# セキュリティを強化しますが、すべてのファイルがそのディレクトリにあることを確認してください。
	# 
	# chrootが有効になっている場合は、configfileを渡す必要があります(
	# コマンドライン)を元のルートから完全なパスとして表示します。後に
	# chrootが実行されました。設定の現在無効な部分です
	# 再ロード後にconfigを再読み込みできるように、ファイルパスが削除されます。
	# 
	# 他のすべてのファイルパス(作業ディレクトリ、ログファイル、roothints、および
	# キーファイル)は、いくつかの方法で指定できます。
	# o新しいルートに相対的な絶対パスとして。
	# oを作業ディレクトリの相対パスとして指定します。
	# o元のルートとの相対的な絶対パス。
	# 最後のケースでは、経路は未使用部分を除去するように調整される。
	# 
	# pidファイルは絶対パスでchrootの外に置くことができます。
	# chrootを実行して権限を削除する直前に書かれています。
	# 
	# さらに、unboundは/ dev / randomにアクセスする必要があります(エントロピー用)。
	# これを行う方法は、お使いのOSに固有のものです。
	# 
	# ""を指定すると、chrootは実行されません。パスは/で終わってはいけません。
	# chroot: "/var/lib/unbound"
	chroot: ""

	# 指定されていれば、ユーザ特権は(ポートをバインドした後に)削除されます。
	# 与えられたユーザ名が仮定されます。デフォルトはユーザ "unbound"です。
	# あなたが ""与えるなら、特権は落とされません。
	username: "unbound"

	# 作業ディレクトリ。この設定の相対ファイルは次のとおりです。
	# このディレクトリに対して作業ディレクトリを指定した場合 ""
	# 変更されません。
	directory: "/etc/unbound"

	# ログファイル ""はstderrへのログを意味します。
	# このオプションを使用すると、use-syslogが「no」に設定されます。
	# logfile: ""

	# syslog(3)にログインします。ログ機能LOG_DAEMONは、
	# IDは "unbound"でログに記録します。 yesの場合、ログファイルが上書きされます。
	# use-syslog: yes

	# UTCタイムスタンプをASCII形式でログファイルに出力します。デフォルトは秒単位のエポックです。
	# log-time-ascii: yes

	# pidファイルchroot/work dirの外側の絶対パスにすることができます。
	pidfile: "/var/run/unbound/unbound.pid"

	# rootヒントを読むためのファイル。
	# ftp://FTP.INTERNIC.NET/domain/named.cacheから入手してください
	root-hints: ""

	# id.serverおよびhostname.bindクエリに応答しないようにします。
	# hide-identity: no

	# version.serverおよびversion.bindクエリに応答しないようにします。
	hide-version: no

	# 報告するアイデンティティ「」またはデフォルトのままにしておくと、ホスト名が返されます。
	# identity: ""

	# 報告するバージョンパッケージバージョンを返すには、 ""またはデフォルトのままにしてください。
	version: ""

	# ターゲットフェッチポリシー
	# 依存度ごとのポリシーを記述する一連の整数。
	# リスト内の値の数によって、最大の依存関係が決まります
	# リサイクルが諦める前に追求する深さ。各整数を意味します:
	# 	-1:すべてのターゲットを機敏にフェッチし、
	# 	0:オンデマンドでフェッチする、
	# 	正の価値:多くのターゲットを機敏にフェッチします。
	# 数字のリストは引用符( "")で囲みます。
	# target-fetch-policy: "3 2 1 0 0"

	# 非常に小さいEDNSバッファサイズに対して強化します。
	# harden-short-bufsize: no

	# あいまいでない大規模な照会に対して強化を図る。
	# harden-large-queries: no

	# スプーフィングの試みを避けるために、ゾーン外のrrsetsに対して強化を行います。
	harden-glue: yes

	# dnssecで取り除かれたデータを受け取ることを防ぎます。あなたがそれを回すならば
	# オフ、trustanchorのためのdnskeyデータの検証に失敗する
	# そのゾーンのための安全ではないモードを起動します(トランザクションなし)。
	# デフォルトでは、トラストアンカーゾーンのdnssecデータを要求します。
	harden-dnssec-stripped: yes

	# dnssecで署名されたnxdomainの名前に該当するクエリに対して強化します。
	harden-below-nxdomain: yes

	# 追加のクエリを実行して参照パスを強化する
	# インフラストラクチャデータ。応答を検証します(可能な場合)。
	# ルックアップがサーバーに負担をかけるため、デフォルトはオフです。実験的
	# draft-wijngaards-dnsext-resolver-side-mitigationの実装。
	harden-referral-path: yes

	# クエリで0x20でエンコードされたランダムなビットを使用して、なりすましの試みを阻止します。
	# この機能は、draft dns-0x20の実験的な実装です。
	# (これは現在GoDaddyのすべての顧客ドメインで失敗しているため無効になっています)
	 use-caps-for-id: no

	# これらのアドレスのプライバシーを守る。答えからそれらをはがします。
	# それは、DNSSEC検証に偽とマークすることがあります。
	# 'DNS Rebinding'(ネットワークプロキシとしてブラウザを使用)から保護します。
	# 'プライベートドメイン'と 'ローカルデータ'の名前だけが持つことができます
	# これらのプライベートアドレス。デフォルトはありません。
	# private-address: 10.0.0.0/8
	# private-address: 172.16.0.0/12
	# private-address: 192.168.0.0/16
	# private-address: 192.254.0.0/16
	# private-address: fd00::/8
	# private-address: fe80::/10

	# ドメイン(およびそのサブドメイン)にプライベートアドレスを含めることを許可します。
	# ローカルデータステートメントにはプライベートアドレスも含めることができます。
	# private-domain: "example.com"

	# ゼロ以外の場合、不要な返信は統計だけで報告されるだけでなく、
	# 実行中の合計はスレッドごとに保持されます。それが
	# 警告が印刷され、守備措置が講じられ、
	# キャッシュはクリアされ、潜在的な毒をフラッシュします。
	# 推奨値は10000000です。デフォルトは0(無効)です。
	unwanted-reply-threshold: 10000000

	# 次のアドレスを照会しないでください。 DNSクエリはそこに送られません。
	# エントリごとに1つのアドレスをリストします。 /sizeを指定したクラスレスネットブロックのリスト、
	# do-not-query-address: 127.0.0.1/8
	# do-not-query-address: ::1

	# 上記のデフォルトのdo-not-query-addressエントリが存在する場合は、
	# そうでない場合は、localhostを問い合わせることができます(テストとデバッグ用)。
	do-not-query-localhost: yes

	# そうであれば、期限切れのメッセージキャッシュエントリのプリフェッチを実行します。
	prefetch: yes

	# そうであれば、通常のルックアップに隣接するキールックアップを実行します。
	prefetch-key: yes

	# はいの場合、Unboundは応答としてRRSetの順序を回転します。
	rrset-roundrobin: yes

	# はいの場合、Unboundは権限/追加セクションを挿入しません
	# それらのセクションが必要でないときに応答メッセージに変換します。
	minimal-responses: yes

	# サーバーのモジュール構成。識別子を持つ文字列
	# スペースで区切られています。 「イテレータ」または「バリデータイテレータ」
	# module-config: "validator iterator"

	# DLVの信頼キーを含むファイル。 trust-anchor-fileと同じ形式です。
	# 1つのDLVしか設定できません。ルートからダウンして信頼されます。
	# https://secure.isc.org/ops/dlv/dlv.isc.org.keyからダウンロード
	# 
	# ISCのDLVレジストリは近い将来廃止予定です。
	# デフォルトの構成では使用されません。 ISCのDLVの使用
	# レジストリはお勧めしません。
	# dlv-anchor-file: "/etc/unbound/dlv.isc.org.key"

	# 検証のための信頼できるキーを持つファイル。複数のファイルを指定する
	# いくつかのエントリー、エントリーごとに1つのファイル。
	# DSおよびDNSKEYエントリを持つゾーンファイル形式。
	# trust-anchor-file: ""

	# 信頼できるキーを持つファイル、RFC5011プローブを使用して更新されたファイル、
	# trust-anchor-fileのような初期ファイルは、メタデータを格納します。
	# 複数のゾーンを追跡するには、ドメイン名ごとに1つずつ複数のエントリを使用します。
	# auto-trust-anchor-file: ""

	# 検証のための信頼できるキー。 DSまたはDNSKEY。 RRを
	# 一行は、 ""で囲まれています。 TTLは無視されます。 classはデフォルトです。
	# (これらの例は2007年8月のものであり、もう有効ではないかもしれません)。
	# トラストアンカー:「nlnetlabs.nl DNSKEY 257 3 5 AQPzzTWMz8qSWIQlfRnPckx2BiVmkVN6LPupO3mbz7FhLSnm26n6iG9N Lby97Ji453aWZY3M5 / xJBSOS2vWtco2t8C0 + xeO1bc / d6ZTy32DHchpW 6rDH1vp86Ll + ha0tmwyy9QP7y2bVw5zSbFCrefk8qCUBgfHm9bHzMG1U BYtEIQ ==。 "
	# trust-anchor: "jelte.nlnetlabs.nl。DS 42860 5 1 14D739EB566D2B1A5E216A0BA4D17FA9B038BE4A"

	# 検証のための信頼できるキーを持つファイル。複数のファイルを指定する
	# いくつかのエントリー、エントリーごとに1つのファイル。 like trust-anchor-fileのように
	# ファイル形式は異なります。形式はBIND-9スタイル形式ですが、
	# トラステッドキー{名前フラグ原型 "キー"; };句が読み込まれます。
	# trusted-keys-file: ""
	# 
	# trusted-keys-file: /etc/unbound/rootkey.bind
	trusted-keys-file: /etc/unbound/keys.d/*.key
	auto-trust-anchor-file: "/var/lib/unbound/root.key"

	# 信頼の連鎖を無視する。ドメインは安全でないものとして扱われます。
	# domain-insecure: "example.com"

	# 検証の日付を特定の固定日付で上書きします。
	# 署名の開始をデバッグしている場合を除き、これを設定しないでください
	# および満了。 ""または "0"は機能をオフにします。
	# val-override-date: ""

	# 偽のデータ、rrsets、メッセージの生存時間。これは回避する
	# 時間間隔が終了するまで、再検証の一部。である。
	# val-bogus-ttl: 60

	# 署名の開始日と有効期限はオフにすることができます
	# 地元の時計からの署名の生涯の10%
	# この余裕は、最小値と最大値で制限されます。すぐに。
	# val-sig-skew-min: 3600
	# val-sig-skew-max: 86400

	# 安全なメッセージの追加セクションもまた清潔に保たれるべきですか?
	# 安全でないデータ。このバリデータのユーザーをから保護するのに便利
	# 潜在的な偽のデータを追加セクションに追加します。すべての符号なしデータ
	# 安全なメッセージから削除されます。
	val-clean-additional: yes

	# 許可モードをオンにして、偽のメッセージを許可します。したがって、メッセージ
	# セキュリティチェックが失敗したものはクライアントに返され、
	# SERVFAILの代わりに。それでもセキュリティチェックを実行します。
	# 興味深いログファイルが生成され、可能であればADビットが
	# メッセージが安全であると応答します。デフォルトはオフです。
	# 注:これをオンにすると、すべてのDNSSECセキュリティが無効になります。
	val-permissive-mode: no

	# バリデータのログがあなたの診断の検証に失敗しました。
	# 0:オフ。 1:失敗したユーザークエリごとの行。 2:理由とIPが悪い。
	val-log-level: 1

	# NSEC3の最大繰り返し回数を設定することは可能です
	# キーサイズ。線形検索が行われるので、このテーブルは非常に短くしておいてください。
	# より大きなカウントを持つNSEC3のメッセージは安全でないとマークされます。
	# キーの値とカウントの値を昇順に並べます。
	# val-nsec3-keysize-iterations: "1024 150 2048 500 4096 2500"

	# auto-trust-anchor-fileのプロービングに、ttlの後にアンカーを追加するよう指示します。
	# add-holddown: 2592000 30日間

	# ttlの後にアンカーになるようにauto-trust-anchor-fileのプロービングを指示します。
	# del-holddown: 2592000 30日間

	# auto-trust-anchor-fileプロービングは、ttl後に足りないアンカーを削除します。
	# 値0を指定すると、足りないアンカーは削除されません。
	# keep-missing: 31622400 366日

	# キーキャッシュに使用するメモリの量
	# プレーン値をバイト単位で指定するか、k、mまたはGを付加することができます。デフォルトは "4Mb"です。
	# key-cache-size: 4m

	# キーキャッシュに使用するスラブの数。
	# スラブの数は2の累乗でなければなりません。
	# より多くのスラブはロックの競合を減らしますが、メモリの断片化を軽減します。
	key-cache-slabs: 4

	# 負のキャッシュに使用するメモリの量(DLVに使用)
	# プレーン値をバイトで指定するか、k、mまたはGを付加することができます。デフォルトは "1Mb"です。
	neg-cache-size: 1m

	# 多数のローカルサービスゾーンを設定できます。
	# 	local-zone: <ゾーン> <タイプ>
	# 	local-data:  "<リソースレコード文字列>"
	# o 拒否はローカルデータを提供します(存在する場合)。それ以外の場合は、クエリが削除されます。
	# o ごみはローカルデータを提供します(存在する場合)。そうでない場合、エラーが返されます。
	# o staticはローカルデータを提供し、そうでなければnxdomainまたはnodataの回答を提供します。
	# o transparentはローカルデータを扱いますが、通常は他の名前を解決します
	# o リダイレクトは、ゾーン内のサブドメインのゾーンデータを処理します。
	# o nodefaultを使用して、AS112ゾーンを正常に解決できます。
	# o typetransparentは通常、他の型や他の名前を解決します。
	# 
	# デフォルトはローカルホストアドレス、127.0.0.1と:: 1の逆
	# AS112ゾーンの場合はnxdomainです。これらのゾーンのいずれかを設定した場合
	# デフォルトの内容は省略されるか、 'nodefault'で省略することができます。
	# 
	# local-zoneを指定せずにlocal-dataを設定すると、
	# デフォルトでは、透過的なローカルゾーンがデータ用に作成されます。
	# 
	# ローカルに配信されるデータを
	# local-zone: "ローカル"静的
	# local-data: "mycomputer.local。IN A 192.0.2.51"
	# local-data: テキストレコードの 'mytext.local TXT'コンテンツ"
	# 
	# 特定のクエリを
	# local-data: "adserver.example.com A 127.0.0.1"
	# 
	# ドメインを固定アドレスにリダイレクトするには
	# (これにより、example.com、www.example.comなどはすべて192.0.2.3になります)
	# local-zone: "example.com"リダイレクト
	# local-data: "example.com A 192.0.2.3"
	# 
	# PTRレコード "IPv4名"または "IPv6名"を作成するための略語。
	# ローカルデータを使用してPTRレコードを直接追加することもできますが、
	# 自分で逆表記をする必要があります。
	# local-data-ptr: "192.0.2.3 www.example.com"

	include: /etc/unbound/local.d/*.conf

	# SSLを介したサービスクライアント(TCPソケット上)
	# SSLストリーム使用する証明書と秘密鍵を与えます。
	# デフォルトは ""(無効)です。再起動を有効にする必要があります。
	# ssl-service-key: "/etc/unbound/unbound_server.key"
	# ssl-service-pem: "/etc/unbound/unbound_server.pem"
	# ssl-port: 443

	# SSLを介して上流側にリクエストします(SSLストリーム内のプレーンDNSを使用)。
	# デフォルトはnoです。アンバウンドコントロールでオン/オフを切り替えることができます。
	# ssl-upstream: no

## Pythonの設定セクション。有効にする:
## o コンパイルする前にconfigureに--with-pythonmoduleを使う。
## o 有効にするには、module-config文字列(上記)にpythonを記述します。
## o を実行し、pythonスクリプトを実行します。
#Python:
#	# ロードするスクリプトファイル
#	# python-script: "/etc/unbound/ubmodule-tst.py"


# リモートコントロールの設定セクション。
remote-control:
	# ここでunbound-control(8)でリモートコントロールを有効にしてください。
	# unbound-control-setupで鍵と証明書を設定します。
	# Note: unbound-muninパッケージに必要です
	control-enable: yes

	# どのインターフェースがリモートコントロールのために聴かれるか。
	# 0.0.0.0と:: 0を指定してすべてのインターフェースを待ちます。
	# control-interface: 127.0.0.1
	# control-interface: ::1

	# リモートコントロール操作のポート番号。
	# control-port: 953

	# アンバウンドサーバーキーファイル。
	server-key-file: "/etc/unbound/unbound_server.key"

	# バインドされていないサーバー証明書ファイル。
	server-cert-file: "/etc/unbound/unbound_server.pem"

	# バインドされていない制御キーファイル。
	control-key-file: "/etc/unbound/unbound_control.key"

	# 非バインド制御証明書ファイル。
	control-cert-file: "/etc/unbound/unbound_control.pem"

# スタブおよびフォワードゾーン

include:/etc/unbound/conf.d/*.conf

# スタブゾーン。
# 以下のようなエントリを作成して、 'example.com'と
# 'example.org'は指定されたネームサーバーのリストに移動します。ゼロ個以上をリストする
# ホスト名またはIPアドレスによるネームサーバ。 stub-primeをyesに設定すると、
# リストはプライミングヒントとして扱われます(デフォルトはnoです)。
# stub-zone:
# 	name: "example.com"
# 	stub-addr: 192.0.2.68
# 	stub-prime: "no"
# stub-zone:
# 	name: "example.org"
# 	stub-host: ns.example.com.
# また、スタブゾーンを動的に作成および削除することもできます。
# unbound-control stub_add domain.com 1.2.3.4 5.6.7.8
# unbound-control stub_remove domain.com 1.2.3.4 5.6.7.8

# フォワードゾーン
# 以下のようなエントリを作成して、 'example.com'と
# 'example.org'は指定されたサーバのリストに移動します。これらのサーバーは処理する必要があります
# 他のネームサーバーへの再帰。 0個以上のネームサーバをホスト名でリストする
# またはipaddressで指定します。名前が「。」のエントリを使用します。すべてのクエリを転送します。
# forward-firstを有効にすると、失敗した場合に転送なしで試行されます。
# forward-zone: 
# 	name: "example.com"
# 	forward-addr:192.0.2.68
# 	forward-addr:192.0.2.73@5355 # ポート5355に転送します。
# 	forward-first: no
# forward-zone:
# 	name: "example.org"
# 	forward-host: fwd.example.com
# 
# また、フォワードゾーンの作成や削除をダイナミックに行うこともできます。
# unbound-control forward_add domain.com 1.2.3.4 5.6.7.8
# unbound-control forward_remove domain.com 1.2.3.4 5.6.7.8

ldns rpmパッケージ作成

まずは ldnsのtarボールからrpmパッケージが作れるか試す

# curl -sO https://www.nlnetlabs.nl/downloads/ldns/ldns-1.6.17.tar.gz
# ls
# rpmbuild -ta ldns-1.6.17.tar.gz

エラーが出たのでspecファイルを修正して試す

# tar zxvf ldns-1.6.17.tar.gz
# ls
# find ./ldns-1.6.17 -name "*spec"
# cp ldns-1.6.17/packaging/fedora/ldns.spec ldns-1.6.17/packaging/fedora/ldns.spec.org
# vim ldns-1.6.17/packaging/fedora/ldns.spec

以下の通り変更した

# diff -wu ldns.spec.org ldns.spec
--- ldns.spec.org       2017-02-14 10:02:41.661665091 +0900
+++ ldns.spec   2017-02-14 10:06:16.073666542 +0900
@@ -7,11 +7,11 @@

 Summary: Lowlevel DNS(SEC) library with API
 Name: ldns
-Version: 1.6.13
+Version: 1.6.17
 Release: 1%{?dist}
 License: BSD
 Url: http://www.nlnetlabs.nl/%{name}/
-Source: http://www.nlnetlabs.nl/downloads/%{%name}/%{name}-%{version}.tar.gz
+Source: http://www.nlnetlabs.nl/downloads/%{name}/%{name}-%{version}.tar.gz
 Group: System Environment/Libraries
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires: perl, libpcap-devel, openssl-devel , gcc-c++, doxygen,

'\r'があるためでエラーがでていたので、削除して作成を完了とする

cat ~/rpmbuild/SPECS/ldns.spec | tr -d \\r > ldns-1.6.17/packaging/fedora/ldns.spec

tarボールを再作成

# tar zcvf ldns-1.6.17.tar.gz ldns-1.6.17/

tarボールをもとにrpmパッケージを作成

# rpmbuild -ta ldns-1.6.17.tar.gz

作成されたことを確認

# tree /root/rpmbuild/RPMS/x86_64/
/root/rpmbuild/RPMS/x86_64/
├── ldns-1.6.17-1.el6.x86_64.rpm
├── ldns-debuginfo-1.6.17-1.el6.x86_64.rpm
├── ldns-devel-1.6.17-1.el6.x86_64.rpm
└── ldns-python-1.6.17-1.el6.x86_64.rpm

0 directories, 4 files

unbound rpmパッケージ作成

まずは unboundのtarボールからrpmパッケージが作れるか試す

# curl -sO http://unbound.net/downloads/unbound-1.6.0.tar.gz
# rpmbuild -ta unbound-1.6.0.tar.gz

エラーが出たのでspecファイルを修正して試す

# tar zxvf unbound-1.6.0.tar.gz
# ls
# find ./unbound-1.6.0 -name "*spec"
# cp -p unbound-1.6.0/contrib/unbound.spec unbound-1.6.0/contrib/unbound.spec.org
# mv unbound-1.6.0.tar.gz unbound-1.6.0.tar.gz.bk
# vim unbound-1.6.0/contrib/unbound.spec

以下の通り変更した

# diff -wu unbound.spec.org unbound.spec
--- unbound.spec.org    2012-09-27 18:37:04.000000000 +0900
+++ unbound.spec        2017-02-19 00:24:51.330218104 +0900
@@ -1,6 +1,6 @@
 Summary: Validating, recursive, and caching DNS resolver
 Name: unbound
-Version: 1.4.18
+Version: 1.6.0
 Release: 1%{?dist}
 License: BSD
 Url: http://www.nlnetlabs.nl/unbound/

tarボールを再作成

# tar zcf unbound-1.6.0.tar.gz unbound-1.6.0

依存関係のあるパッケージをインストールする

  • ldns-devel
  • expat-devel
# rpm -ivh ldns-devel-1.6.17-1.el6.x86_64.rpm
# yum install expat-devel

tarボールをもとにrpmパッケージを作成

# rpmbuild -ta unbound-1.6.0.tar.gz

作成されたことを確認

# tree rpmbuild/RPMS/
rpmbuild/RPMS/
└── x86_64
    ├── ldns-1.6.17-1.el6.x86_64.rpm
    ├── ldns-debuginfo-1.6.17-1.el6.x86_64.rpm
    ├── ldns-devel-1.6.17-1.el6.x86_64.rpm
    ├── ldns-python-1.6.17-1.el6.x86_64.rpm
    ├── unbound-1.6.0-1.el6.x86_64.rpm
    └── unbound-debuginfo-1.6.0-1.el6.x86_64.rpm

1 directory, 6 files

参照

  • ダウンロードリンク
⚠️ **GitHub.com Fallback** ⚠️