BIND dan DNS

Server DNS Domain

Oleh Iwan Setiawan
http://www.duniasemu.org/writings
2003/04/10 15:27:28

Pada artikel sebelumnya kita sudah mengenal mengenai konsep dan gambaran Domain Name System (DNS) dan Berkeley Internet Name Domain (BIND) sebagai salah satu implementasinya dan pembuatan server DNS resolving-caching tanpa domain.
Sekarang penulis akan membahas mengenai pembuatan server DNS dengan domain yang nantinya terhubung ke Internet.

Dengan pembuatan server DNS ini, domain anda yang sudah didaftarkan pada InterNIC dapat diakses dari segala penjuru dunia (Internet).

Penulis akan membahas spesifik pada distro berbasis rpm yaitu Red Hat pada beberapa bagian dari artikel ini, walaupun konsepnya hampir sama untuk distro lain.

Diharapkan anda sudah membaca artikel pertama dan kedua sebelum membaca artikel ketiga ini. Seperti halnya pada pembuatan resolving-caching name-server yang kita bahas sebelumnya, kita harus mempunyai paket bind, bind-utils dan caching-nameserver. Penulis asumsikan sistem Linux anda sudah terinstal BIND. Versi BIND penulis adalah 9.2.1.

Nama Domain

Pertama kita harus mempunyai nama domain yang sudah didaftarkan ke InterNIC untuk Top Level Domain (TLD) atau IDNIC untuk TLD-ID (.id): net.id, co.id, or.id, web.id.
Pendaftaran dapat secara langsung atau melalui ISP dan penyedia layanan pendaftaran dan pembelian nama domain.
Jika anda belum mau untuk mendaftarkan domain dan ingin membuat domain main-main, penulis ingatkan untuk menambahkan baris notify no pada zone di berkas named.conf. Tujuannya adalah agar named tidak memberikan pencarian dan pemberitahuan ke server yang terdaftar sebagai NS record pada berkas zone dan secondary-master/slave name-server (jika ada) untuk meng-update database cache name-server domain anda itu. Karena record dengan domain-main-main Anda tidak ada dalam jaringan atau Internet. Contoh penambahan baris notify no:

zone "domain-belum-daftar.org" {
        type master;
        notify no;
        file "db.domain-belum-daftar.org";
};

Konfigurasi

Untuk mudahnya penulis buat skenario pembuatan server DNS dengan domain sebagai berikut:
Nama domain yang sudah kita daftarkan adalah my-server.com.
Alamat IP publik yang diberikan oleh ISP kita adalah 202.234.5.67 s.d 202.234.5.72. Pada server DNS akan digunakan IP 202.234.5.67.

Domain dan IP di atas adalah 'fiktif' jadi dalam named.conf perlu ditambahkan baris notify no pada bagian zone. Untuk Anda yang mempunyai domain dan alamat IP resmi tinggal mengganti domain my-server.com dan IP-nya.

Seperti biasa kita harus mengkonfigurasi berkas-berkas:

  1. named.conf
    Tambahkan baris zone untuk domain anda pada berkas ini (my-server.com).

    // generated by named-bootconf.pl
    
    options {
    	directory "/var/named";
    	/*
    	 * If there is a firewall between you and nameservers you want
    	 * to talk to, you might need to uncomment the query-source
    	 * directive below.  Previous versions of BIND always asked
    	 * questions using port 53, but BIND 8.1 uses an unprivileged
    	 * port by default.
    	query-source address * port 53;
    	 */
    };
    
    zone "." IN {
    	type hint;
    	file "named.ca";
    };
    
    zone "0.0.127.in-addr.arpa" IN {
    	type master;
    	file "named.local";
    };
    
    zone "my-server.com" IN {
    	type master;
    	notify no;
    	file "db.my-server.com";
    };
    
    zone "5.234.202.in-addr.arpa" IN {
    	type master;
    	notify no;
    	file "db.202.234.5";
    };
    
    key "key" {
    	algorithm hmac-md5;
            secret "jggRewTTCgdTOUvWPd0cqPoRiQfKvoYYJnhpVqWcWpfrgSRedgKlpyjbmlsd";
    };
    

    Baris zone "my-server.com" adalah menunjukkan zone yang otoritatif untuk nama domain my-server.com dan diikuti dengan dengan tipe name-server yaitu master karena kita akan membuat primary-master name-server. Selanjutnya diikuti nama berkas database zone yaitu db.my-server.com, letaknya berada di direktori /var/named/ sesuai dengan options pada baris directory.

    Baris zone "5.234.202.in-addr.arpa" adalah menunjukkan zone reverse-mapping. Pemetaan alamat IP ke nama domain di bawah my-server.com.

  2. named.ca
    Berkas ini berisi daftar name-server root di Internet. Isinya identik dengan named.ca pada konfigurasi BIND untuk resolving-caching juga cara meng-update-nya.

    ;       This file holds the information on root name servers needed to
    ;       initialize cache of Internet domain name servers
    ;       (e.g. reference this file in the "cache  .  "
    ;       configuration file of BIND domain name servers).
    ;
    ;       This file is made available by InterNIC registration services
    ;       under anonymous FTP as
    ;           file                /domain/named.root
    ;           on server           FTP.RS.INTERNIC.NET
    ;       -OR- under Gopher at    RS.INTERNIC.NET
    ;           under menu          InterNIC Registration Services (NSI)
    ;              submenu          InterNIC Registration Archives
    ;           file                named.root
    ;
    ;       last update:    Aug 22, 1997
    ;       related version of root zone:   1997082200
    ;
    ;
    ; formerly NS.INTERNIC.NET
    ;
    .                        3600000  IN  NS    A.ROOT-SERVERS.NET.
    A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
    ;
    ; formerly NS1.ISI.EDU
    ;
    .                        3600000      NS    B.ROOT-SERVERS.NET.
    B.ROOT-SERVERS.NET.      3600000      A     128.9.0.107
    ;
    ; formerly C.PSI.NET
    ;
    .                        3600000      NS    C.ROOT-SERVERS.NET.
    C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
    ;
    ; formerly TERP.UMD.EDU
    ;
    .                        3600000      NS    D.ROOT-SERVERS.NET.
    D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
    ;
    ; formerly NS.NASA.GOV
    ;
    .                        3600000      NS    E.ROOT-SERVERS.NET.
    E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
    ;
    ; formerly NS.ISC.ORG
    ;
    .                        3600000      NS    F.ROOT-SERVERS.NET.
    F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
    ;
    ; formerly NS.NIC.DDN.MIL
    ;
    .                        3600000      NS    G.ROOT-SERVERS.NET.
    G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
    ;
    ; formerly AOS.ARL.ARMY.MIL
    ;
    .                        3600000      NS    H.ROOT-SERVERS.NET.
    H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
    ;
    ; formerly NIC.NORDU.NET
    ;
    .                        3600000      NS    I.ROOT-SERVERS.NET.
    I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
    ;
    ; temporarily housed at NSI (InterNIC)
    ;
    .                        3600000      NS    J.ROOT-SERVERS.NET.
    J.ROOT-SERVERS.NET.      3600000      A     198.41.0.10
    ;
    ; housed in LINX, operated by RIPE NCC
    ;
    .                        3600000      NS    K.ROOT-SERVERS.NET.
    K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
    ;
    ; temporarily housed at ISI (IANA)
    ;
    .                        3600000      NS    L.ROOT-SERVERS.NET.
    L.ROOT-SERVERS.NET.      3600000      A     198.32.64.12
    ;
    ; housed in Japan, operated by WIDE
    ;
    .                        3600000      NS    M.ROOT-SERVERS.NET.
    M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
    ; End of File
    

  3. named.local
    Berkas ini berisi database untuk localhost fungsinya untuk alamat loopback.

    $TTL	86400
    @       IN      SOA     ns1.my-server.com. root.ns1.my-server.com.  (
                                          2002081219 ; Serial
                                          28800      ; Refresh
                                          14400      ; Retry
                                          3600000    ; Expire
                                          86400 )    ; Minimum
                  IN      NS      ns1.my-server.com.
    1       IN      PTR     localhost.
    

  4. resolve.conf
    Berisi domain pertama yang akan dicari dan name-server yang akan dituju untuk permintaan resolving nama domain.

    search ns1.my-server.com my-server.com
    nameserver 127.0.0.1
    nameserver 202.234.5.67
    

  5. Berkas zone
    Berkas ini berisi database-cache untuk domain tertentu misal: my-server.com. Berkas ini merupakan berkas yang penting dari suatu domain karena di dalamnya terdapat data dan informasi yang penting untuk nama host/subdomain/domain dan alamat IP serta server mana yang otoritatif untuk domain tersebut.

    $TTL	86400
    @	IN	SOA	ns1.my-server.com.	root.ns1.my-server.com.	(
                                          2002081219 ; Serial
                                          28800      ; Refresh
                                          14400      ; Retry
                                          3600000    ; Expire
                                          86400 )    ; Minimum
    
    ; Name Servers
    @	IN	NS	ns1.my-server.com.
    
    ; MX records
    IN       MX      10  mx.my-server.com.
    
    ns1			IN    A	202.234.5.67
    mx			IN	A	202.137.7.68
    www			IN	A	202.137.7.69
    my-server.com.	IN	CNAME	ns1.my-server.com.
    squirtle		IN	CNAME	ns1.my-server.com.
    

  6. Berkas reverse-mapping
    Berkas ini berisi pemetaan alamat IP ke host/sub domain di bawah domain my-server.com.

    $TTL	86400
    @       IN      SOA     ns1.my-server.com. root.ns1.my-server.com.  (
                                          2002081219 ; Serial
                                          28800      ; Refresh
                                          14400      ; Retry
                                          3600000    ; Expire
                                          86400 )    ; Minimum
            IN      NS      ns1.my-server.com.
    67	IN	PTR	ns1.my-server.com.
    68	IN	PTR	mx.my-server.com.
    69	IN	PTR	www.my-server.com.
    

Entri pada berkas database dikenal dengan DNS resource record. Beberapa resource record yang ada pada berkas database domain, sebagai berikut:
  1. SOA
  2. NS record
  3. Record lain

Komentar

Komentar pada berkas konfigurasi akan diabaikan oleh name-server. Untuk memulai sebuah komentar bisa digunakan sebuah semikolon jika anda menggunakan BIND versi 4.
Pada BIND 8 dan versi selanjutnya, kita dapat menggunakan 3 gaya komentar, yaitu C, C++, atau shell.

/* Komentar Gaya C */
// Komentar Gaya C++
# Komentar Gaya Shell

Berkas konfigurasi DNS mudah untuk dibaca karena terdapat komentar yang memberikan petunjuk untuk pengeditan kembali di lain waktu.

Pada berkas database-cache name-server root, loopback/localhost, zone, reverse-mapping digunakan semikolon (;) untuk memberikan komentar di dalamnya.

SOA (Start Of Authority)

              2002081219 ; Serial
              28800      ; Refresh
              14400      ; Retry
              3600000    ; Expire
              86400 )    ; Minimum

NS record

NS record yaitu daftar name-server yang otoritatif untuk zone bersangkutan. Pada database domain my-server.com name-servernya adalah ns1.my-server.com.

MX record

Baris MX (Mail Exchanger) adalah record routing email untuk domain my-server.com dalam hal ini akan diarahkan ke mx.my-server.com. Host yang ditunjuk sebagai mail exchanger akan memproses atau meneruskan mail untuk domain my-server.com.

IN       MX      10  mx.my-server.com.

Baris di atas menunjukkan bahwa mx.my-server.com sebagai mail exchanger untuk mail domain my-server.com yang umumnya sebagai server mail.
Angka 10 adalah angka nilai preferensi (preference value) untuk menunjukkan tingkat prioritas mail exchanger yang digunakan untuk memproses atau meneruskan mail yang menuju domain my-server.com.

mx.png
Proses routing mail

Untuk lebih jelas kita gunakan mail exchanger lebih dari satu, misal:

IN       MX      10  mx1.my-server.com.
IN       MX      20  mx2.my-server.com.

Ketika ada mail untuk domain my-server.com maka mail tersebut akan dikirimkan terlebih dahulu ke mx1.my-server.com untuk diproses, jika gagal maka mail akan diarahkan ke mx2.my-server.com sesuai dengan nilai preferensi.

Record Lain

Record lain berupa data tentang host atau subdomain yang ada pada domain (my-server.com) dan pemetaan ke alamat IP-nya masing-masing.
A (address) yaitu pemetaan nama ke alamat IP.
PTR (pointer) yaitu pemetaan alamat IP ke nama.
CNAME yaitu canonical name fungsinya untuk alias, jadi suatu host dapat mempunyai nama lebih dari satu.
Pada berkas database tersebut terdapat domain dan subdomain: ns1.my-server.com, mx.my-server.com, www.my-server.com, my-server.com, squirtle.my-server.com.
My-server.com dan squirtle.my-server.com adalah alias dari ns1.my-server.com.

Restart named

Setelah semua berkas di atas sudah anda konfigurasi maka selanjutnya kita restart named dengan mengetikkan:

# /etc/init.d/named restart

atau

# /usr/sbin/rndc reload

Cek log sistem

Setelah itu lihatlah berkas catatan/log sistem anda apakah named berjalan dengan sukses, dengan mengetikkan:

# tail -f /var/log/messages
Aug 27 20:59:37 ns1 named[871]: shutting down
Aug 27 20:59:37 ns1 named[871]: stopping command channel on 127.0.0.1#953
Aug 27 20:59:37 ns1 named[871]: no longer listening on 127.0.0.1#53
Aug 27 20:59:37 ns1 named[868]: exiting
Aug 27 20:59:38 ns1 named: named shutdown succeeded
Aug 27 20:59:38 ns1 named[22965]: starting BIND 9.2.1 -u named
Aug 27 20:59:38 ns1 named[22965]: using 1 CPU
Aug 27 20:59:38 ns1 named[22968]: loading configuration from '/etc/named.conf'
Aug 27 20:59:38 ns1 named[22968]: no IPv6 interfaces found
Aug 27 20:59:38 ns1 named[22968]: listening on IPv4 interface lo, 127.0.0.1#53
Aug 27 20:59:38 ns1 named[22968]: listening on IPv4 interface eth0, 202.234.5.67#53
Aug 27 20:59:38 ns1 named[22968]: listening on IPv4 interface eth1, 192.168.3.1#53
Aug 27 20:59:38 ns1 named[22968]: command channel listening on 127.0.0.1#953
Aug 27 20:59:38 ns1 named[22968]: zone 0.0.127.in-addr.arpa/IN: loaded serial 2002081219
Aug 27 20:59:38 ns1 named[22968]: zone 5.234.202.in-addr.arpa/IN: loaded serial 2002081219
Aug 27 20:59:38 ns1 named[22968]: zone my-server.com/IN: loaded serial 2002081219
Aug 27 20:59:38 ns1 named: named startup succeeded
Aug 27 20:59:38 ns1 named[22968]: running

Itu berarti named anda sudah berjalan dan mendengarkan pada port 53.

Siapkah name-server kita?

Sudah siapkah name-server kita? mari kita lihat. Ketikkan:

# dig -x ns1.my-server.com
; <<>> DiG 9.2.1 <<>> -x ns1.my-server.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6716
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;ns1.my-server.com.      IN      A

;; ANSWER SECTION:
ns1.my-server.com. 86400 IN      A       202.234.5.67

;; AUTHORITY SECTION:
my-server.com.        86400   IN      NS      ns1.my-server.com.

;; ADDITIONAL SECTION:
ns1.my-server.com.    86400   IN      A       202.234.5.67

;; Query time: 46 msec
;; SERVER: 202.234.5.67#53(202.234.5.67)
;; WHEN: Mon Aug 27 20:58:36 2002
;; MSG SIZE  rcvd: 92

Name-server yang baru saja anda buat sudah siap menerima permintaan resolving nama domain yang akan menunjukkan host yang ada dalam jaringan anda.

Selesai sudah bahasan pembuatan server DNS BIND dengan domain. Artikel selanjutnya akan membahas mengenai keamanan server DNS (BIND).
Saran dan kritik dapat dialamatkan ke stwn[at]duniasemu[dot]org.

Referensi