DNSサーバー · 4 min read · Jan 10, 2026

MySQLベースのDNSサーバーを運用する: MyDNS - ページ 2

2 MyDNSにウェブインターフェースをインストールする

次の手順では、Debian Sargeを使用していると仮定します。デフォルトのDebian Apacheドキュメントルートは/var/wwwなので、ここにウェブインターフェースをインストールします。さらに、ホスト名はns1.example.comであると仮定します。

2.1 phpMyAdmin

phpMyAdminはこのチュートリアルの最初にインストールされています(apt-get install mysql-server mysql-client libmysqlclient12-dev phpmyadmin)、したがって、http://ns1.example.com/phpmyadminでアクセスできるはずです。次に、データベースmydnsを選択し、テーブルrrsoaが表示されるはずです。データベースの構造/フィールドなどの説明については、こちらをご覧ください: http://mydns.bboy.net/doc/html/mydns_8.html#SEC8

2.2 元のMyDNSウェブインターフェース

元のMyDNSウェブインターフェースをインストールするには(MyDNSソースに付属しており、まだ/tmpディレクトリにあるはずです)、次のようにします:

cp /tmp/mydns-1.0.0/contrib/admin.php /var/www

次に、/var/www/admin.phpを編集し、そのスクリプトの最初の部分で変数を設定します。例えば、次のように:

| /*************************************************************************** CONFIGURABLE OPTIONS ***************************************************************************/ /* 次の4つの変数をSQLサーバーのホスト名、 サーバーにアクセスするために使用するユーザー名とパスワード、 ** MyDNSデータが存在するデータベースの名前に設定します。 */ $dbhost = "localhost"; $dbuser = "mydns"; $dbpass = "mydns_password"; $dbname = "mydns"; /* このスクリプトはデフォルトでMySQLを使用します。 PostgreSQLを使用するには、 '$use_pgsql'を'1'に設定します。 */ $use_pgsql = 0; /* 次の2つの変数は、このスクリプトにSOAテーブルの名前と RRテーブルの名前を伝えます。 */ $soa_table_name = "soa"; $rr_table_name = "rr"; /* 次の2つの値は、ゾーンブラウザとリソースレコードエディタで ページごとに表示されるレコードの数を設定します。 */ $zone_group_size = 25; $rr_group_size = 20; /* このスクリプトは、クライアントがそのゾーン内の レコードを変更するたびに、ゾーンのシリアル番号を自動的に更新できます。 ** '$auto_update_serial'を'1'に設定すると、このオプションが有効になります。 */ $auto_update_serial = 1; /* このスクリプトは、Aレコードを変更、追加、または削除するときに PTRレコードを自動的に更新できます。この機能を有効にするには、 '$auto_update_ptr'を'1'に設定します。これを有効にすると、 '$default_ns'と'$default_mbox'の値を下に入力してください。 ** 新しいSOAレコードが正しい情報を持つようにします。 */ $auto_update_ptr = 1; /* このオプションがゼロ以外の場合、このスクリプトは レコードのTTLがゾーンの最小値を下回るときに文句を言いません。 下の$ttl_minがゼロ以外の場合、その値はまだ ** チェックされます。 */ $ignore_minimum_ttl = 1; /* 次の値は、このスクリプトによってSOAおよびRRレコードの最小値を強制するために使用されます。 スクリプトは、クライアントがこれらの数値よりも低い値を入力するのを防ぎます。 */ $ttl_min = 300; $refresh_min = 300; $retry_min = 300; $expire_min = 86400; /* 次の2つの変数は、新しいSOAレコードのデフォルトのネームサーバーと 新しいSOAレコードのデフォルトの管理者メールボックスを指定します。 ** これらは、新しいゾーンが作成されるたびに自動的に入力されます。 */ $default_ns = "ns1.example.com."; $default_mbox = "admin.example.com."; /* 次の配列は、新しいSOAレコードのデフォルトレコードを指定します。 これらは、SOAが挿入されるたびに自動的に挿入されます。 ** 各レコードの形式は(name, type, aux, data)です。 */ $default_records = array( array("", "NS", 0, "ns1.example.com."), /* array("", "MX", 10, "mail.example.com.") */ ); /* ** 次の5つの値は、新しいゾーンが作成されるたびにデフォルト値として使用されます。 */ $default_ttl = 86400; $default_refresh = 28800; $default_retry = 7200; $default_expire = 604800; $default_minimum_ttl = 86400; /* ** 残りの変数は、見た目の変更を有効にします。 */ $fontsize = 12; /* デフォルトのフォントサイズ(ピクセル) */ $font_color = "#663300"; /* フォントの色 */ $page_bgcolor = "white"; /* ページの背景色 */ $help_bgcolor = "#FFFFCC"; /* メイン画面のヘルプボックスの背景色 */ $soa_bgcolor = "#FFFF99"; /* SOAエディタの背景色 */ $list_bgcolor_1 = "#FFFFCC"; /* リストアイテム#1の背景 */ $list_bgcolor_2 = "#FFFFAA"; /* リストアイテム#2の背景 */ $query_bgcolor = "#FFFFCC"; /* 検索クエリ入力の背景色 */ $query_fgcolor = "black"; /* 検索クエリ入力のフォントの色 */ $input_bgcolor = "white"; /* テキスト入力ボックスの背景色 */ $input_fgcolor = "black"; /* テキスト入力ボックスのフォントの色 */ /** 設定可能なオプションの終わり *****************************************/ |

正しいデータベースの詳細を入力してください。それに加えて、 $auto_update_serial $auto_update_ptr を1に設定し、 $default_ns $default_mbox に値を指定して、変更があった場合にシリアルが自動的にインクリメントされ、 PTR レコードも自動的に作成されるようにします。しかし、もちろん、この動作を望むかどうかはあなた次第です。

これで、http://ns1.example.com/admin.phpでウェブインターフェースにアクセスできるようになりました。

2.3 MyDNSConfigをインストールする

MyDNSConfigは、私がPHPを使用して書いたインターフェースです。元のMyDNSウェブインターフェースはフィールドの説明がないため、新人には扱いにくいと感じました(インターフェースのデザインがBindのゾーンファイルに似ているため、Bindの世界から来た場合は管理が簡単です)。

MyDNSConfigはhttp://www.mydnsconfig.orgからダウンロードできます。

次に、mydnsconfig-.tar.gzを/tmpにダウンロードしたと仮定します。次のようにインストールします:

cd /tmp
tar xvfz mydnsconfig-.tar.gz
cd mydnsconfig
cp -fr
/var/www*

次に、/var/www/lib/config.inc.phpを調整する必要があります。私のは次のようになります:

| |

正しいデータベースの詳細を入力してください!新しいDNSレコードを作成するときにMyDNSConfigが自動的に逆引きDNSレコード(PTRレコード)を作成するようにしたい場合は、 $conf[‘auto_create_ptr’] を1に設定し、 $conf[‘default_ns’] にデフォルトのネームサーバーを指定します(末尾のドットを忘れないでください!)、 $conf[‘default_mbox’] に管理者のメールアドレスを指定します(こちらも末尾のドットを忘れずに、 @ 記号はドットに置き換える必要があります!)。

次に、mydnsデータベースのrrおよびsoaテーブルを変更し、MyDNSConfigに必要な新しいテーブルを作成する必要があります:

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

Use mydns;

ALTER TABLE rr ADD sys_userid INT NOT NULL,
ADD sys_groupid INT NOT NULL AFTER sys_userid,
ADD sys_perm_user VARCHAR( 5 ) NOT NULL AFTER sys_groupid,
ADD sys_perm_group VARCHAR( 5 ) NOT NULL AFTER sys_perm_user,
ADD sys_perm_other VARCHAR( 5 ) NOT NULL AFTER sys_perm_group;

ALTER TABLE soa ADD sys_userid INT NOT NULL,
ADD sys_groupid INT NOT NULL AFTER sys_userid,
ADD sys_perm_user VARCHAR( 5 ) NOT NULL AFTER sys_groupid,
ADD sys_perm_group VARCHAR( 5 ) NOT NULL AFTER sys_perm_user,
ADD sys_perm_other VARCHAR( 5 ) NOT NULL AFTER sys_perm_group;

CREATE TABLE sys_user (
userid int(11) NOT NULL auto_increment,
sys_userid int(11) NOT NULL default ‘0’,
sys_groupid int(11) NOT NULL default ‘0’,
sys_perm_user varchar(5) NOT NULL default ‘’,
sys_perm_group varchar(5) NOT NULL default ‘’,
sys_perm_other varchar(5) NOT NULL default ‘’,
username varchar(100) NOT NULL default ‘’,
passwort varchar(100) NOT NULL default ‘’,
modules varchar(255) NOT NULL default ‘’,
startmodule varchar(255) NOT NULL default ‘’,
app_theme varchar(100) NOT NULL default ‘default’,
typ varchar(20) NOT NULL default ‘user’,
active tinyint(4) NOT NULL default ‘1’,
name varchar(100) NOT NULL default ‘’,
vorname varchar(100) NOT NULL default ‘’,
unternehmen varchar(100) NOT NULL default ‘’,
strasse varchar(100) NOT NULL default ‘’,
ort varchar(100) NOT NULL default ‘’,
plz varchar(10) NOT NULL default ‘’,
land varchar(50) NOT NULL default ‘’,
email varchar(100) NOT NULL default ‘’,
url varchar(255) NOT NULL default ‘’,
telefon varchar(100) NOT NULL default ‘’,
fax varchar(100) NOT NULL default ‘’,
language varchar(10) NOT NULL default ‘de’,
groups varchar(255) NOT NULL default ‘’,
default_group int(11) NOT NULL default ‘0’,
PRIMARY KEY (userid)
) TYPE=MyISAM AUTO_INCREMENT=2 ;

INSERT INTO sys_user (userid, sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, username, passwort, modules, startmodule, app_theme, typ, active, name, vorname, unternehmen, strasse, ort, plz, land, email, url, telefon, fax, language, groups, default_group) VALUES (1, 1, 0, ‘riud’, ‘riud’, ‘’, ‘admin’, ‘21232f297a57a5a743894a0e4a801fc3’, ‘admin,designer,resellers,sites,dns’, ‘dns’, ‘default’, ‘admin’, 1, ‘’, ‘Administrator’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘en’, ‘1,2’, 1);

quit;

これで、http://ns1.example.comでMyDNSConfigにアクセスできるようになりました。デフォルトのログインユーザー名はadmin、パスワードもadminです。最初のログイン後にSystem -> Edit userでパスワードを変更してください。

2.4 digを使用してレコードをテストする

ここで説明した3つのウェブインターフェースのいずれかを使用してDNSレコードを作成した後、digを使用してレコードをテストできます。test.com.(末尾にドットが必要)というゾーンを作成したと仮定し、Aレコードwwwを作成したとします。次のコマンドを実行すると、

dig @localhost www.test.com

出力は次のようになります:

| :~# dig @localhost www.test.com ; <> DiG 9.2.4 <> @localhost www.test.com ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12658 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.test.com. IN A ;; ANSWER SECTION: www.test.com. 86400 IN A 1.2.3.4 ;; Query time: 20 msec ;; SERVER: 1.2.3.4#53(localhost) ;; WHEN: Fri Dec 16 14:14:19 2005 ;; MSG SIZE rcvd: 45 |

元のMyDNSウェブインターフェースまたはMyDNSConfigでPTRレコードの自動作成を有効にした場合、逆引きDNSレコードも確認できます。www.test.com1.2.3.4を指している場合、次のコマンドを実行すると、

dig @localhost -x 1.2.3.4

次のような結果が表示されるはずです:

| ~# dig @localhost -x 1.2.3.4 ; <> DiG 9.2.4 <> @localhost -x 1.2.3.4 ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46572 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;4.3.2.1.in-addr.arpa. IN PTR ;; ANSWER SECTION: 4.3.2.1.in-addr.arpa. 86400 IN PTR www.test.com. ;; Query time: 15 msec ;; SERVER: 1.2.3.4#53(localhost) ;; WHEN: Fri Dec 16 14:21:05 2005 ;; MSG SIZE rcvd: 69 |

Share: X/Twitter LinkedIn

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

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