Cara membuat DNS Server pada CentOS 7

DNS kepanjangan dari Domain Name System adalah sebuah sistem penamaan pada jaringan komputer, yang berfungsi memberikan nama pada setiap Host atau Komputer dan domain (daerah) yang ada di jaringan, dengan ini kita dengan mudah mengingat komputer menggunakan nama yang dikenali manusia, tidak seperti IP Address yang merupakan angka dan mungkin sulit diingat.

Sedangkan DNS Server adalah server yang menyediakan layanan DNS, server ini yang menyimpan database nama domain ataupun komputer, dan akan menerjemahkan dari nama domain menjadi IP Address jika ada yang meminta. Beberapa poin penting dari DNS Server :
  • DNS dapat memberi nama sebuah domain atau daerah (bisa disebut zone atau zona) yang terdiri dari banyak komputer didalamnya.
  • Dari satu nama domain dapat dibuat sub-domain yang bisa digunakan untuk menamai suatu komputer/server (seperti www,web,blog,dll).
  • Menggunakan protokol UDP#53 dalam pengiriman pesan DNS nya, jika ukuran pesannya besar bisa saja menggunakan TCP#53.
  • Dalam satu database zone/domain terdiri dari beberapa jenis record yang memiliki perannya masing-masing. Record DNS paling umum :
    • A atau AAAA berfungsi untuk menerjemahkan Domain/Sub-domain > IP Address.
    • PTR kebalikan dari A.
    • NS berisi informasi server dns yang memiliki zone tersebut.
    • MX untuk mengarahkan ke mail server yang ada didomain ini.
    • CNAME alias atau nama lain dari sebuah nama.
Pada Sistem Operasi Linux CentOS 7 aplikasi yang menjalankan service DNS adalah BIND, Berkeley Internet Name Domain, aplikasi yang dapat membangun sebuah DNS server pada hampir semua distro linux termasuk CentOS.

Sekarang kita akan mencoba mengkonfigurasi DNS Server berdasarkan topologi dibawah ini :
Dari topologi diatas kita dapat melihat bahwa jaringan server dibagi menjadi dua domain, yaitu root domain network.dz dan server.dz, masing-masing domain tersebut akan memiliki sub-domain, tiap sub-domain akan mengarah pada salah satu server atau service/layanan tertentu pada server.

Untuk reverse terdapat dua domain, karena dalam topologi terdapat dua network yang berbeda atau dua broadcast domain yang berbeda, yaitu 192.168.100.0 dan 192.168.101.0

Server m1-dz (DNS Server)

Server ini akan menjadi server DNS untuk domain network.dz dan server.dz.
  1. Pertama lakukan konfigurasi IP Address berdasarkan topologi, bisa dilihat disini.
  2. Install paket aplikasi dns server yaitu BIND.
  3. [root@m1-dz ~]# yum -y install bind bind-utils
    
  4. Edit file /etc/named.conf untuk mengatur konfigurasi bind dan menambahkan zone domain baru.
  5. [root@m1-dz ~]# vi /etc/named.conf
    options {
            listen-on port 53 { any; }; #Agar dapat diakses siapapun
            listen-on-v6 port 53 { none; }; #IPv6 tidak digunakan
            directory       "/var/named";
            dump-file       "/var/named/data/cache_dump.db";
            statistics-file "/var/named/data/named_stats.txt";
            memstatistics-file "/var/named/data/named_mem_stats.txt";
            allow-query     { any; }; #Siapapun dapat membaca database DNS
            forwarders {
                    192.168.100.1; #DNS Server untuk ke internet
            };
            recursion yes;
    
    /////// Dipotong //////////////
    
    };
    
    /////// Dipotong //////////////
    
    zone "." IN {
            type hint;
            file "named.ca";
    };
    
    #Buat zone domain network.dz (forward)
    
    zone "network.dz" IN {
            type master;
            file "/var/named/db.network"; #lokasi file database
    };
    zone "server.dz" IN {
            type master;
            file "/var/named/db.server";
    };
    
    #zone reverse IP Network dibalik
    
    zone "100.168.192.in-addr.arpa" IN {
            type master;
            file "/var/named/db.100"; #lokasi file database
    };
    zone "101.168.192.in-addr.arpa" IN {
            type master;
            file "/var/named/db.101";
    };
    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";
    
  6. Cek konfigurasi pastikan tidak ada yang error dengan perintah.
  7. [root@m1-dz ~]# named-checkconf -z
    zone network.dz/IN: loading from master file /var/named/db.network failed: file not found
    zone network.dz/IN: not loaded due to errors.
    _default/network.dz/IN: file not found
    zone 100.168.192.in-addr.arpa/IN: loading from master file /var/named/db.100 failed: file not found
    zone 100.168.192.in-addr.arpa/IN: not loaded due to errors.
    _default/100.168.192.in-addr.arpa/IN: file not found
    zone localhost.localdomain/IN: loaded serial 0
    zone localhost/IN: loaded serial 0
    zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
    zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
    zone 0.in-addr.arpa/IN: loaded serial 0
    
    Jika error file not found itu wajar karena kita belum membuat file database dari zone tersebut.
  8. Setelah konfigurasi utama selesai sekarang kita buat file database untuk masing-masing zone.
  9. #Salin saja file contoh database yang sudah ada
    [root@m1-dz named]# cp named.empty db.network
    [root@m1-dz named]# cp named.empty db.server
    [root@m1-dz named]# chown named:named db.network #mengatur permission agar dapat dibaca oleh BIND
    [root@m1-dz named]# chown named:named db.server
    [root@m1-dz named]# cp named.empty db.100
    [root@m1-dz named]# cp named.empty db.101
    [root@m1-dz named]# chown named:named db.100
    [root@m1-dz named]# chown named:named db.101
    
    #edit file zone forward
    
    [root@m1-dz named]# vi db.network
    $TTL 3H
    @       IN SOA  network.dz. root.network.dz. (
                                            0       ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
    @       IN      NS      m1-dz.network.dz. 
    @       IN      A       192.168.100.10 #root domain akan diarahkan ke server ini
    m1-dz   IN      A       192.168.100.10 #server ini
    node01  IN      A       192.168.100.11 #server node01
    node02  IN      A       192.168.100.12 #server node02
    www     IN      CNAME   m1-dz.network.dz. #CNAME www dialihkan ke m1-dz
    admin   IN      CNAME   m1-dz.network.dz. #phpmyadmin
    webmail IN      CNAME   m1-dz.network.dz. #webmail
    mail    IN      CNAME   node01.network.dz. #mail-server
    db1     IN      CNAME   node01.network.dz.
    db2     IN      CNAME   node02.network.dz.
    @       IN      MX 0    node01.network.dz. #untuk mail server pada domain ini
    
    #untuk zone forward server.dz
    [root@m1-dz named]# vi db.server
    $TTL 3H
    @       IN SOA  network.dz. root.network.dz. (
                                            0       ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
    @       IN      NS      m1-dz.network.dz.
    @       IN      A       192.168.101.10
    m2-dz   IN      A       192.168.101.10
    node01  IN      A       192.168.101.11
    www     IN      CNAME   m2-dz.server.dz.
    admin   IN      CNAME   m2-dz.server.dz.
    webmail IN      CNAME   m2-dz.server.dz.
    mail    IN      CNAME   node01.server.dz.
    db1     IN      CNAME   m2-dz.server.dz.
    db2     IN      CNAME   node01.server.dz.
    @       IN      MX 0    node01.server.dz.
    
    #edit file zone reverse yang merupakan kebalikannya
    
    [root@m1-dz named]# vi db.100
    $TTL 3H
    @       IN SOA  network.dz. root.network.dz. (
                                            0       ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
    @       IN      NS      m1-dz.network.dz.
    10      IN      PTR     network.dz. #Host ID atau oktet terakhir IP Address
    10      IN      PTR     m1-dz.network.dz.
    11      IN      PTR     node01.network.dz.
    12      IN      PTR     node02.network.dz.
    
    #untuk 192.168.101.0
    
    [root@m1-dz named]# vi db.101
    $TTL 3H
    @       IN SOA  network.dz. root.network.dz. (
                                            0       ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
    @       IN      NS      m1-dz.network.dz.
    10      IN      PTR     server.dz.
    10      IN      PTR     m2-dz.server.dz.
    11      IN      PTR     node01.server.dz.
    
  10. Cek kembali hasil konfigurasi dan pastikan sama sekali tidak ada error
  11. [root@m1-dz named]# named-checkconf -z
    zone network.dz/IN: loaded serial 0
    zone server.dz/IN: loaded serial 0
    zone 100.168.192.in-addr.arpa/IN: loaded serial 0
    zone 101.168.192.in-addr.arpa/IN: loaded serial 0
    zone localhost.localdomain/IN: loaded serial 0
    zone localhost/IN: loaded serial 0
    zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
    zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
    zone 0.in-addr.arpa/IN: loaded serial 0
    
  12. Buka firewall untuk dns, dan aktifkan service dns named.
  13. #membuka firewall untuk dns
    [root@m1-dz named]# firewall-cmd --add-service=dns --permanent
    success
    [root@m1-dz named]# firewall-cmd --reload
    success
    #menjalankan service dns
    [root@m1-dz named]# systemctl start named
    [root@m1-dz named]# systemctl enable named
    Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
    
  14. Kita tes dns server dari server itu sendiri dan dari komputer lain
  15. #atur terlebih dahulu dns server yang digunakan
    [root@m1-dz named]# nmcli c modify eth0 ipv4.dns 192.168.100.10
    [root@m1-dz named]# nmcli c down eth0; nmcli c up eth0
    
    #kemudian testing menggunakan nslookup atau dig
    [root@m1-dz named]# nslookup node01.network.dz
    Server:  192.168.100.10
    Address: 192.168.100.10#53
    
    Name: node01.network.dz
    Address: 192.168.100.11
    
    [root@m1-dz named]# nslookup www.network.dz
    Server:  192.168.100.10
    Address: 192.168.100.10#53
    
    www.network.dz canonical name = m1-dz.network.dz.
    Name: m1-dz.network.dz
    Address: 192.168.100.10
    
    [root@m1-dz named]# nslookup 192.168.100.10
    Server:  192.168.100.10
    Address: 192.168.100.10#53
    
    10.100.168.192.in-addr.arpa name = network.dz.
    10.100.168.192.in-addr.arpa name = m1-dz.network.dz.
    
    
    [root@m1-dz named]# dig network.dz mx #MX Record
    
    ; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> network.dz mx
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24869
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 3
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;network.dz.   IN MX
    
    ;; ANSWER SECTION:
    network.dz.  10800 IN MX 0 node01.network.dz.
    
    ;; AUTHORITY SECTION:
    network.dz.  10800 IN NS m1-dz.network.dz.
    
    ;; ADDITIONAL SECTION:
    node01.network.dz. 10800 IN A 192.168.100.11
    m1-dz.network.dz. 10800 IN A 192.168.100.10
    
    ;; Query time: 12 msec
    ;; SERVER: 192.168.100.10#53(192.168.100.10)
    ;; WHEN: Sat Jun 23 14:31:28 WIB 2018
    ;; MSG SIZE  rcvd: 114
    

Server Node01 & Node02

Server ini nantinya akan berisi service lainnya seperti web server, database, mail server, dll.
  1. Konfigurasi Hostname, Networking
  2. #Server NODE01
    [root@localhost ~]# hostnamectl set-hostname node01.network.dz
    [root@localhost ~]# nmcli c modify eth0 ipv4.addresses 192.168.100.11/24
    [root@localhost ~]# nmcli c modify eth0 ipv4.gateway 192.168.100.1
    [root@localhost ~]# nmcli c modify eth0 ipv4.dns 192.168.100.10
    [root@localhost ~]# nmcli c modify eth0 ipv4.method manual
    [root@localhost ~]# init 6
    
    #Server NODE02
    [root@localhost ~]# hostnamectl set-hostname node02.network.dz
    [root@localhost ~]# nmcli c modify eth0 ipv4.addresses 192.168.100.12/24
    [root@localhost ~]# nmcli c modify eth0 ipv4.gateway 192.168.100.1
    [root@localhost ~]# nmcli c modify eth0 ipv4.dns 192.168.100.10
    [root@localhost ~]# nmcli c modify eth0 ipv4.method manual
    [root@localhost ~]# init 6
    
  3. Lalu kita testing query dns dari server tersebut.
  4. [root@node01 ~]# ping m1-dz.network.dz
    PING m1-dz.network.dz (192.168.100.10) 56(84) bytes of data.
    64 bytes from m1-dz.network.dz (192.168.100.10): icmp_seq=1 ttl=64 time=0.390 ms
    64 bytes from m1-dz.network.dz (192.168.100.10): icmp_seq=2 ttl=64 time=0.413 ms
     
    --- m1-dz.network.dz ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 1001ms
    rtt min/avg/max/mdev = 0.390/0.401/0.413/0.023 ms
    [root@node01 ~]# ping www.network.dz
    PING m1-dz.network.dz (192.168.100.10) 56(84) bytes of data.
    64 bytes from network.dz (192.168.100.10): icmp_seq=1 ttl=64 time=0.367 ms
    64 bytes from network.dz (192.168.100.10): icmp_seq=2 ttl=64 time=0.412 ms
     
    --- m1-dz.network.dz ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 1001ms
    rtt min/avg/max/mdev = 0.367/0.389/0.412/0.029 ms
    [root@node01 ~]# ping db2.network.dz
    PING node02.network.dz (192.168.100.12) 56(84) bytes of data.
    64 bytes from node02.network.dz (192.168.100.12): icmp_seq=1 ttl=64 time=0.592 ms
    64 bytes from node02.network.dz (192.168.100.12): icmp_seq=2 ttl=64 time=0.450 ms
     
    --- node02.network.dz ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 1001ms
    rtt min/avg/max/mdev = 0.450/0.521/0.592/0.071 ms
    
    [root@node02 ~]# ping mail.network.dz
    PING m1-dz.network.dz (192.168.100.10) 56(84) bytes of data.
    64 bytes from m1-dz.network.dz (192.168.100.10): icmp_seq=1 ttl=64 time=0.406 ms
    64 bytes from m1-dz.network.dz (192.168.100.10): icmp_seq=2 ttl=64 time=0.502 ms
    64 bytes from m1-dz.network.dz (192.168.100.10): icmp_seq=3 ttl=64 time=0.521 ms
     
    --- m1-dz.network.dz ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2003ms
    rtt min/avg/max/mdev = 0.406/0.476/0.521/0.053 ms
    
    #Ping domain yang berada di internet (opsional)
    [root@node02 ~]# ping google.com
    PING google.com (74.125.24.101) 56(84) bytes of data.
    64 bytes from 74.125.24.101 (74.125.24.101): icmp_seq=1 ttl=40 time=54.5 ms
    64 bytes from 74.125.24.101 (74.125.24.101): icmp_seq=2 ttl=40 time=44.0 ms
    64 bytes from 74.125.24.101 (74.125.24.101): icmp_seq=3 ttl=40 time=47.9 ms
    64 bytes from 74.125.24.101 (74.125.24.101): icmp_seq=4 ttl=40 time=45.0 ms
    64 bytes from 74.125.24.101 (74.125.24.101): icmp_seq=5 ttl=40 time=39.1 ms
     
    --- google.com ping statistics ---
    5 packets transmitted, 5 received, 0% packet loss, time 8072ms
    rtt min/avg/max/mdev = 39.146/46.163/54.566/5.081 ms
    
    
  5. Jika sudah berhasil maka konfigurasi sampai disini sudah selesai. Untuk melakukan troubleshooting kita dapat melihat log atau laporan yang dibuat oleh sistem dengan perintah dibawah ini pada DNS Server.
  6. [root@m1-dz ~]# tail -f /var/log/messages | grep named
    Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 193.0.14.129#53
    Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 192.58.128.30#53
    Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 192.36.148.17#53
    Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 198.97.190.53#53
    Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 202.12.27.33#53
    Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 192.5.5.241#53
    Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 192.228.79.201#53
    Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 192.203.230.10#53
    Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 199.7.91.13#53
    Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 192.33.4.12#53
    

Referensi

Komentar