zoukankan      html  css  js  c++  java
  • 实现WEB管理的PowerDNS Alex

      PowerDNS 是一个跨平台的开源DNS服务组件,它是高性能的域名服务器,除了支持普通的BIND配置文件,PowerDNS还可从MySQL,Oracle,PostgreSQL等的数据库读取数据。PowerDNS安装了Poweradmin(基于php实现),能实现Web管理DNS记录,非常方便
      PowerDNS官网:https://www.powerdns.com/
      PowerDNS文档:https://doc.powerdns.com/
      Poweradmin官网:http://www.poweradmin.org/

    一、安装所需要的包

    yum install -y pdns pdns-backend-mysql

    二、安装MySQL数据库(我这里把MySQL数据库分出来在其他电脑上做的)

    yum install mariadb-server -y

    三、在数据库服务器上创建数据库,并授权

    create database powerdns;

      grant all on powerdns.* to 'powerdns'@'172.16.8.%' identified by 'centos';

    #创建一个数据库叫powerdns,创建一个用户也叫powerdns。授权通过172.16.8这个网段访问数据库powerdns,密码centos

    四、创建powerdns数据库中的表,参看下面文档实现

    https://doc.powerdns.com/md/authoritative/backend-generic-mysql/

    mysql 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 DEFAULT NULL,
      account               VARCHAR(40) DEFAULT NULL,
      PRIMARY KEY (id)
    ) Engine=InnoDB;
    
    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;
    
    CREATE INDEX nametype_index ON records(name,type);
    CREATE INDEX domain_id ON records(domain_id);
    CREATE INDEX recordorder ON records (domain_id, ordername);
    
    
    CREATE TABLE supermasters (
      ip                    VARCHAR(64) NOT NULL,
      nameserver            VARCHAR(255) NOT NULL,
      account               VARCHAR(40) NOT NULL,
      PRIMARY KEY (ip, nameserver)
    ) Engine=InnoDB;
    
    
    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) NOT NULL,
      comment               VARCHAR(64000) NOT NULL,
      PRIMARY KEY (id)
    ) Engine=InnoDB;
    
    CREATE INDEX comments_domain_id_idx ON comments (domain_id);
    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;
    
    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;
    
    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;
    
    CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);

    五、配置PowerDNS使用mariadb作为后台数据存储

    vim /etc/pdns/pdns.conf 
    /launch      
    #内容太多,直接搜索,英文输入法输入/ 后面是要搜索的内容
    launch=bind
    #将这行替换成
    launch=gmysql
    #意思是数据库是放在MySQL里的而不是bind那个文件里的
    launch=gmysql #在这行后面添加下面的信息

      gmysql-host=172.16.8.23
      gmysql-port=3306
      gmysql-dbname=powerdns
      gmysql-user=powerdns
      gmysql-password=centos

    #这个就是第三步创建的用户和密码

    六、启动服务,并设置为开机启动

    systemctl start pdns
    systemctl enable pdns

    七、安装httpd和php相关包

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

    八、启动httpd服务,并设置为开机启动

    systemctl start httpd
    systemctl enable httpd

    九、下载poweradmin程序,并解压缩到相应目录

    cd /var/www/html
    wget http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz
    tar xvf poweradmin-2.1.7.tgz
    mv poweradmin-2.1.7 poweradmin

    十、直接通过网页打开会报错的,必须先走一遍安装

    http://172.16.8.135/poweradmin/install/

      1、选择语言,选择完之后点击Go to step 2,进入下一步

       2、这一步是提示信息之类的,大概查看之后就可以进入下一步了

       3、输入第三步上的用户名和密码,hostname是你自己的数据库的I地址,端口默认就是3306,database数据库的名称,你的数据库名是什么就是什么名字,这里的Poweradmin administrator password, 为Poweradmin设置管理员密码这个是后面用到的,自定义设置即可。 

      4、为Poweradmin创建一个受限用户,Username:PowerAdmin用户名,Password:上述用户的密码Hostmaster:当创建SOA记录指定默认主机管理员,Primary nameserver:主域名服务器,Secondary namesever:辅域名服务器

       5、按照下面页面说明,在数据库中创建用户并授权

    按照上面的提示在数据库中执行这条命令,因为我的服务器不在同一台机器上,所有我设置了172.16.8这个网段,其实区别不大,数据库如果在同一台机器上的话就用本机的IP地址即可

    1 GRANT SELECT, INSERT, UPDATE, DELETE
    2 ON powerdns.*
    3 TO 'poweradmin'@'172.16.8.%'
    4 IDENTIFIED BY 'centos';

      6、按下面页面说明,创建config.in.php文件内容

     vim /var/www/html/poweradmin/inc/config.inc.php
    <?php
    
    $db_host		= '172.16.8.23';
    $db_user		= 'poweradmin';
    $db_pass		= 'centos';
    $db_name		= 'powerdns';
    $db_type		= 'mysql';
    $db_layer		= 'PDO';
    
    $session_key		= '@Ap{P^eCoiHGPOwF-ru8@c2F3{2nHNCIsYP3Ypz!zUp1i*';
    
    $iface_lang		= 'en_EN';
    
    $dns_hostmaster		= 'dnsserver';
    $dns_ns1		= '172.16.8.135';
    $dns_ns2		= '';

      7、到这已经安装完成了,他提示删除install 

     为什么要删除子目录呢,不删除子目录的话,别人万一在执行一次安装,所以你懂得。

    rm -rf /var/www/html/poweradmin/install/

      8、至此已经安装完成了,这一步是登录 

    登录http://powerdns服务器IP/poweradmin/  username:admin  password:centos 参看第step 3

    这里的语言倒是可以选择中文的

     

       9、目前还没有主域,可以点击添加主域

       10、输入主域的信息,点击添加,dnssec是安全的一项,这里我就不启用了,可启用也可以不启用

       11、添加完成之后,点击绿色框里这行字,可以适当的做些修改了

     点击添加记录

    会弹出如下界面,如果有多条记录就可以在添加一遍,没有的话就点击lvzhengyuan.com 

     里面的界面如下,因为我上面添加了两条记录,可以点击垃圾桶删除一条记录

       12、通过dig命令能解析IP地址则表示可以了

    dig www.lvzhengyuan.com @172.16.8.135
    
    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.8 <<>> www.lvzhengyuan.com @172.16.8.135
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62270
    ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
    ;; WARNING: recursion requested but not available
    
    ;; QUESTION SECTION:
    ;www.lvzhengyuan.com.        IN    A
    
    ;; ANSWER SECTION:
    www.lvzhengyuan.com.    86400    IN    A    172.16.8.135
    
    ;; Query time: 6 msec
    ;; SERVER: 172.16.8.135#53(172.16.8.135)
    ;; WHEN: Thu Apr  1 18:36:02 2021
    ;; MSG SIZE  rcvd: 53

    至此就完成了。

    ####有这时间,还不如去修改命令行简单多了####

  • 相关阅读:
    vue 同时使用过渡和动画
    ie和火狐事件addEventListener()及attachEvent()区别分析
    闭包的理解
    实现Date函数属性中的format方法
    js读取cookie信息
    js解决千分符问题
    js脚本语言在页面上不执行
    split使用和特殊使用(包括截取第一个字符后的数据)
    js中请求数据的$post和$ajax区别(同步和异步问题)
    禁止页面拖拽事件(数据什么的)
  • 原文地址:https://www.cnblogs.com/alexlv/p/14609650.html
Copyright © 2011-2022 走看看