CentOS6.5でやっているLinuxサーバー設定関連の続き記事。
BINDの導入の続きです。
今回は、ゾーンデータベースの作成~動作確認まで行います。
ページの目次
正引きゾーンデータベースの作成
前回、named.conf に正引きゾーンと逆引きゾーンの設定を行いましたのでゾーンデータベースの作成を行います。
「/var/named/cross-ring.org.db」というファイルを新規作成し、以下の内容を記述します。
$TTL 2D ・・・・・・ (1) @ IN SOA cross-ring.org. root.cross-ring.org. ( ・・・・・・ (2) 2014102500 7200 3600 604800 86400 ) IN NS cross-ring.org. ・・・・・・ (3) IN MX 10 mail.cross-ring.org. ・・・・・・・ (4) IN MX 20 smtp.cross-ring.org. IN A 192.168.1.5 ・・・・・・ (5) www IN A 192.168.1.5 mail IN A 192.168.1.5 smtp IN A 192.168.1.5
(1) ゾーンデータベースの有効期限の設定です。2Dは2日間という指定になります。
86400(1日)や172800(2日)と書かれている事も多いです。
(2) SOA(Start of Authorityの略)レコードの設定です。
@は$ORIGIN(変数)の値に置き換えられます。$ORIGINは「$ORIGIN <ホスト名>」と(1)と(2)の間の行に記載してホスト名を定義する事が可能で、上記のように省略した場合はnamed.confで「zone <ホスト名>」と記載したときのホスト名が$ORIGINの値として扱われます。
つまり当サイトでは「zone “cross-ring.org”」と記載していたため@の位置に「cross-ring.org」が記載されているのと同義となります。
SOAの後ろに書いてあるのは、「サーバーホスト名」と「管理者メールアドレス」になります。
( )内の値は上から順に説明をすると
- シリアル番号: ゾーンデータベースのバージョン番号(YYYYMMDDXX Y=年、M=月、D=日、X=番号と表記されている事が多い)を記載、ゾーンデータベースを更新するときは値を更新する必要がある。
- リフレッシュ間隔: ゾーンデータベースがリフレッシュされる時間を表す値。(単位:秒)
- リトライ間隔: リフレッシュに失敗した場合に再試行するまでの時間を表す値。(単位:秒)
- 情報破棄時間: ゾーンデータベースの内容を破棄すべき上限の時間を表す値。(単位:秒)
- 最小有効時間: このゾーンデータベースの最小有効時間を表す値。(単位:秒)
(3) NS(Name Server)の指定を行っています。ゾーンを受け持つネームサーバーの指定を行います。
※なお、省略形式で書いていますが、INの前の記入を省略すると直前の行のINの前に記載された内容を引き継ぎます。上記の場合は(2)の行の@を引き継いでいる形になります。(4)や(5)の行も同様に@を引き継いでいます。
(4) MX(Mail Exchanger)の定義を行っています。メールの処理を行うホストの指定を行います。
なお、MXの後ろの値は優先度で値が小さいほど優先度が高い事を表しています。
(5) A(Addresses)の定義を行っています。ホスト名からIPアドレスへのマッピングの定義を行っています。
最初の行は「cross-ring.org というホスト名を 192.168.1.5へ変換する」という意味になります。
2行目はホスト名の省略を使っており、wwwの後ろに「.$ORIGIN」の内容が付加される形になり、「www.cross-ring.org」というホスト名を192.168.1.5へ変換するという意味になります。(3~4行目もwwwのケースと同様です。)
ゾーンデータベースは上記のように「<host name> <class> <resource record> <value>」といった形式で記載します。valueはresource recordの内容によって変化します。
(classやresource recordについてはこちらを参照)
逆引きゾーンデータベースの作成
「/var/named/1.168.192.in-addr.arpa.db」というファイルを新規作成し、以下の内容を記述します。
$TTL 2D ・・・・・・ (6) @ IN SOA cross-ring.org. root.cross-ring.org. ( ・・・・・・ (7) 2014102500 7200 3600 604800 86400 ) IN NS cross-ring.org. ・・・・・・ (8) 5 IN PTR cross-ring.org. ・・・・・・ (9)
(6) 正引きの時と同じく有効期限の設定です。
(7) こちらも正引きの時と同様です。今回$ORIGINは「1.168.192.in-addr.arpa」に変わります。
(8) 正引きの時と同じくNSの設定です。「192.168.1.X」というIPの場合はcross-ring.orgのName Serverを利用するという事になります。
(9) PTR(Domain Name Pointer)の定義を行います。上記の例では、192.168.1.5というIPはcross-ring.orgのホスト名へマッピングしているという事になります。
以上で、ゾーンデータベースの作成は完了です。
設定が全て完了した後は、BINDの再起動(起動)を行います。
# service named restart
ファイアーウォールの設定
BINDはTCP 53番ポートとUDP 53番ポートを使います。ファイアウォールの設定を行います。
変更するファイルは「/etc/sysconfig/iptables」です。
# Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT ・・・・・・ (10) -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT ・・・・・・ (11) -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
(10)、(11) TCP 53番ポートとUDP 53番ポートのアクセスを許可します。
設定が完了した後はiptablesの再起動を行います。
# service iptables restart
リゾルバの変更
DNSサービスのクライアントの事で、名前解決のために動作しているプログラムです。
「/etc/resolv.conf」の編集を行います。
# Generated by NetworkManager nameserver 127.0.0.1 ・・・・・・ (12) #nameserver 192.168.1.1
(12) 追加行で、最初に優先するDNSサーバーを設定しています。
※特に何かを再起動したりとかはしません。
動作確認(Linux)
確認にはnslookupを使います。
# nslookup > cross-ring.org ・・・・・・ (13) Server: 127.0.0.1 Address: 127.0.0.1#53 Name: cross-ring.org Address: 192.168.1.5 > cross-ring.net ・・・・・・ (14) Server: 127.0.0.1 Address: 127.0.0.1#53 Non-authoritative answer: Name: cross-ring.net Address: 203.145.251.120 > exit
(13) nslookupを起動すると「>」という入力欄が表示されるので、今回名前解決するために用意したホスト名を入力します。(今回の場合は「cross-ring.org」)
そのあとに出力される内容を確認して名前解決が成功しているか確認します。
今回はcross-ring.org → 192.168.1.5 へと変換する事なので正常に動作している事が確認できます。
また、今回は「www」や「mail」などを付けた名前解決も可能にしたので「www.cross-ring.org」などでも正しくIPアドレスが返されるか確認しておくと良いと思います。
(14) 念のため外部のサーバーでIPアドレスが引けるか確認を行います。
上記の例では、当サイトでテストをしていますが「google.co.jp」などでも構いません。ホスト名からIPアドレスが取得できるか確認します。
※外部の名前解決のみ失敗する場合は下記をご確認ください。
動作確認(Windows)
動作確認をするために、立てたBINDサーバーで名前解決をするように設定が必要です。
DNSサーバーの設定
Windows 7の場合はスタートメニューから「コントロール パネル」を選択。
「ネットワークと共有センター」を開きます。
「アダプターの設定の変更」を選択します。
ローカルエリア接続で右クリックから「プロパティ」を選択します。
「インターネット プロトコルバージョン 4(TCP/IPv4)」を選択して「プロパティ」を開きます。
「次のDNSサーバーのアドレスを使う」を選択して「優先DNSサーバー」にBINDサーバーへのアドレスを入力します。
※もし、BINDサーバーを四六時中起動していない場合は「代替DNSサーバー」の欄にルーターのIPアドレスを入力しておきます。「例:192.168.1.1」
設定が終われば「OK」をクリックしてウインドウを閉じます。
ホスト名からIPアドレスを引く
Windowsの場合も nslookup を使用します。
Windows 7の場合はスタートメニューから「プログラムとファイルの検索」から「cmd.exe」の検索を行ってコマンドプロンプトを起動します。
「nslookup + エンターキー」を入力してnslookupを起動し、以下のように入力してDNSサーバーの動作を確認します。
c:\> nslookup 既定のサーバー: cross-ring.org Address: 192.168.1.5 > cross-ring.org ・・・・・・ (15) サーバー: cross-ring.org Address: 192.168.1.5 名前: cross-ring.org Address: 192.168.1.5 > cross-ring.net ・・・・・・ (16) サーバー: cross-ring.org Address: 192.168.1.5 名前: cross-ring.net Address: 203.145.251.120 > exit
(15) nslookupを起動すると「>」という入力欄が表示されるので、今回名前解決するために用意したホスト名を入力します。(今回の場合は「cross-ring.org」)
そのあとに出力される内容を確認して名前解決が成功しているか確認します。
今回はcross-ring.org → 192.168.1.5 へと変換する事なので正常に動作している事が確認できます。
また、今回は「www」や「mail」などを付けた名前解決も可能にしたので「www.cross-ring.org」などでも正しくIPアドレスが返されるか確認しておくと良いと思います。
(16) 念のため外部のサーバーでIPアドレスが引けるか確認を行います。
上記の例では、当サイトでテストをしていますが「google.co.jp」などでも構いません。ホスト名からIPアドレスが取得できるか確認します。
※外部の名前解決のみ失敗する場合は下記をご確認ください。
【番外編】名前解決に失敗する場合
一切、名前解決ができない場合
次の事を確認します。
- ファイアーウォールの設定を確認。
TCPとUDPの53番ポートを開いているか確認。 - named.conf の確認
「listen-on port 53」の設定でサーバーのIPを指定しているか?
「allow-query」の設定で接続クライアントが対象に入っているか?
外部の名前解決ができない場合
次の事を確認します。
- サーバーの時間を確認
「ntpdate ntp.nict.jp」を実行して時計合わせを行う。
※私は、これではまりました・・・orz - named.conf の確認
「forwarders」でルーターのアドレスを設定しているか確認。
「recursion」がyesになっている事を確認。
それでも解決しない場合はログファイルの確認を行います。
当サイトの設定では「/var/log/named/default_log.log」のファイルを確認します。
トラックバック & ピンバック