DNS設定 · 2 min read · Nov 27, 2025

Ubuntu Server 8.04 (amd64) Hardy における完璧な DjbDNS セットアップ

Ubuntu Server 8.04 (amd64) Hardy における完璧な DjbDNS セットアップ

DjbDNS は、ドメインネームシステムツールのコレクションです。基本的な DNS 操作のためのソフトウェアが含まれています:

DNS キャッシュ: インターネットホストのアドレスを見つけること。ブラウザが www.hotwired.com に接続したいとき、最初に djbdns の dnscache のような DNS キャッシュに IP アドレスを尋ねます。インターネットサービスプロバイダーは、顧客が要求した IP アドレスを見つけるために dnscache を運営しています。自宅のコンピュータやワークステーションを運営している場合は、自分の dnscache を運営してウェブブラウジングを高速化できます。

DNS サーバー: インターネットホストのアドレスを公開すること。www.hotwired.com の IP アドレスは HotWired の DNS サーバーによって公開されます。djbdns には、一般的な DNS サーバーである tinydns が含まれています。ネットワーク管理者は、コンピュータの IP アドレスを公開するために tinydns を運営します。djbdns には、DNS ウォールや RBL を公開するための特別なサーバーも含まれています。

DNS クライアント: DNS キャッシュと通信すること。djbdns には、DNS クライアント C ライブラリといくつかのコマンドライン DNS クライアントユーティリティが含まれています。プログラマーは、これらのツールを使用して DNS キャッシュにリクエストを送信します。

DjbDNS には、特に dnstrace などのいくつかの DNS デバッグツールも含まれており、管理者はこれを使用して誤って構成されたリモートサーバーを診断します。

セキュリティ機能:

  • dnscache は、chroot ジェイル内の専用の非ルート UID として実行されるため、マシンの残りの部分に触れることができません。
  • tinydns は、独自の chroot ジェイル内で別の専用の非ルート UID として実行されます。
  • walldns は、独自の chroot ジェイル内で別の専用の非ルート UID として実行されます。
  • dnscache は、指定された IP アドレスのリストの外部からの DNS クエリを破棄します。
  • dnscache と DNS ライブラリは、各クエリパケットに対して新しいクエリ ID と新しい UDP ポートを使用します。対応するクエリが送信された IP アドレス以外の IP アドレスからの DNS 応答を破棄します。
  • dnscache は、予測不可能なポート番号と ID を選択するために暗号生成器を使用します。
  • dnscache は、キャッシュポイズニングに対して免疫があります。

tinydns は情報をキャッシュしません。再帰をサポートしていません。

インストール前

apt-get install build-essential  
mkdir /tmp/downloads  
cd $_  
wget -c  HYPERLINK "http://www.thedjbway.org/patches/djb_errno_patches.tgz" http://www.thedjbway.org/patches/djb_errno_patches.tgz  
tar -zxvf djb_errno_patches.tgz  
wget -c   HYPERLINK "http://cr.yp.to/daemontools/daemontools-0.76.tar.gz" http://cr.yp.to/daemontools/daemontools-0.76.tar.gz  
wget -c  HYPERLINK "http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz" http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz  
wget -c  HYPERLINK "http://cr.yp.to/djbdns/djbdns-1.05.tar.gz" http://cr.yp.to/djbdns/djbdns-1.05.tar.gz

すべてのパッケージをインストール

a. ucspi-tcp-src をインストール:

cd /tmp/downloads  
tar -zxvf ucspi-tcp-0.88.tar.gz  
cd ucspi-tcp-0.88  
patch -p1 < /tmp/downloads/ucspi-tcp-0.88.errno.patch  
make  
make setup check

b. daemontools

cd /tmp/downloads  
tar -zxvf  daemontools-0.76.tar.gz  
cd admin/daemontools-0.76/  
touch /etc/inittab  
patch -p1 < /tmp/downloads/daemontools-0.76.errno.patch  
package/install
vi /etc/event.d/svscan
# svscan - daemontools

start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5
stop on runlevel 0
stop on runlevel 1
stop on runlevel 6

respawn
exec /command/svscanboot

このインストーラーは、/command 内のすべての svscan コマンドへのリンクを作成するだけなので、これらをコピーする方が良いです:

cd /command  
rm -rf *  
cp /tmp/downloads/admin/daemontools/command/* /command/

それでおしまい… その後(再起動が必要な場合があります) …

initctl start svscan

c. djbdns

cd /tmp/downloads  
tar -zxvf djbdns-1.05.tar.gz  
cd djbdns-1.05  
echo gcc -O2 -include /usr/include/errno.h > conf-cc   
make  
make setup check

パッケージの設定

ユーザーを作成します(自動的に作成されていない場合):

adduser --no-create-home --disabled-login --shell /bin/false dnscache  
adduser --no-create-home --disabled-login --shell /bin/false dnslog  
adduser --no-create-home --disabled-login --shell /bin/false tinydns

dnscache を設定:

私たちのシナリオでは、各マスターおよびスレーブサーバーを「権威」と「キャッシング」の両方として必要とします。したがって、djbdns でこれを達成する方法を理解することが非常に重要です。bind とは異なり、djbdns は各種の DNS サービスに対して個別の IP を使用します。デフォルトでは、各システムは 2 つの IP を持っています => 1 つはホスト-IP、もう 1 つはループバック-IP です。したがって、LAN 上の任意のシステムはキャッシング DNS にヒットする必要があり、キャッシング DNS のためのホスト-IP です。そして、ループバック-IP で権威を運営し、後でそれをキャッシング DNS にバインドします。したがって、LAN ホストは権威のホストレコードをクエリできます。

mkdir /var/lib/svscan  
dnscache-conf dnscache dnslog /var/lib/svscan/dnscache   
ln -sf /var/lib/svscan/dnscache /service

「supervise」ディレクトリが /service/dnscache に作成されたことを確認します。実行中かどうかを確認するには、/etc/resolv.conf に ‘nameserver ’ のような単一のエントリを追加し、コマンドラインから ‘nslookup’ または ‘dig’ を使用していくつかのパブリックウェブサイトのクエリを確認します。

今、LAN ホストがそこからクエリできるようにする必要があります。したがって、ネットワークまたはサブネットの名前を付けた空のファイルを作成します:

touch /etc/dnscache/root/ip/

それでおしまい。これで、その の任意のホストからクエリできます。同様に、クエリのために複数のホスト、ネットワーク、またはサブネットを有効にできます。bind とは異なり、/etc/dnscache/env/CACHESIZE ファイルを編集することで、ネームサーバーのキャッシュサイズを調整できます。また、次のコマンドを実行することで、キャッシュを手動で更新またはフラッシュできます:

svc -t /service/dnscache

一時的に、次のコマンドで dnscache を停止および開始できます:

svc -d /service/dnscache => dnscache サービスを停止する  
svc -u /service/dnscache => dnscache サービスを開始する

tinydns を設定:

tinydns-conf tinydns dnslog /var/lib/svscan/tinydns   
ln -sf /var/lib/svscan/tinydns /service

「supervise」ディレクトリが /service/tinydns に作成されたことを確認します。

まだどのドメインのゾーンエントリも含まれていませんが、すぐにそれについて説明します。bind とは異なり、ゾーン情報は単一のファイルに書き込まれます(逆ゾーンを含む複数のゾーンの場合でも)それは /var/lib/svscan/tinydns/root/data です。このファイルは人間が書き込むことができ、後で tinydns コマンドを使用してバイナリ形式に変換され、そのバイナリは cdb 形式と呼ばれます。したがって、そのバイナリファイルは /var/lib/svscan/tinydns/root/data.cdb であり、tinydns はすべてのクエリに対して応答します。ゾーンレコードの構文は、bind に比べて非常に短くコンパクトです。以下はいくつかの例です:

a. ネームサーバーエントリのために:

  .in.domain.com:10.20.0.10:ns1.in.domain.com  
  .in.domain.com:10.20.0.12:ns2.in.domain.com

b. 上記のネームサーバーの逆 DNS のために:

  .10.in-addr.arpa::ns1.in.domain.com  
  .10.in-addr.arpa::ns2.in.domain.com

c. MX レコードのために:

  @in.domain.com:165.212.65.113:mx.usa.net:10  
  @in.domain.com:10.20.0.12:mail.in.domain.com:20

d. A レコードのために:

  =host0001.in.domain.com:10.10.0.101

e. ホストのエイリアスレコードのために:

  +host01.in.domain.com:10.10.0.101  
  +mysql01.in.domain.com:10.10.0.101

最後に、/var/lib/svscan/tinydns/root/data を cdb 形式に変換します:

tinydns-data

または

cd /var/lib/svscan/tinydns/root  
make

最後に、これらのゾーン情報をキャッシング DNS サーバーにバインドするために、/var/lib/svscan/dnscache/root/servers/ ディレクトリに 10.in-addr.arpa、in.domain.com、domain.com などの名前のファイルを作成し、その内容は 127.0.0.1(ループバック-IP)である必要があります。それでおしまい。すべての設定が完了しました。

注意:データに変更を加え、変更された data.cdb ファイルを作成するたびに、キャッシュを更新またはフラッシュすることを忘れないでください。

svc -t /services/*

Djbdbs を使用したスレーブサーバーのセットアップ

http://www.seebq.com/dns-replication-using-rsync に従い、マスターとスレーブのいくつかのファイルにいくつかの調整を行います。

a. マスターの /var/lib/svscan/tinydns/root/Makefile の変更:ファイルを次のように編集します。

remote: data.cdb
  rsync -az -e ssh data.cdb :/service/tinydns/root/data.cdb
  ssh  'svc -t /service/dnscache'
data.cdb: data
  /usr/local/bin/tinydns-data
  svc -t /service/dnscache

b. スレーブの /var/libsvscan/tinydns/root/data ファイルの変更:

# このコンピュータでデータを編集しないでください! data.cdb はマスターからコピーされます。
# 次の行は、make を停止することで data.cdb を保護します。
9

したがって、誤って誰かが /etc/tinydns/root/ ディレクトリで make コマンドを入力したり、tinydns-data コマンドを入力したりしても、スレーブにはデータファイルがないため、キャッシュがフラッシュされるだけです。

そして、はい、マスターからスレーブへの自動 SSH ログイン設定を行い、上記の変更を自動化します。上記の変更は、data.cdb ファイルのみをスレーブにプッシュします。したがって、ネームサーバー間で異なるデータの可能性はなく、すべてのサーバー間で一貫性が保たれます。

バックアップと復元

最低限、/var/lib/svscan/tinydns/root/data ファイルのコピー、または最大で /var/lib/svscan/dnscache と /var/lib/svscan/tinydns 全体のコピーが必要です。それでおしまい。

復元のためには、dnscache または tinydns を設定し、ほとんど時間がかからずにバックアップデータをコピーします。最後に、/service にソフトリンクを作成します。それでおしまい。

Share: X/Twitter LinkedIn

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

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