GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS7にPowerDNSをインストールする方法

このチュートリアルでは、CentOS 7サーバーにPowerDNSをインストールして構成する方法を示します。知らない人のために、PowerDNSはMySQLベースのDNSサーバーであり、 C ++であり、GPLの下でライセンスされています。PowerDNSはWebインターフェイス(PowerAdmin)を介して管理できます。バインドとは異なり、PowerDNSは、バインドゾーンファイルやさまざまなデータベースなどの多数のバックエンドを使用して設定できます。

この記事は、少なくともLinuxの基本的な知識があり、シェルの使用方法を知っていること、そして最も重要なこととして、サイトを独自のVPSでホストしていることを前提としています。インストールは非常に簡単で、ルートアカウントで実行されていますが、そうでない場合は、'sudoを追加する必要があります。 ルート権限を取得するコマンドに‘。 CentOS7サーバーへのPowerDNSのインストールを段階的に説明します。

前提条件

  • 次のオペレーティングシステムのいずれかを実行しているサーバー:CentOS7。
  • 潜在的な問題を防ぐために、OSの新規インストールを使用することをお勧めします。
  • サーバーへのSSHアクセス(またはデスクトップを使用している場合はターミナルを開く)。
  • non-root sudo user またはroot userへのアクセス 。 non-root sudo userとして行動することをお勧めします ただし、ルートとして機能するときに注意しないと、システムに害を及ぼす可能性があるためです。

CentOS7にPowerDNSをインストールする

ステップ1.まず、システムが最新であることを確認することから始めましょう。

yum clean all
yum -y update

ステップ2.PowerDNSとバックエンドをインストールします。

まず、システムでEPELリポジトリと必要なすべてのパッケージを有効にする必要があります:

yum install epel-release
yum install bind-utils pdns pdns-recursor pdns-backend-mysql mariadb mariadb-server

起動時にPowerDNSを有効にして、PowerDNSサーバーを起動します:

systemctl enable mariadb 
systemctl enable pdns
systemctl enable pdns-recursor

ステップ3.MariaDBの構成。

デフォルトでは、MariaDBは強化されていません。mysql_secure_installationを使用してMariaDBを保護できます。 脚本。ルートパスワードの設定、匿名ユーザーの削除、リモートルートログインの禁止、テストデータベースの削除と安全なMariaDBへのアクセスを行う各手順を注意深くお読みください。

mysql_secure_installation

ステップ4.MariaDBでPowerDNSデータベースとユーザーを作成します。

MariaDBルートとしてログインし、新しいデータベースとテーブルを作成します:

$ mysql -uroot -p

create user 'powerdns'@'localhost' identified by 'password';
grant all privileges on powerdns.* to 'powerdns'@'localhost';
flush privileges;
use 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                    INT 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);

ステップ5.PowerDNSを設定します。

` /etc/pdns/pdns.confを開きます `ファイルを作成し、次の行を追加します:

allow-axfr-ips=<IPs allowed axfr>
allow-recursion=<IPs allowed recursion>
launch=gmysql
gmysql-host=127.0.0.1
gmysql-user=<yourdbuser>
gmysql-password=<yourdbpassword>
gmysql-dbname=powerdns
local-address=<yourserverIPs>
local-port=53
master=yes
recursor=127.0.0.1:5353
setgid=pdns
setuid=pdns
webserver=yes
webserver-address=<bindipaddress>
webserver-password=<yourpassword>
webserver-port=8081

最後に、PowerDNSサービスを再起動します。

systemctl restart pdns.service
systemctl enable pdns.service

ステップ6.リカーサーを構成します。

` /etc/pdns-recursor/recursor.confを開きます `ファイルを作成し、次の行を追加します:

setuid=pdns-recursor
setgid=pdns-recursor
allow-from=127.0.0.0/8
local-address=127.0.0.1
local-port=5353

Recursorサービスを開始します:

systemctl restart pdns-recursor

テストリカーサー:

host ping.idroot.us 127.0.0.1

Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:

ping.idroot.us has address 194.109.46.8
ping.idroot.us has IPv6 address 2001:888:0:25:169:109:21:66

おめでとうございます。PowerDNSが正常にインストールされました。CentOS7システムにPowerDNSをインストールするためにこのチュートリアルを使用していただきありがとうございます。追加のヘルプや役立つ情報については、PowerDNSの公式Webサイトを確認することをお勧めします。


Cent OS
  1. CentOS7にPHP7、7.2、7.3をインストールする方法

  2. CentOS7にJava11および12をインストールする方法

  3. CentOS7にWine4.0をインストールする方法

  1. CentOS7にVim8.2をインストールする方法

  2. CentOS7にVirtualBoxをインストールする方法

  3. CentOS8にGitをインストールする方法

  1. CentOS8にDockerをインストールする方法

  2. Centos8にJava8および11をインストールする方法

  3. CentOS8にMySQLをインストールする方法