PowerDNS

오픈소스 비즈니스 컨설팅
Pnuskgh (토론 | 기여)님의 2014년 9월 19일 (금) 15:37 판
둘러보기로 가기 검색하러 가기

DNS 솔루션인 PowerDNS를 정리 합니다.

PowerDNS 개요

CentOS 6.5에 설치

PowerDNS 설치

CensOS용 EPEL 설치를 합니다.

PowerDNS를 설치 합니다.

yum install pdns pdns-backend-mysql pdns-recursor


MariaDB에서 Database 등을 생성 합니다.

vi pdns.sql

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,
    primary key(id)
) Engine=InnoDB;
CREATE INDEX rec_name_index ON records(name);
CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);

create table supermasters (
    ip VARCHAR(25) NOT NULL, 
    nameserver VARCHAR(255) NOT NULL, 
    account VARCHAR(40) DEFAULT NULL
) Engine=InnoDB;


mysql -uroot -p mysql

create database powerdns;
grant all privileges on powerdns.* to powerdns@127.0.0.1 identified by 'demo1234';
grant all privileges on powerdns.* to powerdns@localhost identified by 'demo1234';
update user
  set select_priv = 'Y', 
      insert_priv = 'Y', 
      update_priv = 'Y', 
      delete_priv = 'Y', 
      create_priv = 'Y', 
      drop_priv = 'Y', 
      reload_priv = 'Y', 
      shutdown_priv = 'Y', 
      process_priv = 'Y', 
      file_priv = 'Y', 
      grant_priv = 'Y', 
      references_priv = 'Y', 
      index_priv = 'Y', 
      alter_priv = 'Y', 
      show_db_priv = 'Y', 
      super_priv = 'Y', 
      create_tmp_table_priv = 'Y', 
      lock_tables_priv = 'Y', 
      execute_priv = 'Y', 
      repl_slave_priv = 'Y', 
      repl_client_priv = 'Y', 
      create_view_priv = 'Y', 
      show_view_priv = 'Y', 
      create_routine_priv = 'Y', 
      alter_routine_priv = 'Y', 
      create_user_priv = 'Y'
where user = 'powerdns';
commit;
flush privileges;

select host, user, password from user where user = 'powerdns' order by user, host;
select * from user where user = 'powerdns' order by user, host;

use powerdns;
source pownerdns.sql
commit;
show tables;
quit;


vi /etc/pdns/pdns.conf

setuid=pdns                           #--- 이미 있음
setgid=pdns                           #--- 이미 있음
#launch=bind                         #--- 삭제

launch=gmysql
allow-recursion=127.0.0.1,192.168.70.1
config-dir=/etc/pdns
daemon=yes
disable-axfr=yes
guardian=yes
local-port=53
module-dir=/usr/lib64/pdns
recursor=127.0.0.1:5300
socket-dir=/var/run
version-string=powerdns
 
gmysql-host=localhost
gmysql-user=powerdns
gmysql-password=demo1234
gmysql-dbname=powerdns
gmysql-port=3306
#gmysql-socket=/var/lib/mysql/mysql.sock          #--- 향후 사용


vi /etc/pdns-recursor/recursor.conf

local-port = 5300
allow-from=127.0.0.0/8


setup 명령을 사용하여 방화벽 설정을 합니다.

53/tcp, 53/udp


PowerDNS를 시작 합니다.

service pdns restart

service pdns-recursor restart


PowerDNS 설치 확인

yum install bind-utils

dig @localhost www.jopenbusiness.com

PowerAdmin 설치

PowerAdmin 사이트 정보


PowerAdmin 설치


PowerAdmin을 다운로드 합니다.

wget http://jaist.dl.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz
tar xvfz poweradmin-2.1.7.tgz
chown -R apache:apache poweradmin-2.1.7
mv poweradmin-2.1.7 /nas/www/ossnode101/public_html/poweradmin


필요한 PHP 라이브러리를 설치 합니다.

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6-8.noarch.rpm             #--- EPEL 라이브러리가 없으면 설정 합니다.


yum install php-mcrypt


http://ossnode101.ossbiz.co.kr/poweradmin/install/ 로 접속하여 설치를 진행 합니다.


설치 완료 후 install 폴더를 삭제 합니다.

cd /nas/www/ossnode101/public_html/poweradmin

rm -rf install


http://ossnode101.ossbiz.co.kr/poweradmin/ 사이트에 admin / demo1234 사용자로 접속하여 사용 합니다.


설치 후 config.inc.php 파일이 없다는 오류가 표시되면서 정상적으로 동작하지 않을 경우 아래와 같이 작업 합니다.

cd inc
cp config-me.inc.php config.inc.php


vi config.inc.php

$db_host = 'localhost';
$db_port = '3306';
$db_user = 'powerdns';
$db_pass = 'demo1234';
$db_name = 'powerdns';
$db_type = 'mysql';
$session_key = 'dfjdd762he';
$iface_lang = 'en_EN';

PowerDNS 설정

records 테이블의 type 종류

type</span 상세
NS Name Server
A 도메인에 IP 할당
MX Mail Exchange
CNAME 도메인 별칭에 IP 할당
PTR IP에 도메인 할당


DNS 설정 샘플




ppp

참고 문헌