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サポート; 署名と検証
- ファイルサイズが小さい
- マニュアルページとオンライン文書をサポート
それではインストールを実施します。
参照ダウンロードサイト
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です。
お疲れ様でした。
その他の機能、コマンド、使い方はまた後日。
以上です。
サーバーを構築するならVPSがおすすめです。
エンジニアのオンライン学習
ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。
おすすめオンライン教材 | |
自宅で学習ができるオンラインスクール | |
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメントを残す