DNS構築 · 1 min read · Oct 02, 2025

Debian DNSシステムの構築

Debian DNSシステムの構築

Version 1.0
Author: Joe Topjian

OK, これは最後のDNS記事です…少なくともしばらくの間。

この記事では、Debianを使用して完全なDNSシステムを構築する方法を示します。これには、マスターサーバー、スレーブサーバー、DDNS、およびいくつかのDNSSECが含まれます。サーバーにはBIND 9を使用します。

マスターサーバー

まず、マスターサーバーを立ち上げましょう。BINDには多くの脆弱性が知られているため、chrootジャイルに入れます。それについては、Falkoがこちらに素晴らしいガイドを書いているので、私はカバーしません。

すべてがジャイルに入ったら、RNDCを動作させます。RNDCはBINDを制御するための小さなコマンドラインユーティリティです。使用するには、/etc/bind/rndc.keyの内容を/etc/bind/named.confにコピーします。BINDを再起動すれば、準備完了です。これで、BINDに直接作業する代わりにRNDCを使用してBINDとインターフェースできます。RNDCコマンドの詳細については、こちらを参照してください。

次に、ゾーンファイルを作成します。この例では、架空のTLDであるhemingwayを使用します。本当に理由はありません – ただできるからですし、実際のドメイン名と競合することはないと確信しています。

整理のために、マスターとスレーブのゾーンファイルを保存するために、2つのディレクトリを作成しました。

/etc/bind/zones/master
/etc/bind/zones/slave

/etc/bind/named.conf.optionsを編集して、ディレクトリオプションを「/etc/bind」に変更するのを忘れないでください。

ゾーンファイルは次のようになります ( /etc/bind/zones/master/master.hemingway):

| $ORIGIN hemingway $TTL 1d @ IN SOA ns1 hostmaster ( 2005103008 ; serial 43200 900 604800 10800 ) NS hemingway. A 127.0.0.1 |

192.168.1.0/24の逆ゾーン ( /etc/bind/zones/192.168.1.rev) は次のようになります:

| $TTL 1d ; $ORIGIN 1.168.192.IN-ADDR.ARPA. @ IN SOA ns1.hemingway. hostmaster.hemingway. ( 2005103001 2h 15m 2w 3h ) IN NS ns1.hemingway. IN NS ns2.hemingway. |

次に、/etc/bind/named.conf.localを新しいゾーンで編集します:

| zone "hemingway" { type master; file "zones/master/master.hemingway"; }; |

| zone "1.168.192.IN-ADDR.ARPA" { type master; file "zones/192.168.1.rev"; }; |

DNSをリロードし、ログを確認します。エラーがないはずですが、わからないので…

rndc reload

BINDがホストするドメインを認識したので、ホスト名を追加する時が来ました。それにはDDNSを使用します。DDNSを設定するには、私のDDNS記事をこちらで参照できます。

実際にDDNSでホストを追加するために、私はddns.pyスクリプトを使用します。

ddns.py add jake.hemingway A 192.168.1.11
ddns.py add bill.hemingway A 192.168.1.12
ddns.py add robert.hemingway A 192.168.1.13
ddns.py add brett.hemingway A 192.168.1.14

対応するPTRファイルも追加されましたが、スペースを節約するためにそれは省略します。

これで、与えられたホスト名を解決する完全に機能するマスターDNSサーバーができました。

スレーブサーバー

マスターサーバーが設定されたので、次はスレーブに進みます。別のボックスで、マスターと同様にジャイル化されたBINDインストールを設定します。

スレーブはマスターからゾーントランスファーを取得します。これらのゾーントランスファーはプレーンテキストでネットワークを通過するため、それらを保護する必要があります。

マスターとスレーブの両方の/etc/bind/named.conf.optionsファイルに、次の行を追加します。

| dnssec-enable yes; |

ここに記載されているdnssec-keygenコマンドを使用して、キーを作成します。MD5ハッシュを両方の/etc/bind/named.confファイルの新しいキー文に追加します:

| key "TRANSFER" { algorithm hmac-md5; secret "jXc2Lreaw4QHHTb/MjiHAw=="; }; |

マスターには、次のサーバーステートメントを/etc/bind/named.confに追加します:

| server IP-OF-SLAVE { keys { TRANSFER; }; }; |

スレーブでは、逆にします:

| server IP-OF-MASTER { keys { TRANSFER; }; }; |

マスターには、/etc/bind/named.conf.localのゾーンブロックに次の行を追加します:

| allow-transfer { key TRANSFER; }; |

スレーブのゾーンブロックは次のようになります:

| zone hemingway { type slave; file "zones/slave/slave.hemingway"; masters { IP-OF-MASTER; }; allow-notify { IP-OF-MASTER; }; }; |

最後に、両方のサーバーの時計が同期していることを確認してください。同期していないとゾーントランスファーは行われません。

完了したら、スレーブサーバーを起動します。ゾーントランスファーから/etc/bind/zones/slave/に新しいファイルができているはずです。できていない場合は、ログを確認してください – エラーが非常に詳細に表示されます。

終了

これで全てです!たくさんの作業があり、私は本当に急いで進めましたが、これであなたは立ち上がって動作するはずです。参考のために、私のDDNS記事をこちらで読み、素晴らしい本『Pro DNS and BIND』を参照してください(マーケティングの宣伝ではなく、本当に良い本です!)。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。