运行基于MySQL的DNS服务器:MyDNS

这是一个“复制和粘贴” HowTo! 遵循本教程的最简单的方法是使用命令行客户端/ SSH客户端(如 PuTTY for Windows),并简单地复制和粘贴命令(除了必须提供自己的信息,如IP地址,主机名,密码... )。 这有助于避免打字错误。

运行基于MySQL的DNS服务器:MyDNS

版本1.0
作者:Falko Timme
最后编辑:01/02/2006

在本教程中,我将介绍如何安装和配置MyDNS,MyDNS是使用MySQL数据库作为后端而不是配置文件的DNS服务器,例如Binddjbdns 。 这具有以下优点:您可以轻松使用基于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 ,使其看起来像这样:

##
## /etc/mydns.conf
## Fri Oct 21 16:36:32 2005
## For more information, see mydns.conf(5).
##


# DATABASE INFORMATION

db-host = localhost # SQL server hostname
db-user = mydns # SQL server username
db-password = mydns_password # SQL server password
database = mydns # MyDNS database name


# GENERAL OPTIONS

user = nobody # Run with the permissions of this user
group = nogroup # Run with the permissions of this group
listen = * # Listen on these addresses ('*' for all)


# CACHE OPTIONS

zone-cache-size = 1024 # Maximum number of elements stored in the zone cache
zone-cache-expire = 60 # Number of seconds after which cached zones expires
reply-cache-size = 1024 # Maximum number of elements stored in the reply cache
reply-cache-expire = 30 # Number of seconds after which cached replies expire


# ESOTERICA

log = LOG_DAEMON # Facility to use for program output (LOG_*/stdout/stderr)
pidfile = /var/run/mydns.pid # Path to PID file
timeout = 120 # Number of seconds after which queries time out
multicpu = 1 # Number of CPUs installed on your system
allow-axfr = no # Should AXFR be enabled?
allow-tcp = yes # Should TCP be enabled?
ignore-minimum = no # Ignore minimum TTL for zone?
soa-table = soa # Name of table containing SOA records
rr-table = rr # Name of table containing RR data

确保填写正确的数据库详细信息,还要注意该组。 在Debian上, 没有人的组是nogroup,它与/etc/mydns.conf (也没有人 )的默认值不同 ,所以请确保你改变了! 还设置allow-tcpyes

现在我们创建MyDNS初始化脚本/etc/init.d/mydns

#! /bin/sh
#
# mydns Start the MyDNS server
#
# Author: Falko Timme <ft@falkotimme.com>.
#

set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=mydns
DAEMON=/usr/local/sbin/$NAME
DESC="DNS server"

SCRIPTNAME=/etc/init.d/$NAME

# Gracefully exit if the package has been removed.
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开始

如果要在系统引导期间自动启动MyDNS,则必须创建必要的系统启动链接。 在Debian上,你这样做:

update-rc.d mydns默认值21 22

在Fedora或RedHat上,您可以运行:

chkconfig --levels 235 mydns on

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏