unboundインストール手順を作成したのです。

DNSキャッシュサーバの機能を持たせるためにunboundをインストールしたのでメモっておきます。

はじめて触ったので、手探り感満載ですが。

unboundとはなんじゃい

  • キャッシュサーバとして機能します
    再帰問い合わせを行うDNSキャッシュサーバとして動作します。
    unboundはクライアントから再帰問い合わせの要求に応答し、対象のDNSコンテンツサーバに問い合わせを行い、受け取った返事をクライアントへ返信します。
  • DNSSECをサポートしています。
    キャッシュポイズニングにより、正規ではないサーバから偽装されたパケットを防ぐことができます。DNSSECでは電子署名を基にDNSキャッシュサーバが問い合わせで得た応答が正規に権威ネームサーバから得た応答か、偽装パケットかどうか、また問い合わせたレコードが存在するか検証することができます。

セキュリティ機能
セキュリティ機能は以下のようになっています。

  • デフォルトchrootで動作
  • デフォルトで一般ユーザー権限に落として動作
  • 再帰問い合わせをするユーザーに対してのアクセス制御機能

引用:Unbound,知ってる? この先10年を見据えたDNS

管理用アカウント作成

事前にユーザーグループの作成をします。

#groupadd -g 9998 unbound

#useradd -u 9998 -g 9998 unbound

#cat /etc/passwd

#passwd unbound
 パスワード設定

opensslのインストール

今回はunboundをコンパイルしてインストールします。

ソフトウェアをコンパイル知る為にはopansslがインストールされている必要があるので、opensslがインストールされていない場合は事前に入れておきましょう。

# mkdir /usr/local/src
# cd /usr/local/src
# wget https://www.openssl.org/source/openssl-1.0.0d.tar.gz
# tar zxvf openssl-1.0.0d.tar.gz
# ./configure
# make
# make install

ldnsインストール

ldnsはDNSプログラミングを簡単にすることができます。
RFCをサポートしており、開発者が現在のRFCに沿ったソフトウェア開発が簡単にできます。

もう一つの利点は処理速度です。
ldnsはC言語で書かれているので、Perlよりも早く処理をすることができます。

  • 機能の一覧は以下となります
  • IP4とIP6サポート
  • TSIGサポート(電子署名)
  • DNSSECサポート; 署名と検証
  • ファイルサイズが小さい
  • マニュアルページとオンライン文書をサポート

引用:日本Unboundユーザー会

それではインストールを実施します。

参照ダウンロードサイト
NLnet Labs

# cd /usr/local/src/

# wget https://www.nlnetlabs.nl/downloads/ldns/ldns-1.6.17rc2.tar.gz
# tar zxvf ldns-1.6.17rc2.tar.gz
# cd ldns-1.6.17rc2
# ./configure
# make
# make install

drillのインストール

drillはDNS及びDNSSECからデバック情報を取得するツールです。

drillはldnsに付属されているのでそれをインストールします。

# cd /usr/local/src/ldns-1.6.17rc2/drill/
# ./configure
# make
# make install

unboundのインストール

バージョン1.4.7以降ではlibexpatがインストールされている必要があります。
なので事前にインストールしておきます。

# yum install expat-devel

unboundのインストール

unboundはchrootを設定するので./configureのパス指定に注意してください。

# mkdir /usr/local/src/unbound
# cd /usr/local/src/unbound
# wget https://unbound.nlnetlabs.nl/downloads/unbound-1.4.22rc1.tar.gz
# tar zxvf unbound-1.4.22rc1.tar.gz
# cd unbound-1.4.22rc1
# ./configure --sysconfdir=/var --with-conf-file=/var/unbound/unbound.conf
# make
# make install

ライブラリの登録

# echo "/usr/local/lib" >> /etc/ld.so.conf
# ldconfig
# ldconfig -p | grep unbound    # ライブラリが認識されてるか確認
        libunbound.so.2 (libc6,x86-64) => /usr/local/lib/libunbound.so.2
        libunbound.so (libc6,x86-64) => /usr/local/lib/libunbound.so

起動スクリプトの設定

# cp /usr/local/src/unbound/unbound-1.4.22rc1/contrib/unbound.init /etc/init.d/unbound
# sed -i 's_/usr/sbin/unbound_/usr/local/sbin/unbound_' /etc/init.d/unbound
# chkconfig --add unbound
[root@d-oha-fwd011 unbound-1.4.22rc1]# chkconfig | grep unbound
unbound         0:off 1:off   2:off     3:off   4:off   5:off   6:off
# chkconfig unbound on
# chkconfig | grep unbound
unbound         0:off 1:off   2:on      3:on    4:on    5:on 6:off

設定ファイルのシンボリックリンクを作成

# ln -s /var/unbound/unbound.conf /etc/

権限をunboundに変更

# chown unbound:unbound /var/unbound/
# chmod 751 /etc/init.d/unbound

起動

# service unbound start
unbound を起動中:                                          [  OK  ]

設定が間違っていないかをチェック

# unbound-checkconf
unbound-checkconf: no errors in /var/unbound/unbound.conf

”no errors”が出れば大丈夫です。

動作確認の為、”resolv.conf”の編集

# vi /etc/resolv.conf
nameserver  127.0.0.1

zone転送するためにunbound.confを編集

クライアントのアクセスの許可と転送先の設定をします。
以下のようにfoward先のDNSを指定し、設定を入れるだけで大丈夫です。

# vi /etc/unbound.conf
     interface: 0.0.0.0
        access-control: 192.168.0.0/24 allow    #クライアントのアクセス許可

        forward-zone:
                name: "."
                forward-addr: 192.168.1.100     #転送先設定

unbound再起動

unbound.confを編集したらサービスを再起動を実施します。

[root@d-oha-fwd011 ~]# service unbound restart
unbound を停止中:                                          [  OK  ]
unbound を起動中:                                          [  OK  ]

”dig”では無くて”drill”で確認

# drill dns.test.co.jp
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 42886
;; flags: qr rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0
;; QUESTION SECTION:
;; dns.test.co.jp.   IN      A

;; ANSWER SECTION:
dns.test.co.jp. 3    IN      A 192.168.0.1

;; AUTHORITY SECTION:
test.co.jp. 3  IN    NS      dns.test.co.jp.
test.co.jp. 3  IN    NS      ns1.test.jp.

;; ADDITIONAL SECTION:

;; Query time: 0 msec
;; SERVER: 127.0.0.1
;; WHEN: Fri May  2 18:16:39 2014
;; MSG SIZE  rcvd: 86

1秒間隔で確認

# watch -n 1 drill dns.test.co.jp

ここまで、確認ができればOKです。
お疲れ様でした。

その他の機能、コマンド、使い方はまた後日。

以上です。




エンジニアのオンライン学習

ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。

おすすめオンライン教材
自宅で学習ができるオンラインスクール

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUT US
げんき☆ひろき
インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!