lost and found ( for me ? )

Unbound 1.3.0 has been released on June 11th 2009

ということで、ソースからインストールしてみました。
OS: Fedora 11

5ヶ月ぶりくらいのリリースだ。

主な追加機能:

1. Windows 32bit版のリリース ( source )
2. 権威サーバに問い合わせ中のクエリを表示できる
3. 権威サーバに問い合わせ中のクエリを破棄できる

かな。

インストールは簡単。

731 tar xzvf unbound-latest.tar.gz
732 cd unbound-1.3.0/
734 ./configure
735 make
736 make install
737 date
738 history

リモートコントロールできるように、unbound.conf の修正 and unbound-control-setup
を実行。( BIND の rndc コマンドみたいなもの )

- unbound.conf

control-enable: yes

# unbound-control-setup
setup in directory /usr/local/etc/unbound
generating unbound_server.key
Generating RSA private key, 1024 bit long modulus
...........................................++++++
.....................++++++
e is 65537 (0x10001)
generating unbound_control.key
Generating RSA private key, 1024 bit long modulus
.++++++
.++++++
e is 65537 (0x10001)
create unbound_server.pem (self signed certificate)
create unbound_control.pem (signed client certificate)
Signature ok
subject=/CN=unbound-control
Getting CA Private Key
Setup success. Certificates created. Enable in unbound.conf file to use
#


さて起動

# unbound-control start

起動しとらん。

# unbound-control status
[1245941094] unbound-control[22024:0] debug: address 127.0.0.1 port 953
[1245941094] unbound-control[22024:0] error: connect: Connection refused
unbound is stopped

ログを確認。

パーミッションがいけなさそう。

arizona unbound: [22022:0] error: Error for server-cert-file: /usr/local/etc/unbound/unbound_server.pem
arizona unbound: [22022:0] error: Error in SSL_CTX use_certificate_file crypto error:0200100D:system library:fopen:Permission denied
arizona unbound: [22022:0] error: and additionally crypto error:20074002:BIO routines:FILE_CTRL:system lib
arizona unbound: [22022:0] error: and additionally crypto error:140AD002:SSL routines:SSL_CTX_use_certificate_file:system lib
arizona unbound: [22022:0] fatal error: Could not initialize main thread

# ls -l /usr/local/etc/unbound/unbound_server.pem
-rw-r----- 1 root root /usr/local/etc/unbound/unbound_server.pem

ユーザ unbound , グループ unbound で起動するから所有者をかえればいいのかな。

unbound ユーザ/グループは存在する

# egrep unbound /etc/passwd /etc/group
/etc/passwd:unbound:x:489:482:Unbound DNS resolver:/etc/unbound:/sbin/nologin
/etc/group:unbound:x:482:


server.key , server.pem の所有者を変更

# chown unbound.unbound /usr/local/etc/unbound/unbound_server.pem
# chown unbound.unbound /usr/local/etc/unbound/unbound_server.key

再度起動。

# unbound-control start

Okay.

# unbound-control status
version: 1.3.0
verbosity: 1
threads: 1
modules: 2 [ validator iterator ]
uptime: 3 seconds
unbound (pid 22051) is running...

2. 権威サーバに問い合わせ中のクエリを表示できる

とは?

man unbound-control をみるとこんな説明が。

dump_requestlist
Show what is worked on. Prints all queries that the server is
currently working on. Prints the time that users have been
waiting. For internal requests, no time is printed. And then
prints out the module status.

コマンドを実行しても何も表示されない。

説明を見ると処理中のクエリの表示だから、
なにかクエリを流していないとダメなのかな。。

# unbound-control dump_requestlist
thread #0
# type cl name seconds module status

負荷ツールをインストール。

# yum install -y dnsperf.i586

dnsperf って Nominum社が開発したみたい。
Nominumって商用DNSサーバを開発しているところみたい。
高パフォーマンス、セキュアらしい。みたい。

キャッシュサーバのパフォーマンス測定方法の資料とか、
マニュアルがあるなー。なかなかしっかりしてるっぽい。
あとで(いつ?)で読むとして。

# rpm -ql dnsperf
/usr/bin/dnsperf
/usr/bin/queryparse
/usr/bin/resperf
/usr/bin/resperf-report

/usr/share/doc/dnsperf-1.0.1.0/doc/caching-dns-performance.pdf
/usr/share/doc/dnsperf-1.0.1.0/doc/dnsperf.pdf
/usr/share/doc/dnsperf-1.0.1.0/doc/resperf.pdf
/usr/share/doc/dnsperf-1.0.1.0/queryfile-example-100thousand.bz2

サンプルクエリのリストがあるぞ。

# less /usr/share/doc/dnsperf-1.0.1.0/queryfile-example-100thousand.bz2 | head -5
messenger.yahoo.com. A
beta.sip.yahoo.com. A
stun.voice.yahoo.com. A
relay.voice.yahoo.com. A
storybook.com. A

このクエリリストでかる~く負荷を流しているときに、
unbound-control dump_requestlist してみよう。。

クエリリスト、10万行もある。。すごいなー。

# wc -l queryfile-example-100thousand
100000 queryfile-example-100thousand

では、負荷をかけてみましょう。

# dnsperf -s 127.1 -d queryfile-example-100thousand

おっ、表示された。
時間もでてきた。

時間が表示されるのと、そうでないのがある。
表示されないのは、internal requests らしい。

internal requests って何だ??

時間が表示されないクエリを grep で調べると、クエリリスト内に存在しない。

名前解決するために、ネームサーバとか内部的に名前解決する必要のあるクエリが
internal requestsっぽい。

# egrep -i "ns.penteres.it" queryfile-example-100thousand
#

# unbound-control dump_requestlist
thread #0
# type cl name seconds module status
0 A IN ns.penteres.it. - iterator wait for 62.48.42.65
1 A IN dns.interbusiness.it. - iterator wait for 217.169.119.68
2 A IN ns1.sdt.net. - iterator wait for 194.88.168.12
3 A IN ns1.mbit.ro. - iterator wait for 86.104.232.4
4 A IN ns1.x-battle.com. - iterator wait for 74.94.117.221

12 A IN netadm2-ext.gtrep.gatech.edu. - iterator wait for 128.193.4.20
13 A IN 109.41.128.66.PPPoE.dynamic.telesat.net.co. 74.640424 iterator wait for 190.97.204.93
14 A IN atlas.sk. 74.395150 iterator wait for 62.168.117.131
15 A IN media.fimnetwork.com. 74.920760 iterator wait for 63.215.73.21

負荷を止めた直後の dump。

# unbound-control dump_requestlist
thread #0
# type cl name seconds module status
0 A IN ns.bdc.ntta.com. - iterator wait for 206.14.130.66
1 A IN ns.anfro.ro. - iterator wait for 89.35.178.10
9 A IN voltar2.im.gte.com. - iterator wait for 205.153.203.2
10 A IN cybersec.cs.uwp.edu. - iterator wait for 131.210.42.3
11 A IN lame26564.lame-delegation.org. - iterator wait for 205.177.28.149
12 PTR IN 1.102.253.62.in-addr.arpa. 183.060530 iterator wait for 62.253.102.77

負荷止めて、1分後でも表示されるなー。
内部的に回答まってる?

# unbound-control dump_requestlist | head -5
thread #0
# type cl name seconds module status
0 A IN ns.bdc.ntta.com. - iterator wait for 206.14.130.66
1 A IN ns.anfro.ro. - iterator wait for 89.35.178.10
2 A IN ns1.cellnetwork.no. - iterator wait for 85.19.184.11

やっぱり、応答ないのかなー。

# dig @127.1 ns.bdc.ntta.com.

; <<>> DiG 9.6.1rc1-RedHat-9.6.1-0.4.rc1.fc11 <<>> @127.1 ns.bdc.ntta.com.
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

お、timed out だ。dump_requestlist から、
応答しない可能性の高いクエリが確認できそう。

wait for の他に、 wants ってコメントもあるぞ。

# unbound-control dump_requestlist
thread #0
# type cl name seconds module status
0 A IN lame26564.lame-delegation.org. - iterator wait for 63.217.31.66
1 PTR IN 1.199.17.12.in-addr.arpa. 657.920996 iterator wants A IN lame26564.lame-delegation.org.
2 PTR IN 100.17.170.159.in-addr.arpa. 494.986305 iterator wait for 195.14.18.43

lame-delegation.org って、なんだ。やっぱ lame ?

あ、やっと消えた。

# unbound-control
dump_requestlist
thread #0
# type cl name seconds module status
#

何はともあれ、名前解決に時間がかかっているクエリ、できないクエリが
このコマンドで確認できそうだ。ナイス!!

すごいぞ、unbound ! 。BIND より統計情報が充実している。
パフォーマンスもいい(らしい)

オライリーあたりから、unbound本でればいいのに。

勝手に章を作ると、

1. unbound とは
2. インストール、起動
3. unbound.conf
4. unbound-control [start|stop|stats|dump_cache] などなど
5. セキュアなキャッシュサーバ ( validator , DNSSEC , use-caps-for-id etc )
6. munin or cacti でDNSトラフィックをモニター
7. パフォーマンス
8. misc

とかって感じ? 。あとログについて。

BIND本は確かバッタだから、unbound は、なんだろー。
unboundはキャッシュ専用なので、BIND本より薄くなりそうだ。。
BIND本、メタボ気味だし。。sendmail本より、はるかにやせてるけど。

unboundの詳しいマニュアルが提供されることを期待!

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.