- PowerDNS 개요
- CentOS 6.5에 설치
- PowerDNS 설치
- PowerAdmin 설치
- PowerDNS 설정
- Database 입출력으로 관리
- PowerAdmin으로 관리
- DNS Server 등록
- 참고 문헌
DNS 솔루션인 PowerDNS를 정리 합니다.
홈페이지 : https://www.powerdns.com/
다운로드 :
라이선스 :
플랫폼 :
PowerDNS 개요
PowerDNS의 테이블간 관계도
[700px|PowerDNS Architecture.png](File:PowerDNS Architecture.png.md)
CentOS 6.5에 설치
PowerDNS 설치
[CensOS용 EPEL 설치](CentOS.md#EPEL .EC.84.A4.EC.B9.98.md)를 합니다.
PowerDNS를 설치 합니다.
{| cellspacing="1" cellpadding="1" style="color: rgb(0, 0, 0); font-family: sans-serif; line-height: 19.0499992370605px; width: 853px;"
|-
| style="background-color: rgb(241, 241, 241);" | yum install pdns pdns-backend-mysql pdns-recursor
|}
MariaDB에서 Database 등을 생성 합니다.
vi pdns.sql
{| cellspacing="1" cellpadding="1" style="color: rgb(0, 0, 0); font-family: sans-serif; line-height: 19.0499992370605px; width: 853px;"
|-
| style="background-color: rgb(241, 241, 241);" |
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
{| cellspacing="1" cellpadding="1" style="color: rgb(0, 0, 0); font-family: sans-serif; line-height: 19.0499992370605px; width: 853px;"
|-
| style="background-color: rgb(241, 241, 241);" |
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 pdns.sql
commit;
show tables;
quit;
|}
vi /etc/pdns/pdns.conf
{| cellspacing="1" cellpadding="1" style="color: rgb(0, 0, 0); font-family: sans-serif; line-height: 19.0499992370605px; width: 853px;"
|-
| style="background-color: rgb(241, 241, 241);" |
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
{| cellspacing="1" cellpadding="1" style="color: rgb(0, 0, 0); font-family: sans-serif; line-height: 19.0499992370605px; width: 853px;"
|-
| style="background-color: rgb(241, 241, 241);" | local-port = 5300
allow-from=127.0.0.0/8
|}
setup 명령을 사용하여 방화벽 설정을 합니다.
{| cellspacing="1" cellpadding="1" style="color: rgb(0, 0, 0); font-family: sans-serif; line-height: 19.0499992370605px; width: 853px;"
|-
| style="background-color: rgb(241, 241, 241);" | 53/tcp, 53/udp
|}
PowerDNS를 시작 합니다.
{| cellspacing="1" cellpadding="1" style="color: rgb(0, 0, 0); font-family: sans-serif; line-height: 19.0499992370605px; width: 853px;"
|-
| style="background-color: rgb(241, 241, 241);" |
service pdns restart
service pdns-recursor restart
|}
PowerDNS 설치 확인
{| cellspacing="1" cellpadding="1" style="color: rgb(0, 0, 0); font-family: sans-serif; line-height: 19.0499992370605px; width: 853px;"
|-
| style="background-color: rgb(241, 241, 241);" |
yum install bind-utils
dig @localhost www.jopenbusiness.com
nslookup www.jopenbusiness.com localhost
|}
PowerAdmin 설치
'''PowerAdmin 사이트 정보'''
홈페이지 : http://www.poweradmin.org/
'''PowerAdmin 설치'''
PowerAdmin을 다운로드 합니다.
{| cellspacing="1" cellpadding="1" style="color: rgb(0, 0, 0); font-family: sans-serif; line-height: 19.0499992370605px; width: 853px;"
|-
| style="background-color: rgb(241, 241, 241);" |
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
|}
{| cellspacing="1" cellpadding="1" style="color: rgb(0, 0, 0); font-family: sans-serif; line-height: 19.0499992370605px; width: 853px;"
|-
| style="background-color: rgb(241, 241, 241);" |
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/](http://ossnode101.ossbiz.co.kr/poweradmin/install/) 로 접속하여 설치를 진행 합니다.
Step 1
[File:PowerAdmin Install 001.png](File:PowerAdmin Install 001.png.md)
Step 2
[700px|PowerAdmin Install 002.png](File:PowerAdmin Install 002.png.md)
Step 3
[700px|PowerAdmin Install 003.png](File:PowerAdmin Install 003.png.md)
Step 4
[700px|PowerAdmin Install 004.png](File:PowerAdmin Install 004.png.md)
Step 5
[700px|PowerAdmin Install 005.png](File:PowerAdmin Install 005.png.md)
Step 6
[700px|PowerAdmin Install 006.png](File:PowerAdmin Install 006.png.md)
Step 7
[700px|PowerAdmin Install 007.png](File:PowerAdmin Install 007.png.md)
설치 완료 후 install 폴더를 삭제 합니다.
{| cellspacing="1" cellpadding="1" style="color: rgb(0, 0, 0); font-family: sans-serif; line-height: 19.0499992370605px; width: 853px;"
|-
| style="background-color: rgb(241, 241, 241);" |
cd /nas/www/ossnode101/public_html/poweradmin
rm -rf install
|}
http://ossnode101.ossbiz.co.kr/poweradmin/ 사이트에 admin / demo1234 사용자로 접속하여 사용 합니다.
설치 후 config.inc.php 파일이 없다는 오류가 표시되면서 정상적으로 동작하지 않을 경우 아래와 같이 작업 합니다.
{| cellspacing="1" cellpadding="1" style="color: rgb(0, 0, 0); font-family: sans-serif; line-height: 19.0499992370605px; width: 853px;"
|-
| style="background-color: rgb(241, 241, 241);" |
cd inc
cp config-me.inc.php config.inc.php
|}
vi config.inc.php
{| cellspacing="1" cellpadding="1" style="color: rgb(0, 0, 0); font-family: sans-serif; line-height: 19.0499992370605px; width: 853px;"
|-
| style="background-color: rgb(241, 241, 241);" |
$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 설정
Database 입출력으로 관리
'''records 테이블의 type 종류'''
{| border="1" cellspacing="0" cellpadding="2" style="width: 100%;"
|-
| style="text-align: center; background-color: rgb(148, 138, 84);" | '''type'''
| style="text-align: center; background-color: rgb(148, 138, 84);" | '''상세'''
|-
| style="text-align: center;" | NS
Name Server |
---|
style="text-align: center;" |
도메인에 IP 할당 |
- |
style="text-align: center;" |
Mail Exchange |
- |
style="text-align: center;" |
도메인 별칭에 IP 할당 |
- |
style="text-align: center;" |
IP에 도메인 할당 |
} |
'''DNS 설정 샘플'''
설치 후 config.inc.php 파일이 없다는 오류가 표시되면서 정상적으로 동작하지 않을 경우 아래와 같이 작업 합니다.
{| cellspacing="1" cellpadding="1" style="color: rgb(0, 0, 0); font-family: sans-serif; line-height: 19.0499992370605px; width: 853px;"
|-
| style="background-color: rgb(241, 241, 241);" |
#--- 도메인 등록
INSERT INTO domains (name, master, type, notified_serial) VALUES ('jopenbusiness.com', '', 'MASTER', 1);''
select id, name from domains where name = 'jopenbusiness.com';
#--- NS : Name Server 등록
INSERT INTO records (domain_id, name, type, content, ttl, prio, change_date)
VALUES (1, 'jopenbusiness.com', 'NS', 'ns.jopenbusiness.com', 300, 0, 1267002606);
#--- A : 도메인에 IP 할당
INSERT INTO records (domain_id, name, type, content, ttl, prio, change_date)
VALUES (1, 'mail.jopenbusiness.com', 'A', '192.168.70.1', 300, 0, 1267002606);
#--- MX : Mail Exchange 설정
INSERT INTO records (domain_id, name, type, content, ttl, prio, change_date)
VALUES (1, 'jopenbusiness.com', 'MX', 'mail.jopenbusiness.com', 300, 10, 1267002606);
#--- CNAME : 도메인의 별칭에 IP 할당
INSERT INTO records (domain_id, name, type, content, ttl, prio, change_date)
VALUES (1, 'mail01.jopenbusiness.com', 'CNAME', '192.168.70.1', 300, 0, 1267002606);
#--- PTR : IP에 도메인 할당
INSERT INTO records (domain_id, name, type, content, ttl, prio, change_date)
VALUES (1, '192.168.70.1', 'PTR', 'mail.jopenbusiness.com', 300, 0, 1267002606);
#--- SOA :
INSERT INTO records (domain_id, name, type, content, ttl, prio, change_date)
VALUES (1, 'jopenbusiness.com', 'SOA', 'ns.jopenbusiness.com dnsmaster@jopenbusiness.com2011120800 10800 3600 432000 300', 300, 0, 1267002606);
|}
PowerAdmin으로 관리
'''PowerAdmin 메뉴'''
{| border="1" cellspacing="0" cellpadding="2" style="width: 100%;"
|-
| style="text-align: center; background-color: rgb(148, 138, 84);" | Index
PowerAdmin 메뉴 표시 |
---|
style="text-align: center; background-color: rgb(148, 138, 84);" |
Zone과 records 검색 |
- |
style="text-align: center; background-color: rgb(148, 138, 84);" |
Zone 목록 조회 및 수정 Zone에 records를 등록할 수 있습니다. |
|-
| style="text-align: center; background-color: rgb(148, 138, 84);" | List supermasters
Super Master 목록 조회 |
---|
style="text-align: center; background-color: rgb(148, 138, 84);" |
master zone 등록 |
- |
style="text-align: center; background-color: rgb(148, 138, 84);" |
slave zone 등록 |
- |
style="text-align: center; background-color: rgb(148, 138, 84);" |
Super Master 네임서버 등록 |
- |
style="text-align: center; background-color: rgb(148, 138, 84);" |
사용자 암호 변경 |
- |
style="text-align: center; background-color: rgb(148, 138, 84);" |
사용자 정보 관리 Permission template을 사용하여 사용자의 권한 관리 |
|-
| style="text-align: center; background-color: rgb(148, 138, 84);" | Logout
| 로그 아웃
|}
'''DNS 등록 절차'''
"Add master zone" 메뉴에서 도메인 (zztest.com)을 등록 합니다.
[700px|PowerAdmin setting01.png](File:PowerAdmin setting01.png.md)
"List zones" 메뉴를 선택 합니다.
zztest.com 존의 수정 화면에서 records를 등록 합니다.
[700px|PowerAdmin setting02.png](File:PowerAdmin setting02.png.md)
"Search zones and records" 에서 아래 정보를 확인할 수 있습니다.
[700px|PowerAdmin setting03.png](File:PowerAdmin setting03.png.md)
DNS 등록이 정상적으로 설정 되었는지 확인 합니다.
{| cellspacing="1" cellpadding="1" style="color: rgb(0, 0, 0); font-family: sans-serif; line-height: 19.0499992370605px; width: 853px;"
|-
| style="background-color: rgb(241, 241, 241);" |
dig @localhost www.zztest.com
|}
DNS Server 등록
Whois에 DNS 서버를 등록하는 방법을 설명 합니다.
"도메인 활용/부가서비스 -> 네임서버 고급설정" 메뉴를 선택 합니다.
도메인을 선택한 후 "DNS 호스트 설정" 버튼을 선택하여 DNS 호스트를 등록 합니다.
(주의, 등록한 DNS host는 등록하려는 DNS Server에 설정되어 있어야 합니다.)
[File:Whois 001.png](File:Whois 001.png.md)
"변경/이전 -> 등록정보/네임서버 변경" 메뉴를 선택 합니다.
도메인을 선택한 후 "네임서버 변경" 버튼을 선택하여 네임서버에 새로 등록한 DNS 호스트를 설정 합니다.
[700px|Whois 002.png](File:Whois 002.png.md)
참고 문헌
- [Network](Network.md)
- [DNS](DNS.md)
- [http://www.jopenbusiness.com/mediawiki/index.php/CentOS#DNS_.EC.84.9C.EB.B2.84_.EA.B5.AC.EC.B6.95 DNS 서버 구축] : bind를 사용한 [DNS](DNS.md) 서버 구축