运行基于MySQL的DNS服务器:MyDNS
版本1.0
作者:Falko Timme
最后编辑:01/02/2006
在本教程中,我将介绍如何安装和配置MyDNS,MyDNS是使用MySQL数据库作为后端而不是配置文件的DNS服务器,例如Bind或djbdns 。 这具有以下优点:您可以轻松使用基于Web的前端来管理您的DNS记录。 您甚至可以编写自己的前端,例如使用PHP,与MyDNS数据库进行交互。 MyDNS只是从数据库中读取记录,当DNS记录更改或创建/编辑/删除区域时, 不必重新启动/重新加载记录! 这是一个主要的优势。
我还将展示如何设置辅助DNS服务器,但是我不会使用正常的区域传输来获取从主DNS服务器到辅助DNS服务器的记录; 相反,我将使用MySQL数据库复制 。 我将简单地将数据从主服务器复制到辅助服务器。
有多个Web前端到MyDNS。 当然,您可以使用phpMyAdmin作为MyDNS管理,也可以使用MyDNS附带的Web前端(由于缺少字段描述,因此不适用于初学者),也可以使用MyDNSConfig(由我自己编写的工具)。 我将展示如何安装它们。
总而言之,MyDNS给我一个非常好的印象,我认为未来属于使用数据库作为后端而不是配置文件的服务。
我已经使用Debian Sarge系统进行此设置。 然而,这里描述的大多数步骤也应适用于其他发行版,如Fedora,SuSE,Mandriva等。
我想先说说这不是建立这样一个系统的唯一途径。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!
1安装MySQL和MyDNS
首先,请确保您有一个基本的Debian安装工具,如https://www.youcl.com/info/4407和 (请参阅相应的“完美设置”文档youcl如果你使用另一个发行版)。
然后安装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 /
。/配置
使
安装
现在我们必须创建MyDNS数据库(称为mydns )和MyDNS数据库用户(也称为mydns ,以mydns_password为密码):
mysql -u root -p
输入密码:
现在,在MySQL shell上,我们创建了mydns数据库和用户mydns :
创建数据库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特权
放弃;
回到正常的shell,我们在mydns数据库中创建表:
mydns --create-tables | mysql -u root -p mydns
输入密码:
如果你看到这样的错误:
mydns [14287]:错误加载gid为“nobody”
mydns [14287]:使用用户`nobody'的gid 65534
别担心,你可以忘记他们。
接下来,我们再向mydns数据库的soa表添加另外两个列:
mysql -u root -p
输入密码:
ALTER TABLE mydns.soa ADD COLUMN活动ENUM('Y','N')NOT NULL;
ALTER TABLE mydns.soa ADD INDEX(active);
ALTER TABLE mydns.soa ADD COLUMN xfer CHAR(255)NOT NULL;
放弃;
使用活动列,您可以稍后启用/禁用区域, xfer列可用于区域传输(我们不需要它们,因为我们将使用MySQL数据库复制将数据获取到辅助DNS服务器,但是提及它的完整性)(如果要使用区域传输而不是数据库复制,则xfer列应包含一个或多个IP地址,以逗号分隔,这些IP地址将被允许传输区域。
现在我们通过运行以下命令创建MyDNS配置文件/etc/mydns.conf :
cd /tmp/mydns-1.0.0/
使conf
然后我们编辑/etc/mydns.conf ,使其看起来像这样:
## |
确保填写正确的数据库详细信息,还要注意该组。 在Debian上, 没有人的组是nogroup,它与/etc/mydns.conf (也没有人 )的默认值不同 ,所以请确保你改变了! 还设置allow-tcp为yes 。
现在我们创建MyDNS初始化脚本/etc/init.d/mydns :
#! /bin/sh |
然后我们让它可执行并启动MyDNS:
chmod 755 /etc/init.d/mydns
/etc/init.d/mydns开始
如果要在系统引导期间自动启动MyDNS,则必须创建必要的系统启动链接。 在Debian上,你这样做:
update-rc.d mydns默认值21 22
在Fedora或RedHat上,您可以运行:
chkconfig --levels 235 mydns on