서버 관리 · 7 min read · Oct 01, 2025
CentOS 7에 PowerDNS 및 Poweradmin 설치하는 방법

PowerDNS (pdns)는 C++로 작성된 오픈 소스 DNS 서버로, GPL 라이센스 하에 배포됩니다. 이는 전통적인 DNS 서버인 Bind의 좋은 대안이 되었으며, 더 나은 성능과 낮은 메모리 요구 사항으로 설계되었습니다. PowerDNS는 권한 있는 서버와 재귀 서버 두 가지 제품을 제공합니다. PowerDNS 권한 있는 서버는 일반 Bind 존 파일, MySQL, PostgreSQL, SQLite3 또는 LDAP와 같은 RDBMS를 포함한 다양한 백엔드를 통해 구성할 수 있습니다.
이 튜토리얼에서는 MariaDB 데이터베이스 서버를 백엔드로 사용하고 Poweradmin을 통해 간편한 DNS 관리를 위해 PowerDNS 권한 있는 서버를 설치하고 구성하는 방법을 보여드리겠습니다.
전제 조건
- CentOS 7 서버
- 루트 권한
우리가 할 일:
- EPEL 및 Remi 리포지토리 설치
- MariaDB 설치 및 구성
- PowerDNS 설치
- Poweradmin 설치
- Poweradmin 설치 후 작업
- 샘플 존 생성
1단계 - EPEL 및 Remi 리포지토리 설치
먼저 PowerDNS 설치를 위한 종속성을 설치해야 합니다. EPEL 리포지토리와 PHP 7.2 설치를 위한 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-php722단계 - MariaDB 설치 및 구성
PowerDNS 권한 있는 서버는 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’라는 새 데이터베이스를 생성하고 ‘pdns’라는 새 사용자에게 비밀번호 ‘pdnspassword2018’으로 모든 데이터베이스 권한을 부여합니다.
create database powerdns;
grant all privileges on powerdns.* to pdns@localhost 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-utilsPowerDNS 패키지를 설치한 후 ‘/etc/pdns/‘ 디렉토리로 이동하여 vim 편집기를 사용하여 구성 파일 ‘pdns.conf’를 편집합니다.
cd /etc/pdns/
vim pdns.conf기본적으로 PowerDNS는 ‘bind’를 백엔드로 사용하고 있습니다. 따라서 ‘launch=bind’ 구성 앞에 주석 ‘#’을 입력하고 아래와 같이 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 서비스를 추가합니다.
firebase-cmd --add-service=dns --permanent
firebase-cmd --reload
PowerDNS 서비스가 실행 중인지 확인하려면 다음 명령어를 사용합니다.
netstat -tap | grep pdns
netstat -tulpn | grep 53
dig @10.9.9.10결과적으로 pdns 서비스가 포트 53에서 실행 중이며 PowerDNS 서버로부터 응답을 받습니다.

4단계 - Poweradmin 설치
이번 단계에서는 PowerDNS를 위한 DNS 관리 도구인 ‘Poweradmin’을 설치할 것입니다. 이는 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-mysqlihttpd 및 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.tgzpoweradmin 압축 파일을 추출하고 이름을 변경합니다.
tar xvf poweradmin-2.1.7.tgz
mv poweradmin-2.1.7/ poweradmin/그 후, 방화벽에 HTTP 및 HTTPS 프로토콜을 추가합니다.
firebase-cmd --add-service={http,https} --permanent
firebase-cmd --reload이제 Poweradmin 설치 후 작업을 준비합니다.
5단계 - Poweradmin 설치 후 작업
웹 브라우저를 열고 서버 IP 주소와 함께 /poweradmin/install/ 경로 URL을 입력하여 설치를 진행합니다. 제 IP는:
http://10.9.9.10/poweradmin/install/
선호하는 언어를 선택하고 ‘Go to Step 2’ 버튼을 클릭합니다.
이제 ‘Go to Step 3’ 버튼을 클릭합니다.
그리고 데이터베이스 구성 화면이 표시됩니다. 우리가 생성한 PowerDNS 데이터베이스 세부정보와 PowerDNS의 관리자 비밀번호를 입력합니다.

‘Go to Step 4’ 버튼을 클릭합니다.
그 후, 제한된 권한을 가진 새 사용자를 생성해야 합니다. 다음과 같이 세부정보를 입력하고 사용자, 비밀번호 등을 자신의 것으로 변경합니다.
이제 ‘Go to Step 5’ 버튼을 클릭합니다.
아래와 같은 페이지가 표시됩니다.
서버 터미널로 다시 돌아가 루트 사용자와 비밀번호로 로그인합니다. 그런 다음 페이지에 있는 MySQL 쿼리를 실행합니다.
mysql -u root -p
PASSWORD
GRANT SELECT, INSERT, UPDATE, DELETE
ON powerdns.*
TO 'hakase'@'localhost'
IDENTIFIED BY 'hakase-labs123';
이제 웹 브라우저로 돌아가 ‘Go to Step 6’ 버튼을 클릭합니다.
아래와 같은 페이지가 표시됩니다.

설치 프로그램이 새 구성 ‘../inc/config.inc.php’를 생성할 수 없었습니다. 따라서 수동으로 생성해야 합니다.
터미널 서버로 다시 돌아가 ‘/var/www/html/poweradmin’ 디렉토리로 이동하여 새 구성 파일 ‘inc/config.inc.php’를 생성합니다.
cd /var/www/html/poweradmin
vim inc/config.inc.php이제 페이지의 PHP 스크립트를 붙여넣습니다.
저장하고 닫은 후, 다시 브라우저로 돌아가 버튼을 클릭합니다.

설치가 완료되었습니다.
선택적으로:
다른 동적 제공업체에서 사용하는 URL을 지원하려면 htaccess 파일을 복사합니다.
cd /var/www/html/poweradmin
cp install/htaccess.dist .htaccess그 후, ‘install’ 디렉토리를 반드시 제거해야 합니다.
rm -rf /var/www/html/poweradmin/install웹 브라우저로 돌아가 아래 URL을 사용하여 Poweradmin 대시보드에 로그인합니다.
기본 사용자 ‘admin’과 비밀번호로 로그인하고 ‘Go’ 버튼을 클릭합니다.
결과적으로 Poweradmin 대시보드가 표시되며 설치가 완료됩니다.
6단계 - 샘플 존 및 DNS 레코드 생성
이 단계에서는 ‘emma.io’라는 도메인에 대한 새 DNS 존을 생성하여 PowerDNS 및 Poweradmin 설치를 테스트할 것입니다.
Poweradmin 대시보드에서 ‘Add master zone’ 메뉴를 클릭합니다.
존 이름을 도메인 이름 ‘emaa.io’로 설정하고 ‘Add zone’ 버튼을 클릭합니다.
‘List zones’ 메뉴를 클릭하여 모든 사용 가능한 존을 가져옵니다. 그리고 ‘emma.io’ 존의 ‘edit’ 버튼을 클릭합니다.
‘List zones’ 메뉴를 클릭하여 모든 사용 가능한 존을 가져옵니다. 그리고 ‘emma.io’ 존의 ‘edit’ 버튼을 클릭합니다.

이제 ‘Add record’ 버튼을 클릭하여 도메인 ‘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의 설치와 구성이 성공적으로 완료되었습니다.
참고
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.