Skip to end of metadata
Go to start of metadata

이 문서는 powerdns / MySQL / web으로 DNS를 구성하는 방법을 제공합니다. Web으로 domain name 관리할 수 있어서 관리자의 수고가 줄어듭니다.

Overview

목표 구성

  • 내부 망에서 사용하는 도메인과 공인 도메인 혼용 지원
  • 이를 위해 
    • DHCP 서버 dns 설정에 내부 (private) dns 서버 추가 (primary dns: 첫 번째 dns)
    • 고정 IP를 사용하는 PC의 경우 dns 서버 추가 (primary dns: 첫 번째 dns)

적용 솔루션 (powerdns)

PDNS는 PowerDNS BV사에서 만든 네임서버 입니다. 도메인 관리를 database를 통해 도메인 관리를 하기 때문에 대량의 domain 운영이 가능하고 캐쉬 잘못에 의한 오류 가능성이 없습니다.

MySQL 설치 (PostgreSQL 도 지원)

powerdns는 MySQL과 PostgreSQL 그리고 SQLite를 지원합니다. 이 문서는 MySQL database을 고려합니다.

PDNS 설치 전 MySQL을 설치합니다.

Database 구성 (MySQL)

  • powerdns database 생성
  • powerdns database  사용자 생성
  • powerdns database  사용자에게 powerdns database 엑세스 권한 부여
$ mysql -uroot -p
mysql > create database powerdns;
mysql > GRANT ALL ON powerdns.* TO 'powerdns'@'localhost' IDENTIFIED BY 'password';
mysql > FLUSH PRIVILEGES;

PDNS 설치

 

# yum -y install pdns pdns-backend-mysql
  • Database table 생성이 안되었다면 "/usr/share/doc/pdns-backend-mysql/README.Debian"을 참조하여 수동으로 table 생성


PDNS DB 구성

pdns backend (MySQL) 연결 설정

/etc/powerdns/pdns.d/pdns.local.gmysql.conf
# MySQL Configuration file

launch=gmysql

gmysql-host=localhost
gmysql-dbname=powerdns
gmysql-user=powerdns
gmysql-password=password

PDNS 서비스 재시작

pdns 서비스가 자동 시작되도록 등록하고 서비스 재시작

CentOS 6 의 경우
$ chkconfig pdns on
$ service pdns start

PDNS 서비스 검증

dig 명령 수행 결과가 다음 예와 유사한지 확인

root@ns1:~# dig @127.0.0.1

; <<>> DiG 9.9.5-3-Ubuntu <<>> @127.0.0.1
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27248
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 2800
;; QUESTION SECTION:
;.              IN  NS

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Nov 02 18:58:20 EST 2014
;; MSG SIZE  rcvd: 29

Apple 장치 호환성


웹 서버 설치

PowerAdmin은 web 서버를 포함하지 않고 PHP로 제작된 웹 기능을 제공하기 때문에 웹서버 (Nginx, Apache, ...)를 설치해야 한다. 이 문서는 Apache를 웹 서버로 기준으로 설명한다.

$ yum -y install httpd httpd-devel php php-mcrypt php-pdo php-mysql php-devel php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring gettext wget


httpd 서비스 재시작

Apache 서비스가 자동시작되도록 등록하고 재시작 한다.

CentOS 6 예
$ service httpd restart
$ chkconfig httpd on

Pear 패키지 설치

$ yum -y install php-pear-MDB2 php-pear-MDB2-Driver-mysql


PowerAdmin (Web 인터페이스) 설치


powerdns의 웹  인터페이스를 제공하는 PowerAdmin을 설치한다.

다운로드 및 압축 풀기

$ cd /tmp/
$ wget https://github.com/downloads/poweradmin/poweradmin/poweradmin-2.1.6.tgz
$ tar xvfz poweradmin-2.1.6.tgz
$ mv /var/www/html /var/www/html.bak
$ mv poweradmin-2.1.6 /var/www/html
$ cd poweradmin/inc/
$ mv config-me.inc.php config.inc.php
$ chown -R www-data.www-data /var/www/html

 Database 접속 정보 설정

/var/www/html/inc/config.inc.php
Modify db_pass and session_key to your own values :

$db_host                = 'localhost';
$db_port                = '3306';
$db_user                = 'powerdns';
$db_pass                = 'password';
$db_name                = 'powerdns';
$db_type                = 'mysql';
$session_key            = 'Passw0rd';


  • 설정 적용을 위해 httpd 서비스 재기동


CentOS 6 예
$ service httpd restart

Web을 통해 PowerAdmin 설정

  • 브라우져를 통해 http://<IP> 접속 (예: http://192.168.0.3)

Click on Install -> Choose I prefer to proceed in English -> Go to Step2 -> Go to Step3 ->

Username: powerdns
Password: password
Database Type: MySQL
Hostname: localhost
DB Port: 3306
Database: powerdns
PowerAdmin Administrator Password: Passw0rd

Go to Step4 -> This step is optional (SKIP) -> Go to Step5 -> Go to Step6 -> Go to Step7.

설치 폴더 제거

/var/www/html/install 폴더를 다른 이름으로 변경
$ mv /var/www/html/install /var/www/html/install.bak

도메인 관리

로그인

브라우져를 통해 http://<서버 IP> 접속

  • User name: admin
  • Password: curvc1004

master zone 추가

Zone (domain)을 추가한다.

reverse zone (PTR) 추가 (옵션)

Problem with Record (PTR)은 IP를 기준으로 domain name을 추적할 때 사용되는 기록이다.

  • 등록할 domain의 network (subnet)에 해당하는 zone 생성
    • 예) 192.168.0.0/24 네트웍 이라면 → 0.168.192.in-addr.arpa
    • 예) 10.0.0.0/8 네트웍 이라면 → 10.in-addr.arpa

도메인 등록

Step 1) list zone >> 원하는 zone의 연필 모양 icon 클릭

Step 2) 추가할 도메인 이름과 IP 주소, 그리고 추가 정보 설정

  • IP 주소에 해당하는 reverse DNS zone을 구성했다면, Add also reverse record 선택 → 자동으로 reverse DNS (PTR) zone에 추가됨

Step 3) 등록 결과 메시지

Step 4) 등록 결과 확인 (찾기)

Troubleshooting

Apple 장치에서 외부 주소 얻을 수 없는 경우

구성 후 Apple 장치 (Mac, iOS)에서 정상동작 하지 않을 수 있다. Apple 장치에서 외부 도메인 (예: google.com) 주소를 얻어오지 못하는 현상이 발생할 수 있다. 이 문제는 Recusor 구성을 통해 문제를 해소할 수 있다.

Step 1) recursor 설치

$ yum install dns pdns-recursor

Step 2) pdns 설정 변경

  • recursor 서비스 추가 (recursor=127.0.0.1:5678)
/etc/powerdns/pdns.d/pdns.local.gmysql.conf
launch+=gmysql


# gmysql parameters
gmysql-host=localhost
gmysql-port=
gmysql-dbname=powerdns
gmysql-user=powerdns
gmysql-password=curvc****
#gmysql-dnssec=yes
# gmysql-socket=

recursor=127.0.0.1:5678

Step 3) recursor 설정

forward-zones=i.curvc.com=127.0.0.1:5678;8.8.8.8 #forward-zones=<내부 전용 도메인, 외부와 공용이라면 '.'>=<내부 도메인 서버 주소>;<외부 도메인 서버 주소>
local-port=5678
serve-rfc1918=no
trace=on

Step 4) 서비스 재시작

pdns와 pdns-recursor 서비스  재시작

  • No labels