본문으로 바로가기

□ PowerDNS 설치 [ 여기를 참고 ]

□ PowerDNS 4.X ↑ [ 버전의 내용입니다. 이하 버전은 설정이 다를수 있습니다. ]


초기설치후 DNS 질의가 잘되는지 확인하기 위해 다음과 같이 아무도메인을 만들었다.



그리고 dig 명령어를 통해 직접 내부에서 질의 테스트 진행[하지만 질의되지 않음]

BASH

[root@localhost ~]# dig @localhost test.com


; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.3 <<>> @localhost test.com ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 27342 ;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1680 ;; QUESTION SECTION: ;test.com. IN A (비정상 값이 나오지 않고 있음 / 정상일경우 뒤에 위 설정한 IP 111.111.111.111 나와야합니다.)

;; Query time: 12 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: ?? 4??30 13:49:40 KST 2017 ;; MSG SIZE rcvd: 37


[root@localhost ~]# dig @localhost test.com SOA

; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.3 <<>> @localhost test.com SOA ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 10187 ;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1680 ;; QUESTION SECTION: ;test.com. IN SOA (마찬가지 / 정상일경우 뒤에 위 설정한 SOA ns.testdns.com ... 값들이 나와야합니다.)

;; Query time: 2 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: ?? 4??30 13:49:47 KST 2017 ;; MSG SIZE rcvd: 37


왜 안되는지 다음과 같이 에러로그 확인

BASH

[root@localhost ~]# tail -f /var/log/pdns.err

.

.

Apr 30 13:49:47 localhost pdns[26234]: Backend reported permanent error which prevented lookup (GSQLBackend lookup query:Failed to execute mysql_query, perhaps connection died? Err=1: Unknown column 'disabled' in 'field list'), aborting Apr 30 13:49:47 localhost pdns[26234]: Backend error: GSQLBackend lookup query:Failed to execute mysql_query, perhaps connection died? Err=1: Unknown column 'disabled' in 'field list'

질의할때마다 위와같이 로그가 발생되는것을 확인하였습니다.

에러로그확인시 쿼리를 질의할때 다음 특정 필드 컬럼(column) / 'disabled' 없어 질의 에러가 나는것으로 보입니다.


그래서 실제 돌아가는 PowerDNS 네임서버와 비교를 해보았는데 버전의 차이인지 최근버전에는 없던 컬럼이 있었습니다.



[참고]


문제의 이전컬럼(column) 테이블(records) 구조

BASH

MariaDB [pdns]> describe records; +-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | domain_id | int(11) | YES | MUL | NULL | | | name | varchar(255) | YES | MUL | NULL | | | type | varchar(6) | YES | | NULL | | | content | varchar(255) | YES | | NULL | | | ttl | int(11) | YES | | NULL | | | prio | int(11) | YES | | NULL | | | change_date | int(11) | YES | | NULL | | +-------------+--------------+------+-----+---------+----------------+ 8 rows in set (0.01 sec)


최신버전 컬럼(column) 테이블(records) 구조

BASH

MariaDB [pdns]> describe records; +-------------+----------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+----------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | domain_id | int(11) | YES | MUL | NULL | | | name | varchar(255) | YES | MUL | NULL | | | type | varchar(10) | YES | | NULL | | | content | varchar(64000) | YES | | NULL | | | ttl | int(11) | YES | | NULL | | | prio | int(11) | YES | | NULL | | | change_date | int(11) | YES | | NULL | | | disabled | tinyint(1) | YES | | 0 | | | ordername | varchar(255) | YES | | NULL | | | auth | tinyint(1) | YES | | 1 | | +-------------+----------------+------+-----+---------+----------------+ 11 rows in set (0.06 sec)


비교를 해보면 에러에 나온것처럼 3개의 추가된 컬럼 필드가 보이는군요.

disabled / ordername / auth


이미 설치된 서버에서 위 3개의 컬럼만 추가해도 에러는 동일합니다.

아.. 에러메세지에서는 나오진 않지만 실제 질의는 되지 않습니다. 그렇기에 처음 만들었던 테이블은 지우고 다시 만들어야 합니다.

(설치 자체를 다시하는게 좋습니다.)


MariaDB [pdns]> 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, disabled TINYINT(1) DEFAULT 0, ordername VARCHAR(255) BINARY DEFAULT NULL, auth TINYINT(1) DEFAULT 1, PRIMARY KEY (id) ); Query OK, 0 rows affected (0.06 sec)


이게 요즘 최신버전에 들어가는 값입니다.





설치후 DNS 정상 질의 확인

BASH

[root@localhost ~]# dig @localhost test.com


; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.3 <<>> @localhost test.com ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 27342 ;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1680 ;; QUESTION SECTION:

test.com. 86400 IN A 111.111.111.111 (정상)


;; Query time: 12 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: ?? 4??30 13:49:40 KST 2017 ;; MSG SIZE rcvd: 37


[root@localhost ~]# dig @localhost test.com SOA

; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.3 <<>> @localhost test.com SOA ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 10187 ;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1680 ;; QUESTION SECTION: test.com. 86400 IN SOA ns1.testdns.com. testdns. 2017043001 28800 7200 604800 86400 (정상)


;; Query time: 2 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: ?? 4??30 13:49:47 KST 2017 ;; MSG SIZE rcvd: 37


참고하시기 바랍니다!


댓글을 달아 주세요