이 문서는 powerdns / MySQL / web으로 DNS를 구성하는 방법을 제공합니다. Web으로 domain name 관리할 수 있어서 관리자의 수고가 줄어듭니다.
Overview
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) 연결 설정
# MySQL Configuration file launch=gmysql gmysql-host=localhost gmysql-dbname=powerdns gmysql-user=powerdns gmysql-password=password
PDNS 서비스 재시작
pdns 서비스가 자동 시작되도록 등록하고 서비스 재시작
$ 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
웹 서버 설치
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 서비스가 자동시작되도록 등록하고 재시작 한다.
$ 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 접속 정보 설정
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 서비스 재기동
$ 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: Passw0rd
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) 등록 결과 확인 (찾기)