기존 powerdns 와 구성하는 방법이 recursor 때문에 달라져서 올립니다.
환경은 centos 7.6 입니다.
먼저 netstat -antp에서 dnsmasq 가 53번 포트를 먹고 있다면
Dnsmasq를 삭제해준다.
[root@localhost ~] yum install epel-release.noarch
[root@localhost ~] yum -y install mariadb-server mariadb
[root@localhost ~] systemctl start mariadb
[root@localhost ~] systemctl enable mariadb
[root@localhost ~] mysql_secure_installation
(루트 패스워드 설정)
[root@localhost ~] yum -y install pdns pdns-backend-mysql
[root@localhost ~] mysql -u root -p
MariaDB [(none)]> CREATE DATABASE powerdns;
MariaDB [(none)]> GRANT ALL ON powerdns.* TO 'powerdns'@'localhost' IDENTIFIED BY '설정할비밀번호';
MariaDB [(none)]> GRANT ALL ON powerdns.* TO 'powerdns'@'centos7.localdomain' IDENTIFIED BY '설정할비밀번호';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> connect powerdns
이후 데이터베이스 입력은
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 BIGINT 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)
) Engine=InnoDB;
CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);
CREATE INDEX recordorder ON records (domain_id, ordername);
CREATE TABLE supermasters (
ip VARCHAR(64) NOT NULL,
nameserver VARCHAR(255) NOT NULL,
account VARCHAR(40) NOT NULL,
PRIMARY KEY (ip, nameserver)
) Engine=InnoDB;
CREATE TABLE comments (
id INT AUTO_INCREMENT,
domain_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
type VARCHAR(10) NOT NULL,
modified_at INT NOT NULL,
account VARCHAR(40) NOT NULL,
comment VARCHAR(64000) NOT NULL,
PRIMARY KEY (id)
) Engine=InnoDB;
CREATE INDEX comments_domain_id_idx ON comments (domain_id);
CREATE INDEX comments_name_type_idx ON comments (name, type);
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);
CREATE TABLE domainmetadata (
id INT AUTO_INCREMENT,
domain_id INT NOT NULL,
kind VARCHAR(32),
content TEXT,
PRIMARY KEY (id)
) Engine=InnoDB;
CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind);
CREATE TABLE cryptokeys (
id INT AUTO_INCREMENT,
domain_id INT NOT NULL,
flags INT NOT NULL,
active BOOL,
content TEXT,
PRIMARY KEY(id)
) Engine=InnoDB;
CREATE INDEX domainidindex ON cryptokeys(domain_id);
CREATE TABLE tsigkeys (
id INT AUTO_INCREMENT,
name VARCHAR(255),
algorithm VARCHAR(50),
secret VARCHAR(255),
PRIMARY KEY (id)
) Engine=InnoDB;
CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
MariaDB [powerdns]> exit
(mariadb를 빠져나온다.)
[root@localhost ~] vi /etc/pdns/pdns.conf
launch=gmysql
gmysql-host=localhost
gmysql-user=powerdns
gmysql-password=설정할비밀번호
gmysql-dbname=powerdns
[root@localhost ~] systemctl enable pdns.service
[root@localhost ~] systemctl start pdns.service
[root@localhost ~] yum install httpd php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mhash gettext
[root@localhost ~] yum -y install php-pear-DB php-pear-MDB2-Driver-mysql
[root@localhost ~] systemctl enable httpd.service
[root@localhost ~] systemctl start httpd.service
ps
Poweradmin 2.1.7버전 다운로드해서
/var/www/html 경로에서 압출풀기
( 다운로드 및 압축해제 과정 생략)
[root@localhost ~] firewall-cmd --permanent --zone=public --add-service=http
[root@localhost ~] firewall-cmd --permanent --zone=public --add-port=53/udp
[root@localhost ~] firewall-cmd --reload
웹페이지 접속하기
http://자신의IP/poweradmin-2.1.7/install/
스탭 1~2는 생략
poweradmin install 에서 step5에서 나오는
MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE
ON powerdns.*
TO 'pdnshope'@'localhost'
IDENTIFIED BY '설정할비밀번호';
이러한 항목이 나오는데 웹에서 그대로 복사해서 mysql에 붙여넣기
[root@localhost ~] vi /var/www/html/poweradmin-2.1.7/inc/config.inc.php
해당 항목 복사 붙여넣기
( 마지막에 ?> 로 닫아야하는데 현재 그림에서 안보이니 주의할 것!
php구문상 <?php로 열었으니 ?>로 닫아야함. )
/var/www/html/poweradmin-2.1.7/install install 파일 삭제
[root@localhost ~]# rm -rf /var/www/html/poweradmin-2.1.7/install
http://해당IP/poweradmin-2.1.7
로그인 ID : admin
로그인 PW : 설정한 PW
DNS 정보 추가 과정 ( 사진으로 설명)
위와 같이 끝난후
상단 list zones 클릭하면 아래와 같은 화면이 나옴.
아래와 같이 네모 박스에 입력 할 수 있습니다.
이렇게하면 test.hope201.com에대한 A,mx레코드 값이 입력 들어 갔습니다.
이제 테스트를 해보겠습니다.
[root@localhost ~]# dig test.hope201.com @192.168.137.45
; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> test.hope201.com @192.168.137.45
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39679
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1680
;; QUESTION SECTION:
;test.hope201.com. IN A
;; ANSWER SECTION:
test.hope201.com. 86400 IN A 192.168.137.45
;; Query time: 0 msec
;; SERVER: 192.168.137.45#53(192.168.137.45)
;; WHEN: 월 6월 03 17:36:40 KST 2019
;; MSG SIZE rcvd: 61
위처럼 쿼리가 잘 된 것을 확인 할 수 있습니다.
한가지 주의사항은 TTL 값이 기본이 86400입니다.
TTL값이 길어지면 poweradmin에서 DNS를 변경하였어도 86400초만큼 시간이 다 될동안 변경사항이 적용되지 않습니다.
따라서 기본값 86400으로 주지 마시고 적당한 값을 주는것을 추천드립니다.
DNS서버가 엄청 노후되지 않은 서버가 아니라면 86400보단 600이나 1200을 추천드립니다.
Recursor 소개
Recursor는 없는 쿼리가 들어왔을때 지정한 IP로 쿼리를 날려서 해당 서버에 있다면 가져오게 됩니다.
설치
[root@localhost ~] yum install pdns-recursor
설정
[root@localhost ~] vi /etc/pdns-recursor/recursor.conf
local-address=0.0.0.0
local-port=53
forward-zones=test.hope201.com=192.168.137.45:5300;
forward-zones-recurse=.=8.8.8.8
( 만약에 pdns에 등록된 도메인이 여러개이면
forward-zones=test.hope201.com=192.168.137.45:5300;, 도메인=192.168.137.45:5300;
이러한 형식으로 ,(콤마)를 찍고 추가해주는 방식입니다.
[root@localhost ~] vi /etc/pdns/pdns.conf
local-port=5300
[root@localhost ~] firewall-cmd --permanent --zone=public --add-port=5300/udp
[root@localhost ~] firewall-cmd --reload
[root@localhost ~] systemctl restart pdns
[root@localhost ~] systemctl restart pdns-recursor
'open source solution' 카테고리의 다른 글
openLDAP + RADIUS +openVPN (0) | 2019.10.14 |
---|---|
openLDAP 에러 관련 (0) | 2019.08.12 |
DRBD+pacemaker HA구성 centos 7.x (4) | 2019.08.09 |
packetfence Vlan enforcement 시연 (2) | 2019.04.04 |
centos oracle linux rhel 6.10 HA(이중화) drbd+heartbeat (0) | 2019.04.04 |
댓글