BINDはデーモンとして動作させる必要があるのでserviceコマンドを使用して起動させます。

serviceコマンドはデーモンの起動・再起動・停止・状態確認などの操作を行なえます。

まずはBINDの状態を確認します。状態確認は以下のコマンドで行なえます。

# service named status
rndc: connect failed: 127.0.0.1#953: connection refused
named is stopped

「stopped」と表示されたので、現在、BINDは停止中となっています。逆に「running…」と表示されれば、BINDは既に起動中であることを示します。

BINDを起動する

BINDを起動するには以下のコマンドを実行します。

# service named start
Starting named:                            [  OK  ]

named.conf、正引き用設定ファイルや逆引き用設定ファイルなどを更新した場合、その設定を反映させるためには、BINDを再起動させる必要があります。BINDの再起動は以下コマンドで行います。

# service named restart
Stopping named:                            [  OK  ]
Starting named:                            [  OK  ]

※正引き用設定ファイルや逆引き用設定ファイルを更新した場合、必ずSOAレコードのSerialの値を加算してください。加算しないと設定がうまく反映されません。加算忘れはBINDをさわったことがあるエンジニアが一度は必ずといって良いほどやってしまうミスです。

ファイアウォール設定を確認する

CentOSの初期設定では外部からの接続はssh(22)以外を拒否する設定となっており、DNSで使用する通信(TCP:53、UDP:53)はファイアウォールでドロップされてしまいます。そのため、ファイアウォールの設定を変更する必要があります。

まずはファイアウォール(iptables)の設定を確認します。iptablesはLinuxの標準的なファイアウォール・アプリケーションです。

# service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80
6    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:443
7    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:81
8    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

上記状態では、外部からの接続はssh(22)、http(80、81)、https(443)のみ許可しており、それ以外は拒否されます。DNSの接続許可の設定を追加してみましょう。

# iptables -I INPUT 8 -p tcp --dport 53 -j ACCEPT
# iptables -I INPUT 8 -p udp --dport 53 -j ACCEPT

「-I」でチェインと番号を指定すると、指定したチェインの指定した番号にルールが挿入されます。指定した番号以降のルールは、それぞれ一つ下にずれます。番号をつけない場合は、先頭(1番)にルールを挿入されます。

続いて、変更した内容を保存します。

# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

最後にもう一度iptablesの設定を確認し、上記で追加したルールが追加されていることを確認します。

# service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80
6    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:443
7    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:81
8    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:53
9    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:53
10   REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

これで、DNSでの接続が可能になりました。

/etc/resolv.confの編集

「/etc/resolv.conf」は、自身が利用するDNSサーバーの情報(IPアドレス)を記述してあるファイルのことです。今回、BINDを構築したことで自身がDNSサーバーとなったため、名前解決の際に参照するDNSサーバーを自身に設定します。

# vi /etc/resolv.conf
# Generated by NetworkManager
nameserver 172.16.0.10

nameserverディレクティブに、参照するDNSサーバーのIPアドレスを指定します。最大3行まで定義することが可能で、上から順番に利用されます。上記例では、IPアドレス「172.16.0.10」のDNSサーバーを参照するよう設定しています。

自動起動の設定

DNSサーバーは、常時稼動させておく必要があります。そのためにOS起動と同時にBINDも起動するように設定します。

# chkconfig named on

以上で自動起動するように設定されたため、CentOSを再起動しても、OS起動とともにBIND(named)が起動されるようになります。