powerDNS+powerAdmin+mysql安装教程---局域网内自建DNS

局域网内自建DNS,好处就不说了,直接操作。

系统环境: Linux CentOS 7

第一步:准备好powerDNS的后端环境mysql

安装mysql

具体安装教程可以参考,笔者另一篇博文《Linux CentOS 7 下的mysql服务器安装 完整教程

创建数据库以及基本powerDNS所需要的表

create database powerdns;


并设置数据库的编码格式为latin1,一定是latin1,别设错了,因为后面powerDNS官网给的表结构都是latin1的编码格式。

也可以直接用navcat客户端连接到mysql后,直接创建数据库。笔者用的是navcat直接连的。

图片.png

在powerdns数据库下建表,执行以下sql(注意: 具体新版本的表结构请参考powerdns官网)

CREATE TABLE domains (
  id                    INT AUTO_INCREMENT,
  name                  VARCHAR(255) NOT NULL,
  master                VARCHAR(128) DEFAULT NULL,
  last_check            INT DEFAULT NULL,
  type                  VARCHAR(6) NOT NULL,
  notified_serial       INT UNSIGNED DEFAULT NULL,
  account               VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL,
  PRIMARY KEY (id)
) Engine=InnoDB CHARACTER SET 'latin1';
 
CREATE UNIQUE INDEX name_index ON domains(name);
 
 
CREATE TABLE records (
  id                    BIGINT AUTO_INCREMENT,
  domain_id             INT DEFAULT NULL,
  name                  VARCHAR(255) DEFAULT NULL,
  type                  VARCHAR(10) DEFAULT NULL,
  content               VARCHAR(64000) DEFAULT NULL,
  ttl                   INT DEFAULT NULL,
  prio                  INT DEFAULT NULL,
  change_date           INT DEFAULT NULL,
  disabled              TINYINT(1) DEFAULT 0,
  ordername             VARCHAR(255) BINARY DEFAULT NULL,
  auth                  TINYINT(1) DEFAULT 1,
  PRIMARY KEY (id)
) Engine=InnoDB CHARACTER SET 'latin1';
 
CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);
CREATE INDEX ordername ON records (ordername);
 
 
CREATE TABLE supermasters (
  ip                    VARCHAR(64) NOT NULL,
  nameserver            VARCHAR(255) NOT NULL,
  account               VARCHAR(40) CHARACTER SET 'utf8' NOT NULL,
  PRIMARY KEY (ip, nameserver)
) Engine=InnoDB CHARACTER SET 'latin1';
 
 
CREATE TABLE comments (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  name                  VARCHAR(255) NOT NULL,
  type                  VARCHAR(10) NOT NULL,
  modified_at           INT NOT NULL,
  account               VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL,
  comment               TEXT CHARACTER SET 'utf8' NOT NULL,
  PRIMARY KEY (id)
) Engine=InnoDB CHARACTER SET 'latin1';
 
CREATE INDEX comments_name_type_idx ON comments (name, type);
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);
 
 
CREATE TABLE domainmetadata (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  kind                  VARCHAR(32),
  content               TEXT,
  PRIMARY KEY (id)
) Engine=InnoDB CHARACTER SET 'latin1';
 
CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind);
 
 
CREATE TABLE cryptokeys (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  flags                 INT NOT NULL,
  active                BOOL,
  content               TEXT,
  PRIMARY KEY(id)
) Engine=InnoDB CHARACTER SET 'latin1';
 
CREATE INDEX domainidindex ON cryptokeys(domain_id);
 
 
CREATE TABLE tsigkeys (
  id                    INT AUTO_INCREMENT,
  name                  VARCHAR(255),
  algorithm             VARCHAR(50),
  secret                VARCHAR(255),
  PRIMARY KEY (id)
) Engine=InnoDB CHARACTER SET 'latin1';
 
CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);

此时就可以看到数据库中创建了7张表

图片.png

安装完成mysql,建好数据库已经powerdns要用的表后,就可以安装以mysql 为后端的powerDNS


第二步:安装powerDNS

安装powerDNS

进入epel官网,找到epel-release需要的版本,笔者安装的是6.8

https://centos.pkgs.org/6/epel-i386/epel-release-6-8.noarch.rpm.html

下载最新的epel-release rpm

wget http://dl.fedoraproject.org/pub/epel/6/i386/Packages/e/epel-release-6-8.noarch.rpm

安装epel-release rpm

rpm -Uvh epel-release-6-8.noarch.rpm

安装epel-release rpm 包:  

yum install epel-release

出现下图所示,则epel-release安装成功。

图片.png

安装以mysql为后端的powerDNS

yum -y install pdns pdns-backend-mysql

安装完成,如下图所示:


图片.png

配置数据库连接

编辑vi /etc/pdns/pdns.conf配置文件

launch=gmysql
gmysql-host=127.0.0.1
gmysql-user=root
gmysql-password=root
gmysql-dbname=powerdns

添加上述至pdns.conf最后,注意修改上面的数据库用户名以及密码对照上面设置的。

启动powerDNS以及查看它的状态

现在我们有一个数据库和若干空表。PowerDNS现在应该能够在监控模式下启动,并且不会显示任何错误:

启动dns

systemctl start pdns.service

查看dns状态

systemctl status pdns.service

到此powerDNS就安装完成


第三步:安装powerAdmin管理平台

安装PHP的运行环境

yum -y install httpd php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mhash gettext

安装完成,如下图:

图片.png

启动apache并设置开机启动

systemctl start httpd.service
systemctl enable httpd.service

如图下图:

图片.png

查看apache  httpd 端口:

vim /etc/httpd/conf/httpd.conf


图片.png

端口80,如果80端口被占用,会分配其他端口,或者设置我们自己需要的端口。

页面访问时会用到

安装环境所需的PEAR两个支持组件

执行以下命令:

yum  -y install php-pear-DB php-pear-MDB2-Driver-mysql

图片.png

安装powerAdmin

以上两步完成了PowerAdmin 需要支持的环境,这里我们安装最新poweradmin-2.1.7版本包

进入临时文件路径下:

cd /tmp

下载官网的poweradmin-2.1.7

wget  https://sourceforge.net/projects/poweradmin/files/poweradmin-2.1.7.tgz

图片.png

解压

tar zxvf poweradmin-2.1.7.tgz

图片.png

移动到apachehttp指定目录下

mv poweradmin-2.1.7 /var/www/html/poweradmin

创建文件config.inc.php

touch /var/www/html/poweradmin/inc/config.inc.php

授权apache用户路径

chown -R apache:apache /var/www/html/poweradmin/

图片.png

查看端口:

netstat -tunlp

防火墙开放http端口:

vi /etc/sysconfig/iptables 

增加规则

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

保存退出后

重启防火墙使配置生效

systemctl restart iptables.service

设置防火墙开机启动 最后重启系统使设置生效即可。

systemctl enable iptables.service 


检查SELINUX状态

查看selinux状态

getenforce

关闭SELINUX ,设置enforce0

setenforce 0


vim /etc/selinux/config


修改
SELINUX=enforcing
改成
SELINUX=disabled

保存退出编辑

这样完毕之后,我们可以用自己虚拟机的IP地址:端口/poweradmin/install/打开POWERDNS安装向导。

poweradmin页面安装向导

打开安装向导首页,如下图:

图片.png

选择向导语言,默认第一个English,选好后,点击下一步按钮(go to step 2),到第二步:

图片.png

继续点击下一步(go to step 3),到第三步:

图片.png

在第三步中,如上图,红框框出来的部分是事先准备好的mysql数据库相关配置,数据库的用户名,密码,数据库类型,host ip,端口,以及数据库名称。蓝框中框出来的是之后打开dns管理页面所需要的管理员密码,用户名默认是admin。我这里用的是mysqlroot用户,为了安全,也可以设置其他mysql用户,但是要提前准备好。页面数据设置好之后,再点击下一步(go to step 4)到第四步:

图片.png

如上图,红框中框出来的是分配给poweradmin数据库用的数据库用户名密码,笔者仍然选择用了root用户。蓝框中框出来的是提前设置的一些样例,供后面配置做参考。配置完后,点击下一步(go to step 5),到第五步:

图片.png

这一步就是给第四步中,提供的数据库用户授权,复制上面的sql语句到mysql执行,因为我用的是root用户,此步就不需要了,直接点击下一步(go to step 6),到第六步:

图片.png

第六步,就把我们前面几步配置的相关信息,写进了前面创建的新文件../inc/config.inc.php,到这里基本安装就完成了,点击下一步(go to step 7),到第七步:

图片.png

第七步里告诉我们:

(1)    如果你想要支持其他动态DNS提供商使用的网址,运行“CP安装/ htaccess . dist”。并在Apache中启用mod _ rewrite

(2)    你应该(必须!)Poweradmin根目录中删除目录“install /”。如果存在Poweradmin,您将无法使用它。现在就做。

(3)    删除目录后,您可以使用用户名“admin”和密码“admin”登录Poweradmin。强烈建议您在登录后立即更改这些设置。(登录后可以更改密码)

执行第七步里(1),(2)之后,就可以打开页面。

页面地址,例如:http://192.168.xx.xx:port/poweradmin

打开之后就可以使用,前面步骤中设置的密码登录了

比如此安装中的:admin/admin


注意:

有的时候,会出现如下图所示的第六步情况,this installer is unable to write to the file ../inc/config.inc.php”。安装程序无法将配置信息写入config.inc.php文件,就需要我们手动将下面php文件信息复制下来,粘贴到config.inc.php文件中,保存。继续一下也可以的。

图片.png

第四步:powerAdmin的使用

poweradmin的使用,可以参考笔者的另一篇博文《powerAdmin使用指南---powerDNS》


Thanks

评论

*
*