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 checkb. 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/installvi /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 svscanc. 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 tinydnsdnscache を設定:
私たちのシナリオでは、各マスターおよびスレーブサーバーを「権威」と「キャッシング」の両方として必要とします。したがって、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
今、LAN ホストがそこからクエリできるようにする必要があります。したがって、ネットワークまたはサブネットの名前を付けた空のファイルを作成します:
touch /etc/dnscache/root/ip/それでおしまい。これで、その
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.comb. 上記のネームサーバーの逆 DNS のために:
.10.in-addr.arpa::ns1.in.domain.com
.10.in-addr.arpa::ns2.in.domain.comc. MX レコードのために:
@in.domain.com:165.212.65.113:mx.usa.net:10
@in.domain.com:10.20.0.12:mail.in.domain.com:20d. A レコードのために:
=host0001.in.domain.com:10.10.0.101e. ホストのエイリアスレコードのために:
+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 にソフトリンクを作成します。それでおしまい。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。