Linux
[centOS] 네임서버 구축 - PowerDNS 4.1 & Poweradmin 2.1 설치
- 2022.12.13 10:46:38
일반적으로, 네임서버 구축시 bind를 많이 사용 하지만, DBMS와 연동되어 ui로 간편하게 DNS를 관리할 수 있도록 해주는 PowerDNS를 빼놓을 수는 없다. 다만, powerDNS는 아파치와 MariaDB 데몬이 항시 실행되고 있어야 하기 때문에 서버의 자원을 bind보다는 많이 점유하므로 서버 사양을 고려하여 bind를 대체하여 사용할 수 있을지 잘 판단해 봐야 한다. [!]YUM으로 pdns 설치[/!] YUM으로 간단하게 pdns를 설치할 수 있다. #yum install pdns
CentOS 7.5 기준으로 yum 으로 설치되는 pdns 버전은 4.1.14다. [!]pdns 에서 사용할 DB 생성[/!] pdns는 DBMS를 기반으로 하기 서버에 mariaDB 데몬이 실행되고 있어야 하며 MariaDB 에서 사용할 DB를 하나 만들어야 한다. #mysql -u root -p
로 mysql에 접속한다. MariaDB [(none)] > use mysql;
Mysql에 접속 되면 위와 같이 mysql DB를 선택한다. MariaDB [(mysql)] > create database pdns_db default character set utf8;
pdns_db 데이터베이스를 생성한다. MariaDB [(mysql)] > flush privileges;
반영을 위해 flush privileges 한다. [!]pdns DB에 관련 Table 생성[/!] 앞서 생성한 DB에 pdns 관련 table를 생성한다. pdns에서 필요로 하는 table은 16개다. 하나라도 누락되면 pdns구동이 되지 않으니 반드시 빠짐없이 생성해야 한다. 아래 sql구문을 복사-붙여넣기 하여 생성해도 된다. CREATE TABLE `comments` (
`id` int(11) NOT NULL, `domain_id` int(11) NOT NULL, `name` varchar(255) NOT NULL, `type` varchar(10) NOT NULL, `modified_at` int(11) NOT NULL, `account` varchar(40) NOT NULL, `comment` text NOT NULL ) ENGINE=InnoDB; CREATE TABLE `cryptokeys` ( `id` int(11) NOT NULL, `domain_id` int(11) NOT NULL, `flags` int(11) NOT NULL, `active` tinyint(1) DEFAULT NULL, `content` text ) ENGINE=InnoDB; CREATE TABLE `domainmetadata` ( `id` int(11) NOT NULL, `domain_id` int(11) NOT NULL, `kind` varchar(32) DEFAULT NULL, `content` text ) ENGINE=InnoDB; CREATE TABLE `domains` ( `id` int(11) NOT NULL, `name` varchar(255) NOT NULL, `master` varchar(128) DEFAULT NULL, `last_check` int(11) DEFAULT NULL, `type` varchar(6) NOT NULL, `notified_serial` int(11) DEFAULT NULL, `account` varchar(40) DEFAULT NULL ) ENGINE=InnoDB; CREATE TABLE `migrations` ( `domain_id` varchar(255) NOT NULL, `record_id` int(11) NOT NULL ) ENGINE=InnoDB; CREATE TABLE `perm_items` ( `id` int(11) NOT NULL, `name` varchar(64) NOT NULL, `descr` varchar(1024) NOT NULL ) ENGINE=InnoDB; CREATE TABLE `perm_templ` ( `id` int(11) NOT NULL, `name` varchar(128) NOT NULL, `descr` varchar(1024) NOT NULL ) ENGINE=InnoDB; CREATE TABLE `perm_templ_items` ( `id` int(11) NOT NULL, `templ_id` int(4) NOT NULL, `perm_id` int(4) NOT NULL ) ENGINE=InnoDB; CREATE TABLE `records` ( `id` int(11) NOT NULL, `domain_id` int(11) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, `type` varchar(6) DEFAULT NULL, `content` varchar(255) DEFAULT NULL, `ttl` int(11) DEFAULT NULL, `prio` int(11) DEFAULT NULL, `change_date` int(11) DEFAULT NULL, `disabled` char(1) NOT NULL DEFAULT '0', `ordername` varchar(255) DEFAULT NULL, `auth` tinyint(1) NOT NULL DEFAULT '1' ) ENGINE=InnoDB; CREATE TABLE `records_zone_templ` ( `domain_id` int(11) NOT NULL, `record_id` int(11) NOT NULL, `zone_templ_id` int(11) NOT NULL ) ENGINE=InnoDB; CREATE TABLE `supermasters` ( `ip` varchar(25) NOT NULL, `nameserver` varchar(255) NOT NULL, `account` varchar(40) DEFAULT NULL ) ENGINE=InnoDB; CREATE TABLE `tsigkeys` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `algorithm` varchar(50) DEFAULT NULL, `secret` varchar(255) DEFAULT NULL ) ENGINE=InnoDB; CREATE TABLE `users` ( `id` int(11) NOT NULL, `username` varchar(64) NOT NULL, `password` varchar(128) NOT NULL, `fullname` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, `description` varchar(1024) NOT NULL, `perm_templ` int(1) NOT NULL, `active` int(1) NOT NULL, `use_ldap` int(1) NOT NULL ) ENGINE=InnoDB; CREATE TABLE `zones` ( `id` int(4) NOT NULL, `domain_id` int(4) NOT NULL, `owner` int(4) NOT NULL, `comment` varchar(1024) DEFAULT NULL, `zone_templ_id` int(4) NOT NULL ) ENGINE=InnoDB; CREATE TABLE `zone_templ` ( `id` int(11) NOT NULL, `name` varchar(128) NOT NULL, `descr` varchar(1024) NOT NULL, `owner` int(11) NOT NULL ) ENGINE=InnoDB; CREATE TABLE `zone_templ_records` ( `id` int(11) NOT NULL, `zone_templ_id` int(11) NOT NULL, `name` varchar(255) NOT NULL, `type` varchar(6) NOT NULL, `content` varchar(255) NOT NULL, `ttl` int(11) NOT NULL, `prio` int(11) NOT NULL ) ENGINE=InnoDB; ALTER TABLE `comments` ADD PRIMARY KEY (`id`), ADD KEY `comments_domain_id_idx` (`domain_id`), ADD KEY `comments_name_type_idx` (`name`,`type`), ADD KEY `comments_order_idx` (`domain_id`,`modified_at`); ALTER TABLE `cryptokeys` ADD PRIMARY KEY (`id`), ADD KEY `domainidindex` (`domain_id`); ALTER TABLE `domainmetadata` ADD PRIMARY KEY (`id`), ADD KEY `domainmetadata_idx` (`domain_id`,`kind`); ALTER TABLE `domains` ADD PRIMARY KEY (`id`); ALTER TABLE `perm_items` ADD PRIMARY KEY (`id`); ALTER TABLE `perm_templ` ADD PRIMARY KEY (`id`); ALTER TABLE `perm_templ_items` ADD PRIMARY KEY (`id`); ALTER TABLE `records` ADD PRIMARY KEY (`id`), ADD KEY `rec_name_index` (`name`), ADD KEY `nametype_index` (`name`,`type`), ADD KEY `domain_id` (`domain_id`); ALTER TABLE `tsigkeys` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `namealgoindex` (`name`,`algorithm`); ALTER TABLE `users` ADD PRIMARY KEY (`id`); ALTER TABLE `zones` ADD PRIMARY KEY (`id`); ALTER TABLE `zone_templ` ADD PRIMARY KEY (`id`); ALTER TABLE `zone_templ_records` ADD PRIMARY KEY (`id`); ALTER TABLE `comments` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `cryptokeys` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `domainmetadata` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `domains` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `perm_items` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `perm_templ` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `perm_templ_items` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `records` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `tsigkeys` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `users` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `zones` MODIFY `id` int(4) NOT NULL AUTO_INCREMENT; ALTER TABLE `zone_templ` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `zone_templ_records` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; [!]pdns 설정파일 수정[/!] pdns와 mariaDB 연동을 위해 pdns 설정 파일을 열어 수정한다. #vi /etc/pdns/pdns.conf
vi 에디터로 설정 파일을 연다 launch=gmysql
gmysql-host=127.0.0.1 gmysql-user=db 사용자 아이디 gmysql-password=비밀번호 gmysql-dbname=pdns_db 위 변수를 찾아 mariadb 사용자 정보와 DB명을 입력한다. #systemctl start pdns
설정을 마쳤다면, pdns를 가동시킨다. [!]poweradmin 설치[/!] pdns 설정을 위해 PHP로 개발된 pdns관리 인터페이스 poweradmin을 설치한다. poweradmin은 PHP기 때문에 서버에 apache 데몬이 실행되고 있어야 한다. #cd /home/poweradmin/public_html 설치할 홈디렉토리
#wget https://jaist.dl.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz #tar xvf poweradmin-2.1.7.tgz 위와 같이 wget으로 공식 웹사이트에서 poweradmin 압축 파일을 다운로드 하고 홈디렉토리 내에 압축을 푼다. (wget 수행시 파일을 못찾는 경우 본 글 하단에 첨부된 파일로 시도하면 됨) #cp ./inc/config-me.inc.php ./inc/config.inc.php
번들로 들어있는 config-me.inc.php 파일을 복사하여 config.inc.php 파일을 새로 만든다. #vi ./inc/config.inc.php
설정파일 변경을 위해 config.inc.php를 vi에디터로 연다 $db_host = 'localhost';
$db_port = '3306'; $db_user = 'DB계정 아이디'; $db_pass = 'DB계정 패스워드'; $db_name = '생성한 DB명'; 위 변수를 찾아 생성한 DB 정보로 변경한다. [!]poweradmin 실행 및 설치[/!] 웹브라우저에서 powerdns를 접속하여 설치를 진행하면 모든 설치 과정이 완료된다. 화면상에 안내된 설명대로 진행하면 어려움 없이 설치 가능하다. |
|
첨부파일1 | poweradmin-2.1.7.tgz (289.5K) 90 회 다운로드 |
---|