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)が起動されるようになります。