当前位置: 首页 > 工具软件 > MyDNS > 使用案例 >

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

昝晗昱
2023-12-01

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

运行基于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

然后安装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-tcp为yes 。

现在我们创建MyDNS初始化脚本/etc/init.d/mydns :#! /bin/sh

#

# mydns Start the MyDNS server

#

# Author: Falko Timme .

#

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

 类似资料: