Newer
Older
Master-Slave-DNS-with-PowerDNS / README.md
Ilazog on 20 Mar 2020 40 KB Update README.md
  1. Master-Slave-DNS-with-PowerDNS
  2. ===============
  3.  
  4. Repository ini berisikan instalasi dan konfigurasi Master-Slave DNS pada PowerDNS
  5.  
  6. ## Task
  7. Instalasi dan Konfigurasi
  8. * PowerDNS
  9. * Database Server MariaDB 10.1.44
  10. * Glue Record Domain
  11.  
  12. Ketentuan pengerjaan:
  13. * Menggunakan 2 VPS dengan OS centos7
  14. * Menggunakan domain utama (domain.tld)
  15. * Menggunakan DNS Server Pdns
  16. * Menggunakan Master Slave Pdns
  17. * Menggunakan Database Server MariaDB 10.1.44
  18.  
  19.  
  20. ## Instalasi dan Konfigurasi Pdns dan MariaDB 10.1.44 (Master)
  21. #### Step 1: Install MariaDB 10.1.44
  22. Untuk melakukan instalasi MariaDB 10.1.44 yang pertama adalah melakukan remote ke IP VPS dengan menggunakan SSH
  23.  
  24. > ```$ ssh root@ipaddress```
  25.  
  26. Setelah berhasil login ke VPS, lakukan pembaharuan paket/repository dari system operasi Centos7 dengan perintah sebagai berikut:
  27.  
  28. > ```# yum -y update```
  29.  
  30. Setelah melakukan update system selanjutnya lakukan install epel-release
  31.  
  32. > ```# yum install epel-release -y```
  33.  
  34. Setelah melakukan install epel-release selanjutnya lakukan instalasi database server mariaDB 10.1.44 dan langkah pertama ialah menambahkan repository untuk mariaDB.
  35.  
  36. > ```# vi /etc/yum.repos.d/mariadb.repo```
  37.  
  38. Masukan perintah berikut:
  39.  
  40. > ```
  41. [mariadb]
  42. name = MariaDB
  43. baseurl = http://yum.mariadb.org/10.1/centos7-amd64
  44. gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
  45. gpgcheck=1```
  46.  
  47. Setelah menambahkan repo mariaDB, lakukan instalasi mariaDB dengan perintah berikut:
  48.  
  49. > ```# yum install mariadb-server```
  50.  
  51. Selanjutnya lakukan enable direktori dan file database mariaDB, berikut perintahnya:
  52.  
  53. > ```# systemctl enable mariadb```
  54.  
  55. Setelah direktori dan file database mariaDB dienable, jalankan service mariaDB dengan perintah berikut:
  56.  
  57. > ```# systemctl start mariadb```
  58.  
  59. Apabila paket database server telah selesai diinstall pastikan service mariaDB berjalan dengan status Running.
  60.  
  61. > ```
  62. # systemctl status mariadb
  63. ● mariadb.service - MariaDB 10.1.44 database server
  64. Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  65. Drop-In: /etc/systemd/system/mariadb.service.d
  66. └─migrated-from-my.cnf-settings.conf
  67. Active: active (running) since Sat 2020-03-07 20:09:38 WIB; 22h ago
  68. Docs: man:mysqld(8)
  69. https://mariadb.com/kb/en/library/systemd/
  70. Process: 29925 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  71. Process: 29885 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
  72. Process: 29883 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  73. Main PID: 29897 (mysqld)
  74. Status: "Taking your SQL requests now..."
  75. CGroup: /system.slice/mariadb.service
  76. └─29897 /usr/sbin/mysqld
  77. ```
  78.  
  79. #### Step 2: Secure mariaDB server and Configure Database
  80.  
  81. Setelah melakukan instalasi mariaDB Server selanjutnya kita harus mengamankan databese server dengan cara menambahkan password login saat mengakses mariaDB server.
  82.  
  83. > ```# mysql_secure_installation```
  84.  
  85. Nantinya kita akan melakukan perubahan password untuk root database server, pilih `Y` dan masukan Password baru yang kuat.
  86.  
  87. > ```
  88. Set root password? [Y/n] Y
  89. New password:
  90. Re-enter new password:
  91. ```
  92.  
  93. Apabila ada yang lain silakan klik `Y`
  94.  
  95. > ```
  96. Remove anonymous users? [Y/n] Y
  97. Disallow root login remotely? [Y/n] Y
  98. Remove test database and access to it? [Y/n] Y
  99. Reload privilege tables now? [Y/n] Y
  100. ```
  101.  
  102. Setelah itu kita coba untuk melakukan login dengan password baru yang telah dibuat dengan perintah berikut:
  103.  
  104. > ```
  105. # mysql -u root -p
  106. Input Password
  107. ```
  108.  
  109. Apabila telah login selanjutnya buat database, user dan password untuk service PowerDNS.
  110.  
  111. > ```
  112. MariaDB [(none)]> Create database testpdns;
  113. MariaDB [(none)]> grant all privileges on testdns.* to pdns@localhost identified by 'pdnspassword';
  114. MariaDB [(none)]> flush privileges;
  115. ```
  116.  
  117. Setelah itu pilih database testpdns;
  118.  
  119. > ```
  120. MariaDB [(none)]>use testpdns;
  121. MariaDB [testpdns]>
  122. ```
  123.  
  124. Buat table baru untuk menyimpan record pdns pada database testpdns.
  125.  
  126. > ```
  127. MariaDB [testpdns]> CREATE TABLE domains (
  128. id INT AUTO_INCREMENT,
  129. name VARCHAR(255) NOT NULL,
  130. master VARCHAR(128) DEFAULT NULL,
  131. last_check INT DEFAULT NULL,
  132. type VARCHAR(6) NOT NULL,
  133. notified_serial INT UNSIGNED DEFAULT NULL,
  134. account VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL,
  135. PRIMARY KEY (id)
  136. ) Engine=InnoDB CHARACTER SET 'latin1';
  137. ```
  138.  
  139. > ```
  140. MariaDB [testpdns]> CREATE UNIQUE INDEX name_index ON domains(name);
  141. ```
  142.  
  143. > ```
  144. MariaDB [testpdns]>CREATE TABLE records (
  145. id BIGINT AUTO_INCREMENT,
  146. domain_id INT DEFAULT NULL,
  147. name VARCHAR(255) DEFAULT NULL,
  148. type VARCHAR(10) DEFAULT NULL,
  149. content VARCHAR(64000) DEFAULT NULL,
  150. ttl INT DEFAULT NULL,
  151. prio INT DEFAULT NULL,
  152. disabled TINYINT(1) DEFAULT 0,
  153. ordername VARCHAR(255) BINARY DEFAULT NULL,
  154. auth TINYINT(1) DEFAULT 1,
  155. PRIMARY KEY (id)
  156. ) Engine=InnoDB CHARACTER SET 'latin1';
  157. ```
  158.  
  159. > ```
  160. MariaDB [testpdns]> CREATE INDEX nametype_index ON records(name,type);
  161. ```
  162.  
  163. > ```
  164. MariaDB [testpdns]> CREATE INDEX domain_id ON records(domain_id);
  165. ```
  166.  
  167. > ```
  168. MariaDB [testpdns]> CREATE INDEX ordername ON records (ordername);
  169. ```
  170.  
  171. > ```
  172. MariaDB [testpdns]> CREATE TABLE supermasters (
  173. ip VARCHAR(64) NOT NULL,
  174. nameserver VARCHAR(255) NOT NULL,
  175. account VARCHAR(40) CHARACTER SET 'utf8' NOT NULL,
  176. PRIMARY KEY (ip, nameserver)
  177. ) Engine=InnoDB CHARACTER SET 'latin1';
  178. ```
  179.  
  180. > ```
  181. MariaDB [testpdns]> CREATE TABLE comments (
  182. id INT AUTO_INCREMENT,
  183. domain_id INT NOT NULL,
  184. name VARCHAR(255) NOT NULL,
  185. type VARCHAR(10) NOT NULL,
  186. modified_at INT NOT NULL,
  187. account VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL,
  188. comment TEXT CHARACTER SET 'utf8' NOT NULL,
  189. PRIMARY KEY (id)
  190. ) Engine=InnoDB CHARACTER SET 'latin1';
  191. ```
  192.  
  193. > ```
  194. MariaDB [testpdns]> CREATE INDEX comments_name_type_idx ON comments (name, type);
  195. ```
  196.  
  197. > ```
  198. MariaDB [testpdns]> CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);
  199. ```
  200.  
  201. > ```
  202. MariaDB [testpdns]> CREATE TABLE domainmetadata (
  203. id INT AUTO_INCREMENT,
  204. domain_id INT NOT NULL,
  205. kind VARCHAR(32),
  206. content TEXT,
  207. PRIMARY KEY (id)
  208. ) Engine=InnoDB CHARACTER SET 'latin1';
  209. ```
  210.  
  211. > ```
  212. MariaDB [testpdns]> CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind);
  213. ```
  214.  
  215. > ```
  216. MariaDB [testpdns]> CREATE TABLE cryptokeys (
  217. id INT AUTO_INCREMENT,
  218. domain_id INT NOT NULL,
  219. flags INT NOT NULL,
  220. active BOOL,
  221. published BOOL DEFAULT 1,
  222. content TEXT,
  223. PRIMARY KEY(id)
  224. ) Engine=InnoDB CHARACTER SET 'latin1';
  225. ```
  226.  
  227. > ```
  228. MariaDB [testpdns]>CREATE INDEX domainidindex ON cryptokeys(domain_id);
  229. ```
  230.  
  231. > ```
  232. MariaDB [testpdns]> CREATE TABLE tsigkeys (
  233. id INT AUTO_INCREMENT,
  234. name VARCHAR(255),
  235. algorithm VARCHAR(50),
  236. secret VARCHAR(255),
  237. PRIMARY KEY (id)
  238. ) Engine=InnoDB CHARACTER SET 'latin1';
  239. ```
  240.  
  241. > ```
  242. MariaDB [testpdns]> CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
  243. ```
  244.  
  245. Tambahkan perintah berikut untuk membuat kunci untuk setiap table diatas.
  246.  
  247. > ```
  248. MariaDB [testpdns]> ALTER TABLE records ADD CONSTRAINT `records_domain_id_ibfk` FOREIGN KEY (`domain_id`) REFERENCES `domains` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
  249. MariaDB [testpdns]> ALTER TABLE comments ADD CONSTRAINT `comments_domain_id_ibfk` FOREIGN KEY (`domain_id`) REFERENCES `domains` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
  250. MariaDB [testpdns]> ALTER TABLE domainmetadata ADD CONSTRAINT `domainmetadata_domain_id_ibfk` FOREIGN KEY (`domain_id`) REFERENCES `domains` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
  251. MariaDB [testpdns]> ALTER TABLE cryptokeys ADD CONSTRAINT `cryptokeys_domain_id_ibfk` FOREIGN KEY (`domain_id`) REFERENCES `domains` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
  252. ```
  253.  
  254. Lihat hasil dari penambahan table dengan perintah berikut:
  255.  
  256. > ```
  257. MariaDB [testpdns]> show tables;
  258. +--------------------+
  259. | Tables_in_testpdns |
  260. +--------------------+
  261. | comments |
  262. | cryptokeys |
  263. | domainmetadata |
  264. | domains |
  265. | records |
  266. | supermasters |
  267. | tsigkeys |
  268. +--------------------+
  269. 7 rows in set (0.00 sec)
  270. ```
  271.  
  272. #### Step 3: Instalasi dan konfigurasi PowerDNS
  273.  
  274. Setelah membuat database dan table untuk service PowerDNS selanjutnya lakukan instalasi PowerDNS.
  275.  
  276. > ```# yum -y install pdns pdns-backend-mysql bind-utils```
  277.  
  278. Lakukan konfigurasi file `pdns.conf`
  279.  
  280. > ```
  281. # cd /etc/pdns/
  282. pdns# vi pdns.conf
  283. ```
  284.  
  285. Rubah dan tambahakan perintah berikut.
  286.  
  287. > ```
  288. #i################################
  289. # launch Which backends to launch and order to query them in
  290. #
  291. # launch=bind (kasih tanda pagar untuk nonaktifkan)
  292. launch=gmysql
  293. gmysql-host=localhost
  294. gmysql-user=pdns (user database)
  295. gmysql-password=y4m4h475 (Password database)
  296. gmysql-dbname=testpdns (nama database)
  297. ```
  298.  
  299. Save dan Close kemudian enable serta aktifkan service PowerDNS.
  300.  
  301. > ```
  302. # systemctl enable pdns
  303. # systemctl start pdns
  304. ```
  305.  
  306. Pastikan service PowerDNS berjalan
  307.  
  308. > ```
  309. # systemctl status pdns
  310. ● pdns.service - PowerDNS Authoritative Server
  311. Loaded: loaded (/usr/lib/systemd/system/pdns.service; enabled; vendor preset: disabled)
  312. Active: active (running) since Sun 2020-03-15 13:08:11 WIB; 1h 21min ago
  313. Docs: man:pdns_server(1)
  314. man:pdns_control(1)
  315. https://doc.powerdns.com
  316. Main PID: 2796 (pdns_server)
  317. CGroup: /system.slice/pdns.service
  318. └─2796 /usr/sbin/pdns_server --guardian=no --daemon=no --disable-s...
  319. Mar 15 13:08:11 pdns.padiakse.my.id pdns_server[2796]: UDP server bound to 0....
  320. Mar 15 13:08:11 pdns.padiakse.my.id pdns_server[2796]: UDPv6 server bound to ...
  321. Mar 15 13:08:11 pdns.padiakse.my.id pdns_server[2796]: TCP server bound to 0....
  322. Mar 15 13:08:11 pdns.padiakse.my.id pdns_server[2796]: TCPv6 server bound to ...
  323. Mar 15 13:08:11 pdns.padiakse.my.id pdns_server[2796]: PowerDNS Authoritative...
  324. Mar 15 13:08:11 pdns.padiakse.my.id pdns_server[2796]: Using 64-bits mode. Bu...
  325. Mar 15 13:08:11 pdns.padiakse.my.id pdns_server[2796]: PowerDNS comes with AB...
  326. Mar 15 13:08:11 pdns.padiakse.my.id pdns_server[2796]: Creating backend conne...
  327. Mar 15 13:08:11 pdns.padiakse.my.id pdns_server[2796]: About to create 3 back...
  328. Mar 15 13:08:11 pdns.padiakse.my.id pdns_server[2796]: Done launching threads...
  329. Hint: Some lines were ellipsized, use -l to show in full.
  330. ```
  331.  
  332. ## Instalasi dan Konfigurasi Pdns dan MariaDB 10.1.44 (Slave)
  333. #### Step 1: Install MariaDB 10.1.44
  334. Untuk melakukan instalasi MariaDB 10.1.44 yang pertama adalah melakukan remote ke IP VPS dengan menggunakan SSH
  335.  
  336. > ```$ ssh root@ipaddress```
  337.  
  338. Setelah berhasil login ke VPS, lakukan pembaharuan paket/repository dari system operasi Centos7 dengan perintah sebagai berikut:
  339.  
  340. > ```# yum -y update```
  341.  
  342. Setelah melakukan update system selanjutnya lakukan install epel-release
  343.  
  344. > ```# yum install epel-release -y```
  345.  
  346. Setelah melakukan install epel-release selanjutnya lakukan instalasi database server mariaDB 10.1.44 dan langkah pertama ialah menambahkan repository untuk mariaDB.
  347.  
  348. > ```# vi /etc/yum.repos.d/mariadb.repo```
  349.  
  350. Masukan perintah berikut:
  351.  
  352. > ```
  353. [mariadb]
  354. name = MariaDB
  355. baseurl = http://yum.mariadb.org/10.1/centos7-amd64
  356. gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
  357. gpgcheck=1```
  358.  
  359. Setelah menambahkan repo mariaDB, lakukan instalasi mariaDB dengan perintah berikut:
  360.  
  361. > ```# yum install mariadb-server```
  362.  
  363. Selanjutnya lakukan enable direktori dan file database mariaDB, berikut perintahnya:
  364.  
  365. > ```# systemctl enable mariadb```
  366.  
  367. Setelah direktori dan file database mariaDB dienable, jalankan service mariaDB dengan perintah berikut:
  368.  
  369. > ```# systemctl start mariadb```
  370.  
  371. Apabila paket database server telah selesai diinstall pastikan service mariaDB berjalan dengan status Running.
  372.  
  373. > ```
  374. # systemctl status mariadb
  375. ● mariadb.service - MariaDB 10.1.44 database server
  376. Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  377. Drop-In: /etc/systemd/system/mariadb.service.d
  378. └─migrated-from-my.cnf-settings.conf
  379. Active: active (running) since Sat 2020-03-07 20:09:38 WIB; 22h ago
  380. Docs: man:mysqld(8)
  381. https://mariadb.com/kb/en/library/systemd/
  382. Process: 29925 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  383. Process: 29885 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
  384. Process: 29883 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  385. Main PID: 29897 (mysqld)
  386. Status: "Taking your SQL requests now..."
  387. CGroup: /system.slice/mariadb.service
  388. └─29897 /usr/sbin/mysqld
  389. ```
  390.  
  391. #### Step 2: Secure mariaDB server and Configure Database
  392.  
  393. Setelah melakukan instalasi mariaDB Server selanjutnya kita harus mengamankan databese server dengan cara menambahkan password login saat mengakses mariaDB server.
  394.  
  395. > ```# mysql_secure_installation```
  396.  
  397. Nantinya kita akan melakukan perubahan password untuk root database server, pilih `Y` dan masukan Password baru yang kuat.
  398.  
  399. > ```
  400. Set root password? [Y/n] Y
  401. New password:
  402. Re-enter new password:
  403. ```
  404.  
  405. Apabila ada yang lain silakan klik `Y`
  406.  
  407. > ```
  408. Remove anonymous users? [Y/n] Y
  409. Disallow root login remotely? [Y/n] Y
  410. Remove test database and access to it? [Y/n] Y
  411. Reload privilege tables now? [Y/n] Y
  412. ```
  413.  
  414. Setelah itu kita coba untuk melakukan login dengan password baru yang telah dibuat dengan perintah berikut:
  415.  
  416. > ```
  417. # mysql -u root -p
  418. Input Password
  419. ```
  420.  
  421. Apabila telah login selanjutnya buat database, user dan password untuk service PowerDNS.
  422.  
  423. > ```
  424. MariaDB [(none)]> Create database Slave_dns;
  425. MariaDB [(none)]> grant all privileges on Slave_dns.* to pdns@localhost identified by 'pdnspassword';
  426. MariaDB [(none)]> flush privileges;
  427. ```
  428.  
  429. Setelah itu pilih database testpdns;
  430.  
  431. > ```
  432. MariaDB [(none)]>use Slave_pdns;
  433. MariaDB [Slave_pdns]>
  434. ```
  435.  
  436. Buat table baru untuk menyimpan record pdns pada database testpdns.
  437.  
  438. > ```
  439. MariaDB [Slave_pdns]> CREATE TABLE domains (
  440. id INT AUTO_INCREMENT,
  441. name VARCHAR(255) NOT NULL,
  442. master VARCHAR(128) DEFAULT NULL,
  443. last_check INT DEFAULT NULL,
  444. type VARCHAR(6) NOT NULL,
  445. notified_serial INT UNSIGNED DEFAULT NULL,
  446. account VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL,
  447. PRIMARY KEY (id)
  448. ) Engine=InnoDB CHARACTER SET 'latin1';
  449. ```
  450.  
  451. > ```
  452. MariaDB [Slave_pdns]> CREATE UNIQUE INDEX name_index ON domains(name);
  453. ```
  454.  
  455. > ```
  456. MariaDB [Slave_pdns]>CREATE TABLE records (
  457. id BIGINT AUTO_INCREMENT,
  458. domain_id INT DEFAULT NULL,
  459. name VARCHAR(255) DEFAULT NULL,
  460. type VARCHAR(10) DEFAULT NULL,
  461. content VARCHAR(64000) DEFAULT NULL,
  462. ttl INT DEFAULT NULL,
  463. prio INT DEFAULT NULL,
  464. disabled TINYINT(1) DEFAULT 0,
  465. ordername VARCHAR(255) BINARY DEFAULT NULL,
  466. auth TINYINT(1) DEFAULT 1,
  467. PRIMARY KEY (id)
  468. ) Engine=InnoDB CHARACTER SET 'latin1';
  469. ```
  470.  
  471. > ```
  472. MariaDB [Slave_pdns]> CREATE INDEX nametype_index ON records(name,type);
  473. ```
  474.  
  475. > ```
  476. MariaDB [Slave_pdns]> CREATE INDEX domain_id ON records(domain_id);
  477. ```
  478.  
  479. > ```
  480. MariaDB [Slave_pdns]> CREATE INDEX ordername ON records (ordername);
  481. ```
  482.  
  483. > ```
  484. MariaDB [Slave_pdns]> CREATE TABLE supermasters (
  485. ip VARCHAR(64) NOT NULL,
  486. nameserver VARCHAR(255) NOT NULL,
  487. account VARCHAR(40) CHARACTER SET 'utf8' NOT NULL,
  488. PRIMARY KEY (ip, nameserver)
  489. ) Engine=InnoDB CHARACTER SET 'latin1';
  490. ```
  491.  
  492. > ```
  493. MariaDB [Slave_pdns]> CREATE TABLE comments (
  494. id INT AUTO_INCREMENT,
  495. domain_id INT NOT NULL,
  496. name VARCHAR(255) NOT NULL,
  497. type VARCHAR(10) NOT NULL,
  498. modified_at INT NOT NULL,
  499. account VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL,
  500. comment TEXT CHARACTER SET 'utf8' NOT NULL,
  501. PRIMARY KEY (id)
  502. ) Engine=InnoDB CHARACTER SET 'latin1';
  503. ```
  504.  
  505. > ```
  506. MariaDB [Slave_pdns]> CREATE INDEX comments_name_type_idx ON comments (name, type);
  507. ```
  508.  
  509. > ```
  510. MariaDB [Slave_pdns]> CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);
  511. ```
  512.  
  513. > ```
  514. MariaDB [Slave_pdns]> CREATE TABLE domainmetadata (
  515. id INT AUTO_INCREMENT,
  516. domain_id INT NOT NULL,
  517. kind VARCHAR(32),
  518. content TEXT,
  519. PRIMARY KEY (id)
  520. ) Engine=InnoDB CHARACTER SET 'latin1';
  521. ```
  522.  
  523. > ```
  524. MariaDB [Slave_pdns]> CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind);
  525. ```
  526.  
  527. > ```
  528. MariaDB [Slave_pdns]> CREATE TABLE cryptokeys (
  529. id INT AUTO_INCREMENT,
  530. domain_id INT NOT NULL,
  531. flags INT NOT NULL,
  532. active BOOL,
  533. published BOOL DEFAULT 1,
  534. content TEXT,
  535. PRIMARY KEY(id)
  536. ) Engine=InnoDB CHARACTER SET 'latin1';
  537. ```
  538.  
  539. > ```
  540. MariaDB [Slave_pdns]>CREATE INDEX domainidindex ON cryptokeys(domain_id);
  541. ```
  542.  
  543. > ```
  544. MariaDB [Slave_pdns]> CREATE TABLE tsigkeys (
  545. id INT AUTO_INCREMENT,
  546. name VARCHAR(255),
  547. algorithm VARCHAR(50),
  548. secret VARCHAR(255),
  549. PRIMARY KEY (id)
  550. ) Engine=InnoDB CHARACTER SET 'latin1';
  551. ```
  552.  
  553. > ```
  554. MariaDB [Slave_pdns]> CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
  555. ```
  556.  
  557. Tambahkan perintah berikut untuk membuat kunci untuk setiap table diatas.
  558.  
  559. > ```
  560. MariaDB [Slave_pdns]> ALTER TABLE records ADD CONSTRAINT `records_domain_id_ibfk` FOREIGN KEY (`domain_id`) REFERENCES `domains` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
  561. MariaDB [Slave_pdns]> ALTER TABLE comments ADD CONSTRAINT `comments_domain_id_ibfk` FOREIGN KEY (`domain_id`) REFERENCES `domains` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
  562. MariaDB [Slave_pdns]> ALTER TABLE domainmetadata ADD CONSTRAINT `domainmetadata_domain_id_ibfk` FOREIGN KEY (`domain_id`) REFERENCES `domains` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
  563. MariaDB [Slave_pdns]> ALTER TABLE cryptokeys ADD CONSTRAINT `cryptokeys_domain_id_ibfk` FOREIGN KEY (`domain_id`) REFERENCES `domains` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
  564. ```
  565.  
  566. Lihat hasil dari penambahan table dengan perintah berikut:
  567.  
  568. > ```
  569. MariaDB [Slave_pdns]> show tables;
  570. +----------------------+
  571. | Tables_in_Slave_pdns |
  572. +----------------------+
  573. | comments |
  574. | cryptokeys |
  575. | domainmetadata |
  576. | domains |
  577. | records |
  578. | supermasters |
  579. | tsigkeys |
  580. +----------------------+
  581. 7 rows in set (0.00 sec)
  582. ```
  583.  
  584. #### Step 3: Instalasi dan konfigurasi PowerDNS
  585.  
  586. Setelah membuat database dan table untuk service PowerDNS selanjutnya lakukan instalasi PowerDNS.
  587.  
  588. > ```# yum -y install pdns pdns-backend-mysql bind-utils```
  589.  
  590. Lakukan konfigurasi file `pdns.conf`
  591.  
  592. > ```
  593. # cd /etc/pdns/
  594. pdns# vi pdns.conf
  595. ```
  596.  
  597. Rubah dan tambahakan perintah berikut.
  598.  
  599. > ```
  600. #i################################
  601. # launch Which backends to launch and order to query them in
  602. #
  603. # launch=bind (kasih tanda pagar untuk nonaktifkan)
  604. launch=gmysql
  605. gmysql-host=localhost
  606. gmysql-user=pdns (user database)
  607. gmysql-password=y4m4h475 (Password database)
  608. gmysql-dbname=Slave_pdns (nama database)
  609. ```
  610.  
  611. Save dan Close kemudian enable serta aktifkan service PowerDNS.
  612.  
  613. > ```
  614. # systemctl enable pdns
  615. # systemctl start pdns
  616. ```
  617.  
  618. Pastikan service PowerDNS berjalan
  619.  
  620. > ```
  621. # systemctl status pdns
  622. ● pdns.service - PowerDNS Authoritative Server
  623. Loaded: loaded (/usr/lib/systemd/system/pdns.service; enabled; vendor preset: disabled)
  624. Active: active (running) since Sun 2020-03-15 13:08:11 WIB; 1h 21min ago
  625. Docs: man:pdns_server(1)
  626. man:pdns_control(1)
  627. https://doc.powerdns.com
  628. Main PID: 2796 (pdns_server)
  629. CGroup: /system.slice/pdns.service
  630. └─2796 /usr/sbin/pdns_server --guardian=no --daemon=no --disable-s...
  631. Mar 15 13:08:11 pdns.padiakse.my.id pdns_server[2796]: UDP server bound to 0....
  632. Mar 15 13:08:11 pdns.padiakse.my.id pdns_server[2796]: UDPv6 server bound to ...
  633. Mar 15 13:08:11 pdns.padiakse.my.id pdns_server[2796]: TCP server bound to 0....
  634. Mar 15 13:08:11 pdns.padiakse.my.id pdns_server[2796]: TCPv6 server bound to ...
  635. Mar 15 13:08:11 pdns.padiakse.my.id pdns_server[2796]: PowerDNS Authoritative...
  636. Mar 15 13:08:11 pdns.padiakse.my.id pdns_server[2796]: Using 64-bits mode. Bu...
  637. Mar 15 13:08:11 pdns.padiakse.my.id pdns_server[2796]: PowerDNS comes with AB...
  638. Mar 15 13:08:11 pdns.padiakse.my.id pdns_server[2796]: Creating backend conne...
  639. Mar 15 13:08:11 pdns.padiakse.my.id pdns_server[2796]: About to create 3 back...
  640. Mar 15 13:08:11 pdns.padiakse.my.id pdns_server[2796]: Done launching threads...
  641. Hint: Some lines were ellipsized, use -l to show in full.
  642. ```
  643.  
  644. ## Konfigurasi PowerDNS Master Slave
  645. #### Step 1: Konfigurasi PowerDNS Master
  646.  
  647. Lakukan konfigurasi file `pdns.conf`
  648.  
  649. > ```
  650. # cd /etc/pdns/
  651. pdns# vi pdns.conf
  652. ```
  653.  
  654. Lakukan perubahan pada file pdns.conf seperti berikut:
  655.  
  656. * Script ini digunakan untuk mengenali alamat IP dari PowerDNS Slave
  657.  
  658. > ```
  659. #################################
  660. # allow-axfr-ips Allow zonetransfers only to these subnets
  661. #
  662. # allow-axfr-ips=127.0.0.0/8,::1
  663. allow-axfr-ips=117.53.47.189 (isikan alamat IP Pdns Slave)
  664. ```
  665.  
  666. * Script ini digunakan untuk menandai bahwa PowerDNS pada VM ini berperan sebagai master
  667.  
  668. > ```
  669. #################################
  670. # master Act as a master
  671. #
  672. # master=no
  673. master=yes
  674. ```
  675.  
  676. #### Step 2: Konfigurasi PowerDNS Slave
  677. Lakukan konfigurasi file `pdns.conf`
  678.  
  679. > ```
  680. # cd /etc/pdns/
  681. pdns# vi pdns.conf
  682. ```
  683.  
  684. Lakukan perubahan pada file pdns.conf seperti berikut:
  685.  
  686. * Script ini digunakan untuk mengenali alamat IP dari PowerDNS Master
  687.  
  688. > ```
  689. #################################
  690. # allow-axfr-ips Allow zonetransfers only to these subnets
  691. #
  692. # allow-axfr-ips=127.0.0.0/8,::1
  693. allow-axfr-ips=103.23.20.70 (Isikan IP Pdns Master)
  694. ```
  695.  
  696. * Script ini digunakan untuk mengizinkan alamat IP master agar dapat melakukan perubahan pada PowerDNS Slave
  697.  
  698. > ```
  699. #################################
  700. # allow-dnsupdate-from A global setting to allow DNS updates from these IP ranges.
  701. #
  702. # allow-dnsupdate-from=127.0.0.0/8,::1
  703. allow-dnsupdate-from=103.23.20.70 (Isikan IP Pdns Master)
  704. ```
  705.  
  706. * Script ini digunakan untuk mengizinkan alamat IP master agar bisa memberi info terkait dengan perubahan pada PowerDNS Master ke PowerDNS Slave
  707.  
  708. > ```
  709. #################################
  710. # allow-notify-from Allow AXFR NOTIFY from these IP ranges. If empty, drop all incoming notifies.
  711. #
  712. # allow-notify-from=0.0.0.0/0,::/0
  713. allow-notify-from=103.23.20.70 (Isikan IP Pdns Master)
  714. ```
  715.  
  716. * Script ini digunakan sebagai identitas PowerDNS Slave
  717.  
  718. > ```
  719. #################################
  720. # slave Act as a slave
  721. #
  722. # slave=no
  723. slave=yes
  724. ```
  725.  
  726. * Script ini dijalankan untuk melakukan refresh pada PowerDNS Slave dengan interval waktu tertentu
  727.  
  728. > ```
  729. #################################
  730. # slave-cycle-interval Schedule slave freshness checks once every .. seconds
  731. #
  732. # slave-cycle-interval=60
  733. slave-cycle-interval=60
  734. ```
  735.  
  736. ## Konfigurasi Zona dan Add Record DNS di PowerDNS Master
  737. Langkah pertama terlebih dahulu kita buat zona untuk menyimpan record domain.
  738.  
  739. > ```
  740. MariaDB [testpdns]> INSERT INTO domains (name, type) values ('padiakse.my.id', 'Master');
  741. ```
  742.  
  743. Langkah kedua tambahkan record domain pada table records
  744.  
  745. > ```
  746. MariaDB [testpdns]> INSERT INTO records (domain_id, name, content, type,ttl,prio) VALUES (1,'padiakse.my.id','padiakse.my.id root.padiakse.my.id 1 10380 3600 604800 3600','SOA',86400,NULL);
  747. MariaDB [testpdns]> INSERT INTO records (domain_id, name, content, type,ttl,prio) VALUES (1,'padiakse.my.id','pd1.padiakse.my.id','NS',86400,NULL);
  748. MariaDB [testpdns]> INSERT INTO records (domain_id, name, content, type,ttl,prio) VALUES (1,'padiakse.my.id','pd2.padiakse.my.id','NS',86400,NULL);
  749. MariaDB [testpdns]> INSERT INTO records (domain_id, name, content, type,ttl,prio) VALUES (1,'pd1.padiakse.my.id','103.23.20.70','A',3600,NULL);
  750. MariaDB [testpdns]> INSERT INTO records (domain_id, name, content, type,ttl,prio) VALUES (1,'pd2.padiakse.my.id','117.53.47.189','A',3600,NULL);
  751. MariaDB [testpdns]> INSERT INTO records (domain_id, name, content, type,ttl,prio) VALUES (1,'padiakse.my.id','103.23.20.70','A',3600,NULL);
  752. ```
  753.  
  754. Langkah ketiga tambahkan kolom change_date pada table records
  755. MariaDB [testpdns]> INSERT INTO records (domain_id, name, content, type,ttl,prio) VALUES (1,'padiakse.my.id','103.23.20.70','A',3600,NULL);
  756. > ```
  757. MariaDB [testpdns]> ALTER TABLE records add change_date INT DEFAULT NULL;
  758. ```
  759.  
  760. Berikut hasil penambahan record tersebut.
  761.  
  762. > ```
  763. MariaDB [testpdns]> select *from records;
  764. +----+-----------+------------------------+------+----------------------------------------------------------------+-------+------+----------+-----------+------+-------------+
  765. | id | domain_id | name | type | content | ttl | prio | disabled | ordername | auth | change_date |
  766. +----+-----------+------------------------+------+----------------------------------------------------------------+-------+------+----------+-----------+------+-------------+
  767. | 1 | 1 | pd1.padiakse.my.id | A | 103.23.20.70 | 3600 | NULL | 0 | NULL | 1 | NULL |
  768. | 2 | 1 | pd2.padiakse.my.id | A | 117.53.47.189 | 3600 | NULL | 0 | NULL | 1 | NULL |
  769. | 3 | 1 | padiakse.my.id | A | 103.23.20.70 | 3600 | NULL | 0 | NULL | 1 | NULL |
  770. | 4 | 1 | padiakse.my.id | NS | pd1.padiakse.my.id | 86400 | 0 | 0 | NULL | 1 | NULL |
  771. | 5 | 1 | padiakse.my.id | NS | pd2.padiakse.my.id | 86400 | 0 | 0 | NULL | 1 | NULL |
  772. | 6 | 1 | padiakse.my.id | SOA | padiakse.my.id. root.padiakse.my.id. 12 10380 3600 604800 3600 | 86400 | 0 | 0 | NULL | 1 | NULL |
  773. +----+-----------+------------------------+------+----------------------------------------------------------------+-------+------+----------+-----------+------+-------------+
  774. 6 rows in set (0.00 sec)
  775. ```
  776.  
  777. ## Konfigurasi Table di PowerDNS Slave
  778.  
  779. Langkah pertama tambahkan data berikut pada table supermasters
  780.  
  781. > ```
  782. MariaDB [Slave_pdns]> insert into supermasters values ('103.23.20.70', 'pd2.padiakse.my.id', 'admin');
  783. MariaDB [Slave_pdns]> select *from supermasters;
  784. +--------------+--------------------+---------+
  785. | ip | nameserver | account |
  786. +--------------+--------------------+---------+
  787. | 103.23.20.70 | pd2.padiakse.my.id | admin |
  788. +--------------+--------------------+---------+
  789. 1 rows in set (0.00 sec)
  790. ```
  791.  
  792. Langkah ketiga tambahkan kolom change_date pada table records
  793.  
  794. > ```
  795. MariaDB [Slave_pdns]> ALTER TABLE records add change_date INT DEFAULT NULL;
  796. ```
  797.  
  798. Berikut kolom dari table records
  799. > ```
  800. MariaDB [Slave_pdns]> DESC records;
  801. +-------------+----------------+------+-----+---------+----------------+
  802. | Field | Type | Null | Key | Default | Extra |
  803. +-------------+----------------+------+-----+---------+----------------+
  804. | id | bigint(20) | NO | PRI | NULL | auto_increment |
  805. | domain_id | int(11) | YES | MUL | NULL | |
  806. | name | varchar(255) | YES | MUL | NULL | |
  807. | type | varchar(10) | YES | | NULL | |
  808. | content | varchar(64000) | YES | | NULL | |
  809. | ttl | int(11) | YES | | NULL | |
  810. | prio | int(11) | YES | | NULL | |
  811. | disabled | tinyint(1) | YES | | 0 | |
  812. | ordername | varchar(255) | YES | MUL | NULL | |
  813. | auth | tinyint(1) | YES | | 1 | |
  814. | change_date | int(11) | YES | | NULL | |
  815. +-------------+----------------+------+-----+---------+----------------+
  816. 11 rows in set (0.01 sec)
  817. ```
  818.  
  819. ## Testing Replikasi PowerDNS Master Slave
  820. **Testing Konfigurasi dari sisi Master**
  821.  
  822. * Restart Service PowerDNS
  823.  
  824. > ```
  825. [root@pdns pdns]# systemctl restart pdns
  826. ```
  827.  
  828. * Jalankan perintah berikut untuk memperbarui zona dns master
  829.  
  830. > ```
  831. [root@pdns pdns]# pdnsutil increase-serial padiakse.my.id
  832. SOA serial for zone padiakse.my.id set to 13
  833. ```
  834.  
  835. * Jalankan perintah berikut untuk melakukan notify dan mereplikasi record dns master ke pdns slave.
  836.  
  837. > ```
  838. [root@pdns pdns]# pdns_control notify padiakse.my.id
  839. Added to queue
  840. ```
  841.  
  842. * Untuk melihat apakah PowerDNS Master telah terhubung dengan PowerDNS Slave.
  843.  
  844. > ```
  845. [root@pdns pdns]# systemctl stop pdns
  846. ```
  847.  
  848. > ```
  849. [root@pdns pdns]# /usr/sbin/pdns_server --daemon=no --guardian=no --loglevel=9
  850. Mar 20 08:41:10 Reading random entropy from '/dev/urandom'
  851. Mar 20 08:41:10 Loading '/usr/lib64/pdns/libgmysqlbackend.so'
  852. Mar 20 08:41:10 [gmysqlbackend] This is the gmysql backend version 4.1.11 reporting
  853. Mar 20 08:41:10 This is a standalone pdns
  854. Mar 20 08:41:10 Listening on controlsocket in '/var/run/pdns.controlsocket'
  855. Mar 20 08:41:10 UDP server bound to 0.0.0.0:53
  856. Mar 20 08:41:10 UDPv6 server bound to [::]:53
  857. Mar 20 08:41:10 TCP server bound to 0.0.0.0:53
  858. Mar 20 08:41:10 TCPv6 server bound to [::]:53
  859. Mar 20 08:41:10 PowerDNS Authoritative Server 4.1.11 (C) 2001-2018 PowerDNS.COM BV
  860. Mar 20 08:41:10 Using 64-bits mode. Built using gcc 4.8.5 20150623 (Red Hat 4.8.5-36).
  861. Mar 20 08:41:10 PowerDNS comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it according to the terms of the GPL version 2.
  862. Mar 20 08:41:10 Set effective group id to 993
  863. Mar 20 08:41:10 Set effective user id to 996
  864. Mar 20 08:41:10 Creating backend connection for TCP
  865. Mar 20 08:41:10 gmysql Connection successful. Connected to database 'testpdns' on 'localhost'.
  866. Mar 20 08:41:10 About to create 3 backend threads for UDP
  867. Mar 20 08:41:10 Master/slave communicator launching
  868. Mar 20 08:41:10 gmysql Connection successful. Connected to database 'testpdns' on 'localhost'.
  869. Mar 20 08:41:10 No master domains need notifications
  870. Mar 20 08:41:10 gmysql Connection successful. Connected to database 'testpdns' on 'localhost'.
  871. Mar 20 08:41:10 gmysql Connection successful. Connected to database 'testpdns' on 'localhost'.
  872. Mar 20 08:41:10 gmysql Connection successful. Connected to database 'testpdns' on 'localhost'.
  873. Mar 20 08:41:10 Done launching threads, ready to distribute questions
  874. ```
  875.  
  876. **Testing Konfigurasi dari sisi Slave**
  877.  
  878. * Untuk melihat apakah PowerDNS Slave telah terhubung dengan PowerDNS Master.
  879.  
  880. > ```
  881. [root@imam pdns]# systemctl stop pdns
  882. ```
  883.  
  884. > ```
  885. [root@imam pdns]# /usr/sbin/pdns_server --daemon=no --guardian=no --loglevel=9
  886. Mar 20 08:49:30 Reading random entropy from '/dev/urandom'
  887. Mar 20 08:49:30 Loading '/usr/lib64/pdns/libgmysqlbackend.so'
  888. Mar 20 08:49:30 [gmysqlbackend] This is the gmysql backend version 4.1.11 reporting
  889. Mar 20 08:49:30 This is a standalone pdns
  890. Mar 20 08:49:30 Listening on controlsocket in '/var/run/pdns.controlsocket'
  891. Mar 20 08:49:30 UDP server bound to 0.0.0.0:53
  892. Mar 20 08:49:30 UDPv6 server bound to [::]:53
  893. Mar 20 08:49:30 TCP server bound to 0.0.0.0:53
  894. Mar 20 08:49:30 TCPv6 server bound to [::]:53
  895. Mar 20 08:49:30 PowerDNS Authoritative Server 4.1.11 (C) 2001-2018 PowerDNS.COM BV
  896. Mar 20 08:49:30 Using 64-bits mode. Built using gcc 4.8.5 20150623 (Red Hat 4.8.5-36).
  897. Mar 20 08:49:30 PowerDNS comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it according to the terms of the GPL version 2.
  898. Mar 20 08:49:30 Set effective group id to 993
  899. Mar 20 08:49:30 Set effective user id to 996
  900. Mar 20 08:49:30 Creating backend connection for TCP
  901. Mar 20 08:49:30 Master/slave communicator launching
  902. Mar 20 08:49:30 gmysql Connection successful. Connected to database 'Slave_pdns' on 'localhost'.
  903. Mar 20 08:49:30 About to create 3 backend threads for UDP
  904. Mar 20 08:49:30 gmysql Connection successful. Connected to database 'Slave_pdns' on 'localhost'.
  905. Mar 20 08:49:30 No new unfresh slave domains, 0 queued for AXFR already, 0 in progress
  906. Mar 20 08:49:30 gmysql Connection successful. Connected to database 'Slave_pdns' on 'localhost'.
  907. Mar 20 08:49:30 gmysql Connection successful. Connected to database 'Slave_pdns' on 'localhost'.
  908. Mar 20 08:49:30 gmysql Connection successful. Connected to database 'Slave_pdns' on 'localhost'.
  909. Mar 20 08:49:30 Done launching threads, ready to distribute questions
  910. ```
  911.  
  912. * Jalankan ulang/Restart service PowerDNS Slave kemudian cek table Records pada database PowerDNS Slave.
  913.  
  914. > ```
  915. [root@imam pdns]# systemctl restart pdns
  916. ```
  917.  
  918. > ```
  919. MariaDB [Slave_pdns]> select *from records;
  920. +-----+-----------+------------------------+------+--------------------------------------------------------------+-------+------+----------+-----------+------+-------------+
  921. | id | domain_id | name | type | content | ttl | prio | disabled | ordername | auth | change_date |
  922. +-----+-----------+------------------------+------+--------------------------------------------------------------+-------+------+----------+-----------+------+-------------+
  923. | 98 | 1 | padiakse.my.id | SOA | padiakse.my.id root.padiakse.my.id 13 10380 3600 604800 3600 | 86400 | 0 | 0 | NULL | 1 | NULL |
  924. | 99 | 1 | padiakse.my.id | A | 103.23.20.70 | 3600 | 0 | 0 | NULL | 1 | NULL |
  925. | 100 | 1 | padiakse.my.id | NS | pd1.padiakse.my.id | 86400 | 0 | 0 | NULL | 1 | NULL |
  926. | 101 | 1 | padiakse.my.id | NS | pd2.padiakse.my.id | 86400 | 0 | 0 | NULL | 1 | NULL |
  927. | 102 | 1 | pd1.padiakse.my.id | A | 103.23.20.70 | 3600 | 0 | 0 | NULL | 1 | NULL |
  928. | 104 | 1 | pd2.padiakse.my.id | A | 117.53.47.189 | 3600 | 0 | 0 | NULL | 1 | NULL |
  929. +-----+-----------+------------------------+------+--------------------------------------------------------------+-------+------+----------+-----------+------+-------------+
  930. 6 rows in set (0.00 sec)
  931. ```
  932.  
  933. **Uji Coba untuk Menambah Record**
  934.  
  935. Tambahkan record A pada sisi Master sebagai contoh kami menambahkan subdomain Archive dan berikut langkahnnya.
  936.  
  937. * Add record pada table records dari sisi Master
  938.  
  939. > ```
  940. MariaDB [testpdns]> INSERT INTO records (domain_id, name, content, type,ttl,prio) VALUES (1,'Archive.padiakse.my.id','103.23.20.70','A',3600,NULL);
  941. ```
  942.  
  943. * Berikut hasil penambahan record pada sisi Master
  944.  
  945. > ```
  946. MariaDB [testpdns]> select *from records;
  947. +----+-----------+------------------------+------+----------------------------------------------------------------+-------+------+----------+-----------+------+-------------+
  948. | id | domain_id | name | type | content | ttl | prio | disabled | ordername | auth | change_date |
  949. +----+-----------+------------------------+------+----------------------------------------------------------------+-------+------+----------+-----------+------+-------------+
  950. | 1 | 1 | Archive.padiakse.my.id | A | 117.53.47.189 | 3600 | NULL | 0 | NULL | 1 | NULL |
  951. | 2 | 1 | pd1.padiakse.my.id | A | 103.23.20.70 | 3600 | NULL | 0 | NULL | 1 | NULL |
  952. | 3 | 1 | pd2.padiakse.my.id | A | 117.53.47.189 | 3600 | NULL | 0 | NULL | 1 | NULL |
  953. | 4 | 1 | padiakse.my.id | A | 103.23.20.70 | 3600 | NULL | 0 | NULL | 1 | NULL |
  954. | 5 | 1 | padiakse.my.id | NS | pd1.padiakse.my.id | 86400 | 0 | 0 | NULL | 1 | NULL |
  955. | 6 | 1 | padiakse.my.id | NS | pd2.padiakse.my.id | 86400 | 0 | 0 | NULL | 1 | NULL |
  956. | 7 | 1 | padiakse.my.id | SOA | padiakse.my.id. root.padiakse.my.id. 12 10380 3600 604800 3600 | 86400 | 0 | 0 | NULL | 1 | NULL |
  957. +----+-----------+------------------------+------+----------------------------------------------------------------+-------+------+----------+-----------+------+-------------+
  958. 7 rows in set (0.00 sec)
  959. ```
  960.  
  961. * Perbarui zona dns master
  962.  
  963. > ```
  964. [root@pdns pdns]# pdnsutil increase-serial padiakse.my.id
  965. SOA serial for zone padiakse.my.id set to 13
  966. ```
  967.  
  968. * Berikan notify dan mereplikasi record dns master ke pdns slave.
  969.  
  970. > ```
  971. [root@pdns pdns]# pdns_control notify padiakse.my.id
  972. Added to queue
  973. ```
  974.  
  975. * Pengecekan dari sisi Slave dengan cara jalankan ulang/Restart service PowerDNS Slave kemudian cek table Records pada database PowerDNS Slave.
  976.  
  977. > ```
  978. [root@imam pdns]# systemctl restart pdns
  979. ```
  980.  
  981. > ```
  982. MariaDB [Slave_pdns]> select *from records;
  983. +-----+-----------+------------------------+------+--------------------------------------------------------------+-------+------+----------+-----------+------+-------------+
  984. | id | domain_id | name | type | content | ttl | prio | disabled | ordername | auth | change_date |
  985. +-----+-----------+------------------------+------+--------------------------------------------------------------+-------+------+----------+-----------+------+-------------+
  986. | 98 | 1 | padiakse.my.id | SOA | padiakse.my.id root.padiakse.my.id 13 10380 3600 604800 3600 | 86400 | 0 | 0 | NULL | 1 | NULL |
  987. | 99 | 1 | padiakse.my.id | A | 103.23.20.70 | 3600 | 0 | 0 | NULL | 1 | NULL |
  988. | 100 | 1 | padiakse.my.id | NS | pd1.padiakse.my.id | 86400 | 0 | 0 | NULL | 1 | NULL |
  989. | 101 | 1 | padiakse.my.id | NS | pd2.padiakse.my.id | 86400 | 0 | 0 | NULL | 1 | NULL |
  990. | 102 | 1 | pd1.padiakse.my.id | A | 103.23.20.70 | 3600 | 0 | 0 | NULL | 1 | NULL |
  991. | 104 | 1 | pd2.padiakse.my.id | A | 117.53.47.189 | 3600 | 0 | 0 | NULL | 1 | NULL |
  992. | 105 | 1 | archive.padiakse.my.id | A | 117.53.47.189 | 3600 | 0 | 0 | NULL | 1 | NULL |
  993. +-----+-----------+------------------------+------+--------------------------------------------------------------+-------+------+----------+-----------+------+-------------+
  994. 7 rows in set (0.00 sec)
  995. ```
  996.  
  997. **Add Glue Record Pada Portal Domain**
  998.  
  999. Untuk menambahkan glue record pada domain.tld, silakan menghubungi pihak registrar domain tersebut dan dalam case ini kami menggunakan domain dari registrar Domain Cloud.
  1000.  
  1001. * Cara lihat registrar domain
  1002.  
  1003. > ```
  1004. $ whois domain.tld
  1005. Sponsoring Registrar PANDI ID:garuda
  1006. Sponsoring Registrar Organization:Domain Cloud
  1007. Sponsoring Registrar City:Jakarta Selatan
  1008. Sponsoring Registrar State/Province:Jakarta
  1009. Sponsoring Registrar Postal Code:12870
  1010. Sponsoring Registrar Country:ID
  1011. Sponsoring Registrar Phone:02129682828
  1012. Sponsoring Registrar Contact Email:registrar@isi.co.id
  1013. ```
  1014.  
  1015. * Masuk pada portal domain dan pilih bagian name server masukan nama name server dan Ip Address kemudian save changes.
  1016.  
  1017.  
  1018. <img src="https://manan.s3-id-jkt-1.kilatstorage.id/gambar/1.png" width="500">
  1019. <img src="https://manan.s3-id-jkt-1.kilatstorage.id/gambar/2.png" width="500">
  1020.  
  1021. **Pengecekan untuk Master Slave PowerDNS**