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』を参照してください(マーケティングの宣伝ではなく、本当に良い本です!)。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。