웹사이트 검색

CentOS 7에 PowerDNS 및 Poweradmin을 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. 우리가 할 일:\n
  3. 1단계 - EPEL 및 Remi 저장소 설치
  4. 2단계 - MariaDB 설치 및 구성
  5. 3단계 - PowerDNS 설치
  6. 4단계 - Poweradmin 설치
  7. 5단계 - Poweradmin 설치 후\n
  8. 6단계 - 샘플 영역 및 DNS 레코드 만들기\n
  9. 참조

PowerDNS(pdns)는 C++로 작성되고 GPL 라이선스에 따라 출시된 오픈 소스 DNS 서버입니다. 더 나은 성능과 낮은 메모리 요구 사항으로 설계된 기존 DNS 서버 Bind의 좋은 대안이 되었습니다. PowerDNS는 Authoritative 서버와 Recursor라는 두 가지 제품을 제공합니다. PowerDNS Authoritative 서버는 MySQL, PostgreSQL, SQLite3 또는 LDAP와 같은 일반 바인딩 영역 파일, RDBMS를 포함하여 다양한 백엔드를 통해 구성할 수 있습니다.

이 튜토리얼에서는 MariaDB 데이터베이스 서버를 백엔드로 사용하고 쉬운 DNS 관리를 위해 Poweradmin을 사용하여 PowerDNS Authoritative 서버를 설치 및 구성하는 방법을 보여줍니다.

전제 조건

  • CentOS 7 서버
  • 루트 권한\n

우리가 할 일:

  1. EPEL 및 Remi 저장소 설치
  2. MariaDB 설치 및 구성
  3. PowerDNS 설치
  4. Poweradmin 설치
  5. Poweradmin 사후 설치\n
  6. 샘플 영역 만들기\n

1단계 - EPEL 및 Remi 리포지토리 설치

먼저 PowerDNS 설치를 위한 종속성을 설치해야 합니다. PHP 7.2 설치를 위해 EPEL 리포지토리와 REMI를 설치하려고 했습니다.

다음 명령을 사용하여 EPEL 및 PHP Remi 저장소를 설치합니다.

yum -y install epel-release
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

이러한 리포지토리가 시스템에 추가되면 yum-utils 패키지를 설치합니다.

yum -y install yum-utils

그리고 다음 명령을 사용하여 PHP 7.2 Remi 저장소를 활성화합니다.

yum-config-manager --enable remi-php72

2단계 - MariaDB 설치 및 구성

PowerDNS Authoritative 서버는 MySQL/MariaDB 데이터베이스 서버를 포함하여 다른 백엔드를 지원합니다. 백엔드의 용어는 DNS 레코드(및 일부 메타 데이터)를 포함하는 서버가 참조할 데이터 저장소입니다. 이 가이드에서는 MariaDB를 백엔드로 사용합니다.

다음 yum 명령을 사용하여 MariaDB를 설치합니다.

yum -y install mariadb mariadb-server

설치가 완료되면 MariaDB 서비스를 시작하고 시작 부팅 시간에 추가합니다.

systemctl start mariadb
systemctl enable mariadb

다음으로 mysql_secure_installation이라는 대화형 도구를 사용하여 MariaDB의 루트 암호를 구성하려고 했습니다.

아래 명령을 실행합니다.

mysql_secure_installation

그러면 데이터베이스 서버의 루트 비밀번호를 구성하라는 메시지가 표시됩니다. Y를 입력하여 루트 암호를 설정하고 강력한 암호를 입력하십시오.

Set root password? [Y/n] Y
New password:
Re-enter new password:

다른 경우 Y를 입력하여 예를 선택하십시오.

Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

결과적으로 MariaDB 데이터베이스 서버를 설치하고 인증을 위한 루트 암호를 설정했습니다.

다음으로 PowerDNS 설치를 위한 새 데이터베이스와 사용자를 생성합니다. 사용자 루트와 암호를 사용하여 MySQL 셸에 로그인합니다.

아래의 MySQL 명령을 실행하십시오.

mysql -u root -p
PASSWORD

이제 powerdns라는 새 데이터베이스를 만들고 암호 pdnspassword2018을 사용하여 pdns라는 새 사용자에게 모든 데이터베이스 권한을 부여합니다.

create database powerdns;
grant all privileges on powerdns.* to identified by 'pdnspassword2018';
flush privileges;

그런 다음 아래의 MySQL 쿼리를 실행하여 PowerDNS 데이터베이스에 대한 테이블 구조를 만듭니다.

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                    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);

quit;

그 결과 MySQL/MariaDB 데이터베이스와 PowerDNS 설치를 위한 사용자가 생성되었습니다.

3단계 - PowerDNS 설치

다음 명령을 사용하여 PowerDNS 및 필요한 모든 패키지를 설치합니다.

yum -y install pdns pdns-backend-mysql bind-utils

PowerDNS 패키지를 설치한 후 /etc/pdns/ 디렉토리로 이동하고 vim 편집기를 사용하여 구성 파일 pdns.conf를 편집합니다.

cd /etc/pdns/
vim pdns.conf

기본적으로 PowerDNS는 바인딩을 백엔드로 사용합니다. 따라서 launch=bind 설정 앞에 comment #을 입력하고 아래와 같이 MySQL 백엔드 설정을 붙여넣습니다.

#launch=bind

launch=gmysql
gmysql-host=localhost
gmysql-user=pdns
gmysql-password=pdnspassword2018
gmysql-dbname=powerdns

저장하고 닫습니다.

이제 pdns 서비스를 시작하고 시작 부팅 시간에 추가하십시오.

systemctl start pdns
systemctl enable pdns

그런 다음 DNS 서비스를 방화벽에 추가하십시오.

firewall-cmd --add-service=dns --permanent
firewall-cmd --reload

그리고 PowerDNS 서비스가 시작되어 실행 중입니다. 다음 명령을 사용하여 확인하십시오.

netstat -tap | grep pdns
netstat -tulpn | grep 53
dig @10.9.9.10

결과적으로 pdns 서비스가 시작되어 포트 53에서 실행되고 PowerDNS 서버에서 응답을 받게 됩니다.

4단계 - Poweradmin 설치

이 단계에서는 Poweradmin이라는 PowerDNS용 DNS 관리를 설치하려고 했습니다. PHP 기반의 웹 애플리케이션이므로 애플리케이션을 실행하려면 PHP와 웹 서버를 설치해야 합니다.

다음 명령을 사용하여 httpd 웹 서버 및 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

설치 후 추가 PHP Pear 패키지를 설치해야 합니다. 다음 명령을 실행합니다.

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

httpd 및 PHP 설치가 완료되면 httpd 서비스를 시작하고 시작 부팅 시간에 추가하십시오.

systemctl start httpd
systemctl enable httpd

다음으로 /var/www/html 디렉토리로 이동하여 poweradmin 소스 코드를 다운로드합니다.

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

poweradmin 압축 파일을 추출하고 이름을 바꿉니다.

tar xvf poweradmin-2.1.7.tgz
mv poweradmin-2.1.7/ poweradmin/

그런 다음 HTTP 및 HTTPS 프로토콜을 방화벽에 추가하십시오.

firewall-cmd --add-service={http,https} --permanent
firewall-cmd --reload

그리고 설치 후 poweradmin을 사용할 준비가 되었습니다.

5단계 - Poweradmin 설치 후

웹 브라우저를 열고 서버 IP 주소와 설치를 위한 /poweradmin/install/ 경로 URL을 입력합니다. 내 것은:

http://10.9.9.10/poweradmin/install/

원하는 언어를 선택하고 2단계로 이동 버튼을 클릭합니다.

이제 3단계로 이동 버튼을 클릭하십시오.

그러면 데이터베이스 구성이 표시됩니다. 생성한 PowerDNS 데이터베이스 세부 정보와 PowerDNS의 관리자 암호를 입력합니다.

4단계로 이동 버튼을 클릭합니다.

그런 다음 새 사용자를 생성해야 권한이 제한됩니다. 다음과 같이 세부 정보를 입력하고 사용자, 암호 등을 자신의 것으로 변경하십시오.

이제 5단계로 이동 버튼을 클릭합니다.

그러면 아래와 같은 페이지가 표시됩니다.

터미널 서버를 다시 열고 루트 사용자와 비밀번호로 로그인하십시오. 그런 다음 페이지에서와 같이 MySQL 쿼리를 실행합니다.

mysql -u root -p
PASSWORD

GRANT SELECT, INSERT, UPDATE, DELETE
ON powerdns.*
TO 'hakase'@'localhost'
IDENTIFIED BY 'hakase-labs123';

이제 웹 브라우저로 돌아가서 6단계로 이동 버튼을 클릭합니다.

그러면 아래와 같은 페이지가 표시됩니다.

설치 프로그램이 새 구성 ../inc/config.inc.php를 생성할 수 없습니다. 따라서 수동으로 생성해야 합니다.

터미널 서버로 돌아가서 /var/www/html/poweradmin 디렉토리로 이동하고 새 구성 파일 inc/config.inc.php를 만듭니다.

cd /var/www/html/poweradmin
vim inc/config.inc.php

이제 페이지의 PHP 스크립트를 여기에 붙여넣습니다.

<?php

$db_host                = 'localhost';
$db_user                = 'hakase';
$db_pass                = 'hakase-labs123';
$db_name                = 'powerdns';
$db_type                = 'mysql';
$db_layer               = 'PDO';

$session_key            = '=uetwJeD2#uApgO)2Ekj+S#oN1Khhoj';

$iface_lang             = 'en_EN';

$dns_hostmaster         = 'server.hakase-labs.io';
$dns_ns1                = 'ns1.hakase-labs.io';
$dns_ns2                = 'ns2.hakase-labs.io';

저장하고 닫은 다음 브라우저로 돌아가 버튼을 클릭합니다.

그리고 설치가 완료되었습니다.

선택적으로:

다른 동적 제공자가 사용하는 URL을 지원하려면 htaccess 파일을 복사하십시오.

cd /var/www/html/poweradmin
cp install/htaccess.dist .htaccess

그런 다음 설치 디렉토리를 제거해야 합니다.

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

다시 웹 브라우저로 돌아가서 아래와 같은 URL을 사용하여 Poweradmin 대시보드에 로그인합니다.

http://10.9.9.10/poweradmin/

기본 사용자 admin과 암호로 로그인하고 이동 버튼을 클릭합니다.

결과적으로 Poweradmin 대시보드가 표시되고 설치가 완료됩니다.

6단계 - 샘플 영역 및 DNS 레코드 생성

이 단계에서 emma.io라는 도메인에 대한 새 DNS 영역을 생성하여 PowerDNS 및 Poweradmin 설치를 테스트했습니다.

Poweradmin 대시보드에서 마스터 영역 추가 메뉴를 클릭합니다.

도메인 이름 emaa.io로 영역 이름을 설정하고 영역 추가 버튼을 클릭합니다.

목록 영역 메뉴를 클릭하여 사용 가능한 모든 영역을 가져옵니다. 그리고 영역 emma.io의 편집 버튼을 클릭합니다.

목록 영역 메뉴를 클릭하여 사용 가능한 모든 영역을 가져옵니다. 그리고 영역 emma.io의 편집 버튼을 클릭합니다.

이제 레코드 추가 버튼을 클릭하고 emma.io라는 도메인에 대한 DNS 영역과 DNS 레코드를 성공적으로 추가합니다.

다음으로 dig DNS 유틸리티 명령을 사용하여 도메인 emma.io를 테스트하려고 했습니다.

도메인 emma.io의 이름 서버 또는 ns 레코드를 확인하십시오.

dig NS emma.io @10.9.9.10

도메인 emma.io의 A DNS 레코드를 확인합니다.

dig A emma.io @10.9.9.10

그러면 emma.io 도메인에 DNS 서버 ns1.hakase-labs.io의 네임서버가 있고 해당 도메인 이름의 A가 서버 IP 주소 10.9.9.11의 상단 구성과 일치하는 것으로 표시됩니다.

마지막으로 CentOS 7에서 PowerDNS 및 Poweradmin의 설치 및 구성이 성공적으로 완료되었습니다.

참조

  • https://github.com/poweradmin/poweradmin