DNSサーバー · 1 min read · Oct 02, 2025

MySQLベースのDNSサーバーを実行する: MyDNS

これは “コピー&ペースト” のHowToです! このチュートリアルに従う最も簡単な方法は、コマンドラインクライアント/SSHクライアント(Windows用のPuTTYなど)を使用し、コマンドをコピー&ペーストすることです(IPアドレス、ホスト名、パスワードなどの自分の情報を提供する必要がある場合を除きます)。これにより、タイプミスを避けることができます。

MySQLベースのDNSサーバーを実行する: MyDNS

バージョン 1.0
著者: Falko Timme
最終編集日: 2006年1月2日

このチュートリアルでは、MyDNSをインストールおよび構成する方法を説明します。MyDNSは、Bindやdjbdnsのような設定ファイルの代わりにMySQLデータベースをバックエンドとして使用するDNSサーバーです。これにより、DNSレコードを管理するためのWebベースのフロントエンドを簡単に使用できます。PHPを使用してMyDNSデータベースと対話する独自のフロントエンドを書くこともできます。MyDNSは単にデータベースからレコードを読み取り、DNSレコードが変更されたりゾーンが作成/編集/削除されたときに再起動/リロードする必要がありません!これは大きな利点です。

また、セカンダリDNSサーバーの設定方法も示しますが、通常のゾーントランスファーを使用してプライマリからセカンダリDNSサーバーにレコードを取得するのではなく、MySQLデータベースレプリケーションを使用します。プライマリからセカンダリサーバーにデータを単純にレプリケートします。

MyDNSには複数のWebフロントエンドがあります。もちろん、MyDNS管理にはphpMyAdminを使用できますし、MyDNSに付属のWebフロントエンドを使用することもできます(フィールドの説明が不足しているため初心者には向いていません)。また、私自身が書いたツールであるMyDNSConfigを使用することもできます。それぞれのインストール方法を示します。

全体として、MyDNSは非常に良い印象を与え、私はデータベースをバックエンドとして使用するサービスの未来があると思います。

このセットアップにはDebian Sargeシステムを使用しました。ただし、ここで説明するほとんどの手順は、Fedora、SuSE、Mandrivaなどの他のディストリビューションにも適用されるはずです。

まず最初に、これはそのようなシステムを設定する唯一の方法ではないことを言いたいです。この目標を達成する方法はいくつもありますが、これは私が取る方法です。これがあなたにとって機能することを保証するものではありません!

1 MySQLとMyDNSをインストールする

まず、https://www.howtoforge.com/perfect_setup_debian_sarge および https://www.howtoforge.com/perfect_setup_debian_sarge_p2 に記載されているように、動作する基本的なDebianインストールがあることを確認してください(他のディストリビューションを使用している場合は、HowtoForgeのそれぞれの「Perfect Setup」ドキュメントを参照してください)。

次にMySQLをインストールします:

apt-get install mysql-server mysql-client libmysqlclient12-dev phpmyadmin

いくつかの質問がされます:

suExecを有効にしますか? <– はい
自動的に再構成したいWebサーバーはどれですか? <– apache, apache2
今すぐapacheを再起動しますか? <– はい

root MySQLパスワードを次のように設定します:

mysqladmin -u root password yourrootsqlpassword

MyDNSのインストールは簡単です。次の手順に従ってください:

cd /tmp/
wget http://mydns.bboy.net/download/mydns-1.0.0.tar.gz
tar xvfz mydns-1.0.0.tar.gz
cd mydns-1.0.0/
./configure
make
make install

次に、MyDNSデータベース(mydnsと呼ばれる)とMyDNSデータベースユーザー(mydnsと呼ばれ、パスワードはmydns_password)を作成する必要があります:

mysql -u root -p
パスワードを入力してください:

次に、MySQLシェルでmydnsデータベースとユーザーmydnsを作成します:

CREATE DATABASE mydns;
GRANT SELECT, INSERT, UPDATE, DELETE ON mydns.
TO ‘mydns’@’localhost’ IDENTIFIED BY ‘mydns_password’;
GRANT SELECT, INSERT, UPDATE, DELETE ON mydns. TO ‘mydns’@’localhost.localdomain’ IDENTIFIED BY ‘mydns_password’;
FLUSH PRIVILEGES;
quit;

通常のシェルに戻り、mydnsデータベースにテーブルを作成します:

mydns –create-tables | mysql -u root -p mydns
パスワードを入力してください:

次のようなエラーが表示される場合:

mydns[14287]: error loading gid for group nobody' mydns[14287]: using gid 65534 from usernobody’

心配しないでください、それらを無視して構いません。

次に、mydnsデータベースのsoaテーブルに2つの列を追加します:

mysql -u root -p
パスワードを入力してください:
ALTER TABLE mydns.soa ADD COLUMN active ENUM(‘Y’,’N’) NOT NULL;
ALTER TABLE mydns.soa ADD INDEX (active);
ALTER TABLE mydns.soa ADD COLUMN xfer CHAR(255) NOT NULL;
quit;

active列を使用すると、後でゾーンを簡単に有効/無効にできます。また、xfer列はゾーントランスファーに使用できます(データをセカンダリDNSサーバーに取得するためにMySQLデータベースレプリケーションを使用するため、必要ありませんが、完全性のために言及します)(ゾーントランスファーを使用する場合は、xfer列にカンマで区切られた1つ以上のIPアドレスを含める必要があります。これらのIPアドレスはゾーンを転送することが許可されます)。

次に、次のコマンドを実行してMyDNS構成ファイル/etc/mydns.confを作成します:

cd /tmp/mydns-1.0.0/
make conf

次に、/etc/mydns.confを編集して次のようにします:

| ## ## /etc/mydns.conf ## Fri Oct 21 16:36:32 2005 ## 詳細については、mydns.conf(5)を参照してください。 ## # データベース情報 db-host = localhost # SQLサーバーホスト名 db-user = mydns # SQLサーバーユーザー名 db-password = mydns_password # SQLサーバーパスワード database = mydns # MyDNSデータベース名 # 一般オプション user = nobody # このユーザーの権限で実行 group = nogroup # このグループの権限で実行 listen = * # これらのアドレスでリッスン('*'はすべて) # キャッシュオプション zone-cache-size = 1024 # ゾーンキャッシュに保存される最大要素数 zone-cache-expire = 60 # キャッシュされたゾーンが期限切れになるまでの秒数 reply-cache-size = 1024 # 応答キャッシュに保存される最大要素数 reply-cache-expire = 30 # キャッシュされた応答が期限切れになるまでの秒数 # エソテリカ log = LOG_DAEMON # プログラム出力に使用するファシリティ(LOG_*/stdout/stderr) pidfile = /var/run/mydns.pid # PIDファイルへのパス timeout = 120 # クエリがタイムアウトするまでの秒数 multicpu = 1 # システムにインストールされているCPUの数 allow-axfr = no # AXFRを有効にする必要がありますか? allow-tcp = yes # TCPを有効にする必要がありますか? ignore-minimum = no # ゾーンの最小TTLを無視しますか? soa-table = soa # SOAレコードを含むテーブルの名前 rr-table = rr # RRデータを含むテーブルの名前 |

正しいデータベースの詳細を入力し、グループにも注意してください。Debianでは、nobodyのグループはnogroupであり、これは/etc/mydns.confのデフォルト値(nobody)とは異なるため、これを変更することを確認してください!また、allow-tcpyesに設定してください。

次に、MyDNSの初期化スクリプト/etc/init.d/mydnsを作成します:

| #! /bin/sh # # mydns MyDNSサーバーを起動 # # 著者: Falko Timme <[email protected]> # set -e PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin NAME=mydns DAEMON=/usr/local/sbin/$NAME DESC="DNSサーバー" SCRIPTNAME=/etc/init.d/$NAME # パッケージが削除された場合は優雅に終了します。 test -x $DAEMON || exit 0 case "$1" in start) echo -n "Starting $DESC: $NAME" $DAEMON --background echo "." ;; stop) echo "Stopping $DESC: $NAME." kill -9 `pidof $NAME` &> /dev/null ;; restart) echo "Restarting $DESC: $NAME." $0 stop && sleep 1 $0 start ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2 exit 1 ;; esac exit 0 |

次に、実行可能にしてMyDNSを起動します:

chmod 755 /etc/init.d/mydns
/etc/init.d/mydns start

MyDNSがシステム起動時に自動的に起動するようにするには、必要なシステム起動リンクを作成する必要があります。Debianでは、次のようにします:

update-rc.d mydns defaults 21 22

FedoraやRedHatでは、次のように実行します:

chkconfig –levels 235 mydns on

Share: X/Twitter LinkedIn

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

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