CentOS5 DNSサーバーの構築[BIND] BINDのインストール - itochif.com
BINDのインストール
yumを使用してBINDをインストールします。また、仮にDNSサーバープログラムから不正侵入された場合の被害を抑えるために、bind-chrootもインストールします。
※chrootのディレクトリは/etc/sysconfig/namedファイル内の"ROOTDIR"値で変更できます。
# yum -y install bind bind-chroot Loading "installonlyn" plugin Setting up Install Process Setting up repositories extras 100% |=========================| 1.1 kB 00:00 updates 100% |=========================| 951 B 00:00 base 100% |=========================| 1.1 kB 00:00 addons 100% |=========================| 951 B 00:00 Reading repository metadata in from local files Parsing package install arguments Resolving Dependencies --> Populating transaction set with selected packages. Please wait. ---> Downloading header for bind-chroot to pack into transaction set. bind-chroot-9.3.3-10.el5. 100% |=========================| 38 kB 00:00 ---> Package bind-chroot.i386 30:9.3.3-10.el5 set to be updated ---> Downloading header for bind to pack into transaction set. bind-9.3.3-10.el5.i386.rp 100% |=========================| 49 kB 00:00 ---> Package bind.i386 30:9.3.3-10.el5 set to be updated --> Running transaction check Dependencies Resolved ============================================================================= Package Arch Version Repository Size ============================================================================= Installing: bind i386 30:9.3.3-10.el5 base 954 k bind-chroot i386 30:9.3.3-10.el5 base 39 k Transaction Summary ============================================================================= Install 2 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 993 k Downloading Packages: (1/2): bind-chroot-9.3.3- 100% |=========================| 39 kB 00:00 (2/2): bind-9.3.3-10.el5. 100% |=========================| 954 kB 00:02 Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing: bind ######################### [1/2] Installing: bind-chroot ######################### [2/2] Locating /var/named/chroot//etc/named.conf failed: [失敗] Installed: bind.i386 30:9.3.3-10.el5 bind-chroot.i386 30:9.3.3-10.el5 Complete!図1.bindとbind-chrootのインストール
設定ファイル(named.conf)の作成
インストール途中で以下のエラーが出ています。
=========================================================
Locating /var/named/chroot//etc/named.conf failed:
[失敗]
=========================================================
これはchroot環境に設定ファイルをコピーしようとして、設定ファイルが存在しなかったために出ているため、存在しなかった設定ファイルを作成します。
# touch /var/named/chroot/etc/named.conf図2.設定ファイルの作成
ファイアウォールの設定
ファイアウォールの設定で行ったiptablesの設定ではDNSサーバーとしての要求と応答の通信が破棄されてしまいます。 以下はDNSサーバー稼動後、クライアントから問い合わせを行おうとした時の/var/log/messagesの内容です。
# /bin/grep DROP /var/log/messages Mar 9 16:00:00 www kernel: [DROP DEFAULT] :IN=eth0 OUT= SRC=xxx.xxx.xxx.xxx DST=192.168.10.2 LEN=61 TOS=0x00 PREC=0x00 TTL=128 ID=60914 PROTO=UDP SPT=6675 DPT=53 LEN=41 Mar 9 16:00:00 www kernel: [DROP DEFAULT] :IN=eth0 OUT= SRC=xxx.xxx.xxx.xxx DST=192.168.10.2 LEN=48 TOS=0x00 PREC=0x00 TTL=128 ID=38023 DF PROTO=TCP SPT=6877 DPT=53 WINDOW=65535 RES=0x00 SYN URGP=0図3.ファイアウォールによって破棄されたクライアントからの問い合わせ(抜粋)
これら通信を行うために上記ログから必要な情報を抜き出すと以下のリストになります。
- 内向きの新規UDPとTCP通信(IN=eth0/PROTO=UDP/PROTO=TCP)
- 宛先IPアドレスはこのサーバ(DST=192.168.10.2)
- 宛先ポートは53(DPT=53)
ファイアウォールの設定で作成したシェルスクリプトに、この情報を元にして作成したiptablesコマンドを追記します。 「※この下に受け入れる接続を記述する」の部分に以下の設定を追記します。
# ----- DNSの問い合わせを許可する /sbin/iptables -A INPUT -p udp -i $IF1 -d $IP1 --dport 53 -m state --state NEW -j ACCEPT /sbin/iptables -A INPUT -p tcp -i $IF1 -d $IP1 --dport 53 -m state --state NEW -j ACCEPT図4.「ファイアウォールの設定」に追記するコマンド
上記のコマンドを追記した後、以下のコマンドでパケットフィルタテーブルを更新します。
# /usr/local/sbin/iptables.sh ファイアウォールのルールを /etc/sysconfig/iptables に保存中[ OK ] ファイアウォールルールを適用中: [ OK ] チェインポリシーを ACCEPT に設定中filter [ OK ] iptables モジュールを取り外し中 [ OK ] iptables ファイアウォールルールを適用中: [ OK ] iptables モジュールを読み込み中ip_conntrack_netbios_ns [ OK ]図5. パケットフィルタテーブルの更新
これでBINDのインストールは完了です。この後は用途に応じて設定を行います。


DNSサーバーには以下の三種類があります。
名前解決要求を受けると、コンテンツサーバに対して反復問い合わせを行い、回答してくれるDNSサーバー。主に内部ネットワークからの問い合わせに使用します。…主にというよりも、外部に公開するべきではありません。キャッシュサーバーはDDos攻撃の踏み台にされたり、DNSポイゾニングを行われたりする可能性があります。
一つ以上のドメインの情報を管理し、管理しているドメインの情報への問合に対してのみ回答するDNSサーバー。主に外部のキャッシュサーバーに応答する目的で使用します。
キャッシュサーバーとコンテンツサーバーのどちらの特性も併せ持つDNSサーバーです。管理しているドメインはもちろん、管理していないドメインの事も調べて回答してくれるDNSサーバー。主に内部ネットワークで使用します。内部ネットワークで使用しているドメインの名前解決を行いつつ、外部ドメインの名前解決も行います。外部に公開されているDNSサーバーでも兼用サーバーはよく見かけますが、キャッシュサーバーの機能も持っているため、外部に公開するべきではありません。外部に公開する場合は外部からの問い合わせにはキャッシュサーバーとして機能しないように設定する必要があります。
サーバーをいずれかの用途に使う事を前提に、BINDのインストールを行います。
※DNSサーバーを必要としない人はインストールする必要はありません。