Kamis, 19 Juni 2014

BIND dan DNS Server DNS Resolving-Caching


Pada artikel sebelumnya kita sudah mengenal mengenai konsep dan gambaran Domain Name System (DNS) dan Berkeley Internet Name Domain (BIND) sebagai salah satu implementasinya. Kali ini penulis akan membahas mengenai pembuatan server DNS resolving-caching tanpa domain.
Tujuan dari pembuatan server DNS resolving-caching tanpa domain adalah membuat sebuah server DNS yang dapat me-resolve semua permintaan nama domain dari jaringan lokal secara cepat. Ini bisa dilakukan karena proses resolving dilakukan pada server DNS lokal yang sebelumnya telah meng-caching nama domain hasil resolving akses oleh salah satu komputer dalam jaringan lokal tersebut. Resolving-caching name-server tersebut akan menyimpan hasil resolving dalam cache sehingga akses nama domain yang sama selanjutnya akan berjalan lebih cepat (mengurangi waktu tunggu) karena mengambil daricache server DNS tersebut. Server DNS resolving-caching sangat cocok untuk warung internet atau jaringan lokal yang membutuhkan resolving secara cepat pada koneksi yang tergolong lambat.
caching.png
Penulis akan membahas spesifik pada distro berbasis rpm yaitu Red Hat pada beberapa bagian dari artikel ini, walaupun konsepnya hampir sama untuk distro lain.
Pertama, kita harus mempunyai paket bindbind-utils dan caching-nameserver. Ketika anda menginstal Linux distro Red Hat secara default maka paket ini biasanya sudah terinstal. Ketikkan:

# rpm -qa |grep bind
bind-utils-9.2.1-0.7x
bind-9.2.1-0.7x

# rpm -qa |grep caching
caching-nameserver-7.2-1

Setelah memastikan paket-paket yang dibutuhkan sudah terinstal maka kita bisa mulai mengkonfigurasi.

Komentar

Komentar pada berkas konfigurasi akan diabaikan oleh program name-server (named). Komentar bisa menggunakan /* dan *///, atau #.
Contoh:

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

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

Konfigurasi

Masih ingatkah anda mengenai berkas-berkas yang dibutuhkan untuk menjalankan BIND (named)? Berikut ini berkas-berkas yang harus dikonfigurasi untuk menjalankan server DNS BIND resolving-caching:
  1. named.conf
    Berkas ini pada Red Hat dan Slackware biasanya diletakkan pada direktori etc (/etc/named.conf). Editlah berkas konfigurasi ini dengan editor kesayangan anda. Isinya kurang lebih sebagai berikut:
    // 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;
      */
    };
    
    //
    // a caching only nameserver config
    //
    zone "." IN {
     type hint;
     file "named.ca";
    };
    
    zone "0.0.127.in-addr.arpa" IN {
     type master;
     file "named.local";
    };
    
    key "key" {
     algorithm hmac-md5;
            secret "jggRewTTCgdTOUvWPd0cqPoRiQfKvoYYJnhpVqWcWpfrgSRedgKlpyjbmlsd";
    };
    

    Nama berkas named.ca dan named.local yang disebutkan di atas pada beberapa paket distribusi mungkin berbeda tapi sebenarnya hampir sama isinya.Baris directory memberitahukan pada named untuk mencari berkas-berkas yang ada dalam konfigurasi dalam direktori yang ditunjukkan, dalam hal ini /var/named.
    Jika anda dibelakang firewall, uncomment baris query-source address * port 53.
    Baris zone adalah menunjukkan zone yang otoritatif untuk nama domain bersangkutan dan diikuti dengan tipe name-server (hintmasterslave). Khusus untuk hint digunakan untuk zone root (.). Tipe master untuk name-server primary-master sedangkan tipe slave untuk name-server secondary-master/slave.
    Selanjutnya diikuti nama berkas database zone, letaknya berada di direktori /var/named/ sesuai dengan options pada baris directoryZone untuk root (.) berisi daftar name-server root.
    Baris zone kedua yaitu 0.0.127.in-addr.arpa adalah zone untuk reverse-mapping alamat loopback.
    Baris key merupakan baris yang menunjukkan bahwa named bisa dikontrol lewat program rndc melalui localhost dengan secret-key yang sama atau konfigurasi key yang sama untuk metode transaksi antar name-server (TSIG) agar dapat melakukan zone-transfer dan dynamic update.

  2. named.ca
    Berkas ini berisi daftar name-server root di Internet. Berkas ini dapat anda update jika diperlukan melalui internic.net dengan program/perintah dig.
    # dig @rs.internic.net > /var/named/named.ca.new
    

    Setelah anda mengambil berkas database name-server root tadi, silahkan ubah namanya menjadi named.ca sesuai dengan konfigurasi named.conf.
    Jika anda ingin mempertahankan nama berkas named.ca.new, maka rubah konfigurasi named.conf untuk zone root ke named.ca.new.Cara kedua anda bisa melakukan anonymous-ftp ke ftp.rs.internic.net dan download berkas named.root.
    Cara lain adalah dengan menggunakan e-mail. Kirim e-mail ke vice@nic.ddn.mil dengan subject 'netinfo root-servers.txt'.
    Berkas named.ca isinya kurang lebih sebagai berikut:

    ;       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 localhost untuk alamat loopback. Berkas tambahan untuk localhost atau komputer itu sendiri atau jaringan loopback. Jaringan loopback? yap, alamat spesial yang digunakanhost untuk lalu lintas ke komputer itu sendiri. Jaringan ini sebagian besar adalah 127.0.0.0 dan alamat untuk host yaitu 127.0.0.1 yang merupakan alamat loopback untuk komputer itu sendiri.
    Mungkin anda bertanya-tanya kenapa setiap komputer harus punya alamat loopback untuk diri mereka sendiri? jawabannya adalah karena tidak ada yang bertanggung jawab pada jaringan 127.0.0.0 termasuk alamat host 127.0.0.1 kecuali host/komputer itu sendiri.
    Jadi setiap komputer bertanggung jawab terhadap jaringan 127.0.0.0 dengan host 127.0.0.1 untuk komputer itu sendiri.
    $TTL 86400
    @       IN      SOA     ns1.domain-kita.com. root.ns1.domain-kita.com.  (
                                          2002081219 ; Serial
                                          28800      ; Refresh
                                          14400      ; Retry
                                          3600000    ; Expire
                                          86400 )    ; Minimum
                  IN      NS      ns1.domain-kita.com.
    1       IN      PTR     localhost.
    

  4. resolve.conf
    Berisi domain yang pertama yang akan dicari dan name-server yang akan dituju untuk permintaan resolving nama host/domain. Berkas ini kurang lebih berisi:
    search ns1.domain-kita.com domain-kita.com
    nameserver 127.0.0.1
    

    Baris search menunjukkan domain pertama yang akan dicari ketika melakukan pencarian nama host.
    Baris nameserver menunjukkan alamat name-server anda, 127.0.0.1 yaitu komputer itu sendiri.

Menjalankan Name Server

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

# /etc/init.d/named start

atau

# /usr/sbin/named

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

# tail -f /var/log/messages
Aug 26 08:19:15 ns1 named[204]: starting BIND 9.2.1
Aug 26 08:19:15 ns1 named[204]: using 1 CPU
Aug 26 08:19:15 ns1 named[204]: loading configuration from '/etc/named.conf'
Aug 26 08:19:16 ns1 named[204]: no IPv6 interfaces found
Aug 26 08:19:16 ns1 named[204]: listening on IPv4 interface lo, 127.0.0.1#53
Aug 26 08:19:16 ns1 named[204]: listening on IPv4 interface eth0, 192.168.3.1#53
Aug 26 08:19:16 ns1 named[204]: command channel listening on 127.0.0.1#953
Aug 26 08:19:16 ns1 named[204]: zone 0.0.127.in-addr.arpa/IN: loaded serial 2002081219
Aug 26 08:19:16 ns1 named[204]: zone localhost/IN: loaded serial 42
Aug 26 08:19:16 ns1 named[204]: running

Jika catatan/log sistem anda kurang lebih hampir sama dengan keluaran di atas, itu berarti named anda sudah berjalan dan mendengarkan pada port 53 (running).
Jika ada pesan kesalahan maka named akan memberikan nama berkas atau letak berkas yang salah. Betulkan kesalahan tersebut dan coba jalankan lagi.
Sudah siapkah name-server kita untuk menerima permintaan resolving domain? mari kita lihat.
Penulis menggunakan program dig (domain information groper) untuk melakukan pencarian terhadap name-server yang baru kita jalankan:

# dig -x 127.0.0.1
; <<>> DiG 9.2.1 <<>> -x 127.0.0.1
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28240
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;1.0.0.127.in-addr.arpa.  IN PTR

;; ANSWER SECTION:
1.0.0.127.in-addr.arpa. 86400 IN PTR localhost.

;; AUTHORITY SECTION:
0.0.127.in-addr.arpa. 86400 IN NS ns1.domain-kita.com.

;; ADDITIONAL SECTION:
localhost.  86400 IN A 127.0.0.1

;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Aug 27 07:50:49 2002
;; MSG SIZE  rcvd: 93


Name server yang baru saja anda buat sudah siap menerima permintaan resolving nama domain. Selamat!
Anda ingin melihat perbedaan antara permintaan nama domain yang belum di-caching dan yang sudah? mari.
Kita bisa menggunakan utilitas nslookup atau dig. Kali ini kita menggunakan utilitas dig.

# dig iwan.gotdns.org
; <<>> DiG 9.2.1 <<>> iwan.gotdns.org
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44527
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 0

;; QUESTION SECTION:
;iwan.gotdns.org.  IN A

;; ANSWER SECTION:
iwan.gotdns.org. 14400 IN A 202.137.7.53

;; AUTHORITY SECTION:
gotdns.org.  86400 IN NS ns3.dyndns.org.
gotdns.org.  86400 IN NS ns4.dyndns.org.
gotdns.org.  86400 IN NS ns5.dyndns.org.
gotdns.org.  86400 IN NS ns1.dyndns.org.
gotdns.org.  86400 IN NS ns2.dyndns.org.

;; Query time: 890 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Aug 27 16:28:39 2002
;; MSG SIZE  rcvd: 147

Coba jalankan program dig sekali lagi untuk domain iwan.gotdns.org.

# dig iwan.gotdns.org
; <<>> DiG 9.2.1 <<>> iwan.gotdns.org
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44750
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 1

;; QUESTION SECTION:
;iwan.gotdns.org.  IN A

;; ANSWER SECTION:
iwan.gotdns.org. 14389 IN A 202.137.7.53

;; AUTHORITY SECTION:
gotdns.org.  86389 IN NS ns3.dyndns.org.
gotdns.org.  86389 IN NS ns4.dyndns.org.
gotdns.org.  86389 IN NS ns5.dyndns.org.
gotdns.org.  86389 IN NS ns1.dyndns.org.
gotdns.org.  86389 IN NS ns2.dyndns.org.

;; ADDITIONAL SECTION:
ns1.dyndns.org.  86390 IN A 66.37.215.43

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Aug 27 16:28:50 2002
;; MSG SIZE  rcvd: 163


Anda sudah lihat bahwa permintaan resolving domain yang kedua lebih cepat dari yang pertama (Query time), itu berarti hasil resolving dari permintaan pertama disimpan ke cache server DNS.
Ketika ada permintaan lagi untuk domain yang sama maka sang server DNS akan mengambil dari cache, tidak mencari lagi ke name-server yang bertanggung jawab terhadap domain iwan.gotdns.org, jadi lebih cepat.
Untuk informasi saja, setiap sistem operasi mempunyai standar C API yang mempunyai call gethostbyname dan gethostbyaddrCall ini akan mencari dari sumber yang banyak. Pada sistem operasi Linux, callini akan melihat konfigurasi berkas nsswitch.conf pada direktori etc (/etc/nsswitch.conf). Isinya kurang lebih sebagai berikut:

...
host: files, dns
...
Pada konfigurasi nsswitch.conf di atas, resolver akan mencari nama domain pada berkas /etc/hosts kemudian baru server DNS yang ada pada berkas konfigurasi /etc/resolve.conf.
Sedang berkas /etc/hosts berisi pemetaan alamat IP ke nama host, digunakan pada saat komputer di-boot khususnya untuk jaringan kecil tanpa name-server/server DNS.

Forwarding

Untuk menghemat dan meringankan sumber daya server dan jaringan ada baiknya kita menggunakan forwarder biasanya server DNS ISP kita.
Setiap permintaan resolving domain dari jaringan lokal ke server DNS kita akan di-forward atau diteruskan terlebih dahulu ke server DNS yang ada pada options dalam /etc/named.conf. Misal server DNS ISP anda 202.155.5.1 dan 202.155.5.3 maka pada bagian options dalam berkas named.conf tambahkan baris:

     forward first;
     forwarders {
          202.155.5.1;
          202.155.5.3;
     };

Dengan forwarding permintaan resolving domain akan lebih cepat dan mengurangi beban pada server DNS dan jaringan lokal. Jadi server DNS kita tidak bekerja sendiri untuk menerima permintaan resolvingdomain.
Setelah menambahkan baris di atas restart named dan coba anda tes lagi dengan utilitas dig.
Semoga artikel ini dapat bermanfaat dalam pembuatan server DNS resolving-caching tanpa domain untuk jaringan lokal.
Artikel selanjutnya akan membahas pembuatan server DNS (BIND) dengan domain yang nantinya dapat diakses dari Internet.
Saran dan kritik dapat dialamatkan ke stwn[at]duniasemu[dot]org.

URL

Referensi

  • DNS HOWTO, Nicolai Langfeldt, Jamie Norrish and others
  • DNS and BIND, Third Edition, Cricket Liu & Paul Albitz
  • Halaman manual (man pages)
  • Server Linux, Ahmad Sofyan

Selasa, 20 Mei 2014

Clock Synchronization with NTP

The Network Time Protocol (NTP) is a protocol for synchronizing the clocks of computer systems over packet-switched, variable-latency data networks.
If you only wish to synchronize your clock when the machine boots up, you can use ntpdate. This may be appropriate for some desktop machines which are frequently rebooted, but for servers you should run ntpd.
1. Clock Synchronization using ntpdate
Using ntpdate at boot time is also a good idea for machines that run ntpd. The ntpd program changes the clock gradually, whereas ntpdate sets the clock, no matter how great the difference between a machine's current clock setting and the correct time.
To enable ntpdate at boot time, add the following lines to /etc/rc.conf:
ntpdate_enable="YES" # Run ntpdate to sync time on boot
ntpdate_flags="time.nist.gov" # servers: time.nist.gov, timp.mcti.ro, ticks.roedu.net
2. Clock Synchronization using ntpd
NTP is using /etc/ntp.conf file by default. Here is a configuration example:
# The following three servers will give you a random set of three NTP servers geographically close to you.
server 0.freebsd.pool.ntp.org iburst maxpoll 9
server 1.freebsd.pool.ntp.org iburst maxpoll 9
server 2.freebsd.pool.ntp.org iburst maxpoll 9
# If a server loses sync with all upstream servers, NTP clients
# no longer follow that server. The local clock can be configured
# to provide a time source when this happens, but it should usually
# be configured on just one server on a network. For more details see
# http://support.ntp.org/bin/view/Support/UndisciplinedLocalClock
# The use of Orphan Mode may be preferable.
server 127.127.1.0
fudge 127.127.1.0 stratum 10
# log file
logfile /var/log/ntpd
# Drift file. Put this in a directory which the daemon can write to.
# No symbolic links allowed.
driftfile /var/db/ntp.drift
By default, your NTP server will be accessible to all hosts on the Internet. The restrict option in /etc/ntp.conf allows you to control which machines can access your server.
If you want to deny all machines from accessing your NTP server, add the following line to /etc/ntp.conf:
restrict default ignore
Note: This will also prevent access from your server to any servers listed in your local configuration. If you need to synchronise your NTP server with an external NTP server you should allow the specific server.
If you only want to allow machines within your own network to synchronize their clocks with your server, but ensure they are not allowed to configure the server or used as peers to synchronize against, add
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
to /etc/ntp.conf.
Note: 192.168.1.0 is an IP address on your network and 255.255.255.0 is your netmask
Access Control Support Example:
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
# Permit all access over the loopback interface. This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1

restrict -6 ::1
To ensure the NTP server is started at boot time, add the line ntpd_enable="YES" to /etc/rc.conf.
To start the server without rebooting your machine, run the following command:
# /etc/rc.d/ntpd start
to update clock use command
$ntpdate ntp.server

Note:

Some Internet access providers block low-numbered ports, preventing NTP from functioning since replies never reach the machine.

Memperbaiki Open DNS Server - BIND

Terbitan Online Kecoak Elektronik
http://www.kecoak-elektronik.net

================================================================================================================


Dirangkum dari beberapa tulisan dan ditulis kembali dalam bahasa Indonesia agar mudah dicerna orang Indonesia
oleh : ceyen <ceyen@foo.kecoak.or.id> (makacih e-mailnya, Cyb3rh3b)
================================================================================================================

Perhatian :
-----------
1. Anda salah jika berpikir artikel ini untuk membobol server orang lewat kelemahan BIND.
2. Artikel ini ditujukan untuk para admin dalam mengelola DNS server (khususnya BIND).
3. Artikel ini ditulis dalam gaya tanya-jawab, yang menurut saya lebih ampuh dan tepat sasaran.
4. Baca dulu artikel ini baik-baik sebelum coba.

Latar Belakang :
----------------
1. Melihat banyaknya DNS server ISP/non-ISP di Indonesia yang menggunakan BIND.
2. Melihat sedikitnya admin DNS server di Indonesia yang "betul-betul" peduli dengan konfigurasi DNS server-nya.
3. Melihat lumayan banyak DNS server ISP di Indonesia yang "terbuka untuk umum" dalam merespon recursive query,
   istilah teknisnya Open DNS Server.

Mulai :
-------
Diasumsikan anda sedang berada di depan (atau sedang me-remote) DNS server anda, DNS server anda menggunakan BIND
versi 9. Saya sendiri sedang berada di depan DNS server saya menggunakan BIND 9.2.3 bawaan Linux Slackware 10.0.

T1. Apa itu Open DNS Server?
J1. Open DNS Server adalah DNS server yang menjawab query untuk domain yang tidak diotorisasikan kepadanya.

T2. Lantas, emang itu salah satu kerjanya DNS server ISP kan?!
J2. Tepat! tapi dapat menurunkan performa jaringan ISP jika query tersebut dapat dilakukan oleh umum dalam artian
    diluar jaringan ISP atau selain client/customer ISP tersebut. Misalnya, saya terhubung dari ISP A, namun saya
    menggunakan DNS server ISP B, nah DNS server si ISP B ini terbuka untuk umum kecuali memang ada perjanjian khusus
    dari kedua ISP ini.

    Sebagai contoh, saya terhubung lewat ISP lokal di kota saya, tapi saya bisa menggunakan DNS server ISP lain :
    (tanpa bermaksud untuk mendiskreditkan admin DNS server berikut):

    -------------
    ceyen@achilles:~$ nslookup -sil
    > server ns1.rad.net.id
    Default server: ns1.rad.net.id
    Address: 202.154.1.2#53
    > www.yahoo.com
    Server:         ns1.rad.net.id
    Address:        202.154.1.2#53

    Non-authoritative answer:
    www.yahoo.com   canonical name = www.yahoo.akadns.net.
    Name:   www.yahoo.akadns.net
    Address: 209.131.36.158
    -------------

    contoh lain :
    
    -------------
    > server ns1.pesat.net.id
    Default server: ns1.pesat.net.id
    Address: 202.95.128.180#53
    > www.yahoo.com
    Server:         ns1.pesat.net.id
    Address:        202.95.128.180#53

    Non-authoritative answer:
    www.yahoo.com   canonical name = www.yahoo.akadns.net.
    Name:   www.yahoo.akadns.net
    Address: 209.131.36.158
    -------------

    contoh lain lagi :

    -------------
    > server ns1.wasantara.net.id
    Default server: ns1.wasantara.net.id
    Address: 202.159.65.166#53
    > www.yahoo.com
    Server:         ns1.wasantara.net.id
    Address:        202.159.65.166#53

    Non-authoritative answer:
    www.yahoo.com   canonical name = www.yahoo.akadns.net.
    Name:   www.yahoo.akadns.net
    Address: 209.131.36.158
    -------------

    1 contoh lain lagi deh :

    -------------
    > server dns2.link.net.id
    Default server: dns2.link.net.id
    Address: 202.137.3.121#53
    > www.yahoo.com
    Server:         dns2.link.net.id
    Address:        202.137.3.121#53

    Non-authoritative answer:
    www.yahoo.com   canonical name = www.yahoo.akadns.net.
    Name:   www.yahoo.akadns.net
    Address: 209.131.36.158
    -------------

    Idealnya, DNS server menjawab seperti contoh berikut :

    -------------
    > server ns1.cbn.net.id
    Default server: ns1.cbn.net.id
    Address: 202.158.20.1#53
    > www.yahoo.com
    Server:         ns1.cbn.net.id
    Address:        202.158.20.1#53

    Non-authoritative answer:
    *** Can't find www.yahoo.com: No answer
    -------------

    Sampai disini jelas maksud saya?

T3. Oke, tapi seberapa besar pengaruhnya terhadap performa ISP?
J3. Coba bayangkan kalau 68% (Hi Roy!) pengguna Internet di Indonesia melakukan hal yang sama dengan yang saya
    lakukan diatas terhadap ISP tersebut?.
    Dan menurut cerita dari mulut ke telinga (kalo mulut ke mulut itu ciuman dong), teknik serangan DDoS
    (Distributed Denial of Service) saat ini dapat dilakukan dengan memanfaatkan para Open DNS Server ini sebagai
    penguat serangan. Seorang penyerang yang hanya menggunakan koneksi dial-up dapat menyengsarakan koneksi T1.
    Teknik ini lebih tepat dengan nama DRDoS (Distributed Reflector Denial of Service).

Sekarang saya yang nanya,
1. Maukah anda jika DNS server anda digunakan digunakan oleh orang lain selain client/customer anda?
2. Maukah anda jika DNS server anda dijadikan penguat serangan DDoS/DRDoS?

Jika "ya", oke sampe ketemu lagi.
Jika anda sudah tahu cara menangkalnya, beritahu admin yang lain.

Jika tidak, lanjut...

Baik, sekarang buka berkas named.conf pada DNS server anda, biasanya ada di /etc (/etc/named.conf).

Contoh named.conf berikut adalah contoh untuk DNS server yang difungsikan sebagai caching dan authoritative.
Hilangkan yang menurut anda tidak diperlukan.

----- named.conf ------
acl "xfer" {
    202.202.202.2/32; // secondary ns domain misalnya
};

acl "trusted" {
    // Disini anda tempatkan blok IP Address yang anda bolehkan melakukan recursive query
    // tambah sesuai kebutuhan

    202.202.202.0/24; // misalnya
    192.168.0.0/24; // LAN
    localhost; // Server ini
};

acl "bogon" {
    // Hapus atau comment LAN anda dari acl bogon ini

    0.0.0.0/8;
    1.0.0.0/8;
    2.0.0.0/8;
    5.0.0.0/8;
    7.0.0.0/8;
    10.0.0.0/8;
    23.0.0.0/8;
    27.0.0.0/8;
    31.0.0.0/8;
    36.0.0.0/8;
    37.0.0.0/8;
    39.0.0.0/8;
    42.0.0.0/8;
    49.0.0.0/8;
    50.0.0.0/8;
    77.0.0.0/8;
    78.0.0.0/8;
    79.0.0.0/8;
    92.0.0.0/8;
    93.0.0.0/8;
    94.0.0.0/8;
    95.0.0.0/8;
    96.0.0.0/8;
    97.0.0.0/8;
    98.0.0.0/8;
    99.0.0.0/8;
    100.0.0.0/8;
    101.0.0.0/8;
    102.0.0.0/8;
    103.0.0.0/8;
    104.0.0.0/8;
    105.0.0.0/8;
    106.0.0.0/8;
    107.0.0.0/8;
    108.0.0.0/8;
    109.0.0.0/8;
    110.0.0.0/8;
    111.0.0.0/8;
    112.0.0.0/8;
    113.0.0.0/8;
    114.0.0.0/8;
    115.0.0.0/8;
    116.0.0.0/8;
    117.0.0.0/8;
    118.0.0.0/8;
    119.0.0.0/8;
    120.0.0.0/8;
    169.254.0.0/16;
    172.16.0.0/12;
    173.0.0.0/8;
    174.0.0.0/8;
    175.0.0.0/8;
    176.0.0.0/8;
    177.0.0.0/8;
    178.0.0.0/8;
    179.0.0.0/8;
    180.0.0.0/8;
    181.0.0.0/8;
    182.0.0.0/8;
    183.0.0.0/8;
    184.0.0.0/8;
    185.0.0.0/8;
    186.0.0.0/8;
    187.0.0.0/8;
    192.0.2.0/24;
    // LAN saya 192.168.0.0/16;
    197.0.0.0/8;
    223.0.0.0/8;
    224.0.0.0/3;
};

logging {
    channel default_syslog {
        syslog local2;
        severity debug; 
    };

    channel audit_log {
        file "/var/named/named_audit.log";
        severity debug;
        print-time yes; 
    };

    category default { default_syslog; };
    category general { default_syslog; };
    category security { audit_log; default_syslog; };
    category config { default_syslog; };
    category resolver { audit_log; };
    category xfer-in { audit_log; };
    category xfer-out { audit_log; };
    category notify { audit_log; };
    category client { audit_log; };
    category network { audit_log; };
    category update { audit_log; };
    category queries { audit_log; };
    category lame-servers { audit_log; }; 
};

options {
    directory "/etc/named";
    pid-file "/var/named/named.pid";
    statistics-file "/var/named/named.stats";
    memstatistics-file "/var/named/named.memstats";
    dump-file "/var/adm/named.dump";
    zone-statistics yes;

    // mengantisipasi serangan DoS dengan menciptakan
    // bogus permintaan transfer zone
    // dapat menyebabkan terjadinya kelambatan transfer zone
    // antar authoritative server yang lain
    notify no;

    // efisiensi zone transfer
    transfer-format many-answers;

    // maksimum transfer zone dalam detik
    // tambahkan jika berkas zone anda besar
    // dan membutuhkan waktu transfer lebih dari 1 menit
    max-transfer-time-in 60;

    // tidak ada interface dynamic
    interface-interval 0;

    // hanya mengijinkan transfer zone dari IP address
    // yang ada pada acl xfer
    allow-transfer { xfer; };

    // query hanya dapat dilakukan oleh acl trusted
    // mencegah DNS server kita digunakan oleh umum
    allow-query { trusted; };

    // menolak semua yang berasal dari acl bogon
    blackhole { bogon; };
};

view "internal-in" in {

    // untuk recursion
    // dapat diakses oleh client pada acl trusted
    // tempatkan disini untuk domain internal atau uji coba

    match-clients { trusted; };
    recursion yes;
    additional-from-auth yes;
    additional-from-cache yes;

    zone "." in {
        type hint;
        file "cache.db";
    };

    zone "0.0.127.in-addr.arpa" in {
        type master;
        file "127.0.0.db";
        allow-query { any; };
        allow-transfer { none; };
    };

    zone "kecoak.lab" in {
        type master;
        file "zone/kecoak.lab.db";
    };
      
    zone "0.168.192.in-addr.arpa" in {
        type master;
        file "zone/192.168.0.db";
        allow-query { any; };
    };      
};

view "external-in" in {

    // jika DNS server difungsikan juga sebagai authoritative
    // tempatkan disini domain anda
    // dapat diakses oleh semua
    // namun tidak diijinkan recursion

    match-clients { any; };
    recursion no;
    additional-from-auth no;
    additional-from-cache no;

    zone "." in {
        type hint;
        file "cache.db";
    };

    zone "contoh1.com" in {
        type master;
        file "zone/contoh1.com.db";
        allow-query { any; };
    };

    zone "contoh2.com" in {          
        type master;
        file "zone/contoh2.com.db";            
        allow-query { any; };
    };

    zone "202.202.202.in-addr.arpa" in {
        type master;
        file "zone/202.202.202.db";
        allow-query { any; };
    }; 
};

view "external-chaos" chaos {

    // dapat dilihat oleh semua

    match-clients { any; };
    recursion no;

    zone "." {
        type hint;
        file "/dev/null";
    };

    zone "bind" {
        type master;
        file "bind.db";
  
        // ganti menjadi any jika anda bermaksud memperlihatkan versi BIND
        // misalnya ketika dilihat oleh dnsreport.com
        allow-query { trusted; };
        allow-transfer { none; };
    }; 
};
----- akhir named.conf -----

sekarang buat berkas bind.db pada /etc/named/ (sesuaikan dengan konfigurasi pada berkas named.conf diatas)
yang isinya :

----- bind.db -----
; thanks to Rob Thomas - robt_at_cymru.com
;
$TTL    1D
$ORIGIN bind.
@       1D      CHAOS   SOA     localhost. root.localhost. (
                2006070407      ; serial
                3H              ; refresh
                1H              ; retry
                1W              ; expiry
                1D )            ; minimum
        CHAOS NS        localhost.

version.bind.   CHAOS  TXT "Ini Bukan DNS server bapakmu!"
authors.bind.   CHAOS  TXT "seseorang yang lebih hebat dari saya!"
----- akhir bind.db -----


Setelah anda maksimalkan lagi dan disesuaikan dengan kebutuhan anda, restart BIND dan selesai.
O ya, jangan lupa backup dulu named.conf anda ;-)

catatan khusus:
Bagi pengguna Microsoft DNS (Windows 2000/2003) dan akan mengkonfigurasikan DNS server sebagai cache dan 
authoritative sekaligus, sepertinya anda harus meninggalkan Microsoft DNS dan melirik yang lain (mis: BIND).

Link dan bahan bacaan :
-----------------------
- DNSReport : http://www.dnsreport.com (many-many thanks to all staff at DNSReport!)
- Artikel Rob Thomas : http://www.cymru.com/Documents/secure-bind-template.html
- BIND9 Administrator Reference Manual : http://www.bind9.net/manual/bind/9.3.2/Bv9ARM.ch03.html
- Securing an Internet Name Server (CERT) : http://www.cert.org/archive/pdf/dns.pdf
- Anatomy of Recent DNS Reflector attacks : http://www.verisign.com/static/037903.pdf
- DRDoS @ grc.com : http://www.grc.com/dos/drdos.htm

Pertanyaan Newbie :
-------------------
What is DNS?

Dan Kaminsky (BlackOps @ LayerOne) :
* DNS: Domain Name System
* Mechanism for translating human-readable names into machine routable addresses
* "Like 411 for the Internet"
* As 411 usually but not always yields simple phone numbers, DNS usually but not always yields IP addresses
* A: Given name, find IP
* MX: Given name, find Mail
* PTR: Given IP, find name
* TXT: Given name, find "stuff" 
(yang ini terjemahkan sendiri)


CHANGELOG : (perubahan isi artikel ini harap ditambah disini, descending order please)
-----------
2006080501 : Sedikit perubahan penggunaan kalimat (ceyen@foo.kecoak.or.id)
2006080500 : Artikel ini mulai ditulis (ceyen@foo.kecoak.or.id)

BIND dan DNS "Konsep dan Gambaran DNS/BIND"

Oleh Iwan Setiawan
http://www.duniasemu.org/writings
2003/04/08 18:49:28
Ketika kita menggunakan komputer yang terhubung ke Internet dan ingin mengakses suatu domain secara tidak langsung kita telah menggunakan fasilitas DNS.
Apakah DNS itu? Apa hubungan DNS dan BIND?
Artikel ini akan memperkenalkan anda pada DNS dan salah satu implementasinya yaitu BIND.

Domain Name System (DNS)

Sebelum berkenalan dengan BIND, kita harus tahu mengenai DNS. DNS merupakan sistem berbentuk database terdistribusi yang akan memetakan/mengkonversikan nama host/mesin/domain ke alamat IP (Internet Protocol) dan sebaliknya dari alamat IP ke nama host yang disebut dengan reverse-mapping. DNS sangat berguna sekali dalam jaringan terutama Internet, sistem ini akan memetakan nama mesin misalpikachu.indolinux.com ke alamat IP misal 202.123.45.6 selain itu juga penggunaannya sangat luas misal, untuk routing e-mail, telnet, ftp, web, dan lain-lain.
dns-work.png  reverse.png
Bagaimana jika tidak ada DNS, kepala kita bisa pecah jika harus mengingat ratusan, ribuan, bahkan jutaan alamat IP di Internet. Kita manusia lebih mudah untuk mengingat nama daripada alamat IP dengan panjang 32 bit itu. Komputer menggunakan alamat IP untuk berkomunikasi dan berinteraksi. Bagaimana menjembataninya? Disitulah gunanya Domain Name System (DNS).
Dengan adanya DNS, informasi host menjadi mungkin untuk diakses oleh komputer di jaringan maupun Internet.
Implementasi DNS pada sistem operasi Linux yang sering digunakan adalah BIND meskipun ada juga salah satu implementasi yang cukup baru dan juga banyak dipakai yaitu djbdns.
Walaupun banyak sejarah mengenai isu keamanan dan vulnerability-nya, banyak server DNS di dunia masih menggunakan BIND. Alasan yang mungkin adalah kebanyakkan para administrator server DNS tersebut lebih familiar dengan BIND daripada server DNS lain. Seperti halnya dengan penggunaan sendmail yang notabene merupakan server-mail yang punya konfigurasi cryptic daripada server-mail lain tetapi masih tetap digunakan dengan alasan familiar dan kebiasaan administratornya. Pandangan mengenai hal ini saya kembalikan pada administrator masing-masing lembaga atau perusahaan.

Sejarah DNS

Sebelum adanya DNS, pertama kali tepatnya tahun 1970-an dalam jaringan ARPAnet (cikal bakal jaringan Internet yang ada sekarang) digunakan pemetaan dengan bentuk tabel host pada berkas HOSTS.TXT.
net_HOSTSTXT.png
Jaringan dengan HOSTS.TXT pada tiap host-nya
Berkas ini berisi nama host dan alamat IP serta pemetaannya dari seluruh mesin/komputer yang terhubung dalam jaringan. Ketika ada komputer lain yang terhubung ke jaringan ARPAnet maka masing-masing komputer dalam jaringan tersebut harus memperbaharui berkas HOSTS.TXT-nya. Pada saat itu cara meng-update berkas HOSTS.TXT dengan menggunakan ftp setiap satu atau dua minggu sekali. Masalah muncul ketika jaringan ARPAnet yang tadinya kecil tersebut kemudian menjadi Internet yang semakin hari semakin besar. Kesulitan meng-update isi berkas HOSTS.TXT karena jumlah nama mesin/komputer yang harus dituliskan ke berkas tersebut sudah terlalu besar dan tidak efisien.
Lalu muncul ide untuk membuat sistem database terdistribusi yang mempunyai data mengenai pemetaan nama host ke alamat IP dan sebaliknya. Dengan adanya pendistribusian database nama host dan alamat IP, maka tiap organisasi yang memiliki jaringan di dalam domain tertentu hanya bertanggung jawab terhadap database informasi pemetaan nama host dan alamat IP pada jaringannya saja yang biasa disebut zone. Administrasi domain tersebut dilakukan secara lokal tetapi informasi itu dapat diakses oleh semua komputer di Internet.
Karena sifat database yang terdistribusi ini, maka dibutuhkan suatu mekanisme pengaksesan informasi bagi host lain pada database yang terdistribusi untuk menemukan informasi host atau jaringan yang dipunyai oleh suatu organisasi.
Dan pada tahun 1984, Paul Mockapetris mengusulkan sistem database terdistribusi ini dengan Domain Name System (DNS) yang dideskripsikan dalam RFC 882 dan 883. Sistem ini digunakan sampai sekarang pada jaringan khususnya Internet.
dist_dns.png
Sistem DNS yang terdistribusi

Struktur dan Cara Kerja DNS

Struktur database DNS sangat mirip dengan sistem-berkas/filesystem UNIX yaitu berbentuk hierarki atau pohon. Tingkat teratas pada DNS adalah root yang disimbolkan dengan titik/dot (.) sedangkan pada sistem berkas UNIX, root disimbolkan dengan slash (/).
Setiap titik cabang mempunyai label yang mengidentifikasikannya relatif terhadap root (.). Tiap titik cabang merupakan root bagi sub-tree/tingkat bawahnya. Tiap sub-tree merupakan domain dan dibawah domain terdapat sub-tree lagi bernama subdomain. Setiap domain mempunyai nama yang unik dan menunjukkan posisinya pada pohon DNS, pengurutan/penyebutan nama domain secara penuh dimulai dari domain paling bawah menuju ke root (.). Masing-masing nama yang membentuk suatu domain dipisahkan dengan titik/dot (.) dan diakhiri dengan titik yang merupakan nama absolut relatif terhadap root (.). Contoh: raichu.cs.mit.edu.
"." merupakan root domain
edu merupakan Top Level Domain
mit merupakan Second Level Domain
cs merupakan Third Level Domain
raichu merupakan nama komputer/mesin yang bersangkutan
Sistem penulisan nama secara absolut dan lengkap ini disebut FQDN (Fully Qualified Domain Name).
dns.png  unixfs.png
Hierarki/pohon DNS dan sistem berkas UNIX
Tiap organisasi yang telah mendaftar ke Network Information Center(NIC) akan mendapatkan nama domain sesuai dengan organisasi tersebut. Nama domain tersebut bisa dibagi lagi menjadi subdomain sesuai dengan kebutuhan organisasi tersebut sesuai dengan otorisasi domain. Contoh: InterNIC mempunyai semua Top Level Domain termasuk com, perusahaan indolinux akan mendaftarkan nama domainindolinux.com (komersial), maka indolinux diberikan/didelegasikan oleh InterNIC untuk mengelola domain indolinux.com yang merupakan sub domain dari com. Indolinux dapat membagi lagi domainindolinux.com ke beberapa sub domain misal pikachu.indolinux.comraichu.indolinux.com.
Setiap server DNS pada suatu jaringan mempunyai informasi tentang host-host dalam jaringan tersebut yaitu alamat IP, routing email, server ftp, server web, dsb.
Selain itu tiap host dalam otorisasi suatu domain juga bisa mendapatkan alias dari nama host-nya dalam domain di atasnya. misal: iwan.indolinux.com bisa saja mempunyai alias (canonical name)pikachu.indolinux.com, dimana kedua domain tersebut mengacu ke mesin/host yang sama.
Dengan adanya sistem berbentuk hierarki/pohon ini maka tidak ada nama host yang sama pada domain/subdomain yang sama, karena masing-masing dari node/titik-cabang mempunyai nama unik dan tidak boleh ada yang menyamainya kecuali berbeda sub-tree/sub pohon. Tidak akan ada konflik antar organisasi karena masing-masing organisasi mempunyai domain yang berbeda-beda dan ini diatur oleh InterNIC untuk TLD.
Misal: indolinux menginginkan nama mesin/host di bawah domain indolinux.com dengan nama pikachu (pikachu.indolinux.com), sedang 5leaps Software juga menginginkan nama yang sama untuk salah satuhost-nya dengan domain 5leaps.org. Disini tidak akan terjadi konflik karena masing-masing mempunyai domain sendiri-sendiri. Indolinux mempunyai pikachu.indolinux.com dan 5leaps Software mempunyaipikachu.5leaps.org.
Seperti dijelaskan di atas, tidak boleh suatu nama/label sama yang berada dalam domain sama atau mempunyai parent atau sub-tree atas yang sama karena ini akan membuat konflik pada penamaan domain. Coba bayangkan jika orang tua yang sama mempunyai dua orang anak dengan nama yang sama. Bagaimana mereka memanggil satu dari dua anak tersebut? anda pasti tahu jawabannya. Ini sangat menyulitkan.
dnskonflik.jpg
Konflik domain
Kedalaman pohon dibatasi sampai level 127, akankah anda menembus batas ini untuk domain anda? sepertinya tidak.
Sebuah nama domain adalah nama sub-tree dari domain name-space.
Suatu host diwakili dengan nama domain yang full/penuh termasuk nama mesin/komputer tersebut, dan host mengacu pada suatu host/komputer secara individu. Sedangkan domain berisi semua host yang berada dibawahnya. Individual host yang berada pada suatu domain menunjukkan informasi mengenai alamat jaringan, perangkat keras, routing mail, dsb.
Untuk membedakan nama domain dan subdomain kita ambil contoh:
  • pikachu.indolinux.com adalah subdomain dari indolinux.com.
  • stwn.raichu.domain.net adalah subdomain dari raichu.domain.net.
  • dst.

Top Level Domain (TLD)

Top Level Domain adalah domain pada level teratas di bawah root (.).
Ada tiga pengelompokkan Top Level Domain:
  1. Domain Generik
    Terdiri atas 7 domain yaitu
    1. com
      Untuk organisasi komersial. contoh: ibm.comsun.com.
    2. net
      Untuk organisasi/perusahaan penyedia layanan jaringan/Internet. contoh: internic.netnsf.net.
    3. gov
      Untuk lembaga/organisasi pemerintahan. contoh: whitehouse.govnasa.gov.
    4. mil
      Untuk badan/organisasi militer. contoh: army.mil.
    5. org
      Untuk organisasi non-komersial. contoh: linux.org.
    6. edu
      Untuk lembaga pendidikan. contoh: mit.eduberkeley.edu.
    7. int
      Untuk organisasi Internasional. contoh: nato.int.
    Selain 7 domain di atas ada lagi 7 domain baru dari ICANN (www.icann.org) yaitu:
    1. aero
      Untuk industri atau perusahaan udara.
    2. biz
      Untuk perusahaan atau lembaga bisnis.
    3. coop
      Untuk perusahaan atau lembaga kooperatif
    4. info
      Untuk penggunaan umum.
    5. museum
      Untuk museum.
    6. name
      Untuk registrasi bagi penggunaan individual/personal.
    7. pro
      Untuk para profesional seperti: akuntan, dan lain-lain.
  2. Domain Negara
    Merupakan standar pembagian geografis berdasarkan kode negara. Contoh: id untuk Indonesia, au untuk Australia, uk untuk Inggris, dan lain-lain.
    Domain negara ini dapat dan umumnya diturunkan lagi ke level-level di bawahnya yang diatur oleh NIC dari masing-masing negara, untuk Indonesia yaitu IDNIC. Contoh level bawah dari id yaitu net.id,co.idweb.id.
  3. Domain Arpa
    Merupakan domain untuk jaringan ARPAnet. Tiap domain yang tergabung ke Internet berhak memiliki name-space .in-addr.arpa sesuai dengan alamat IP-nya.

Name-Server dan Zone

Name-server adalah program server yang memiliki informasi mengenai host di bawah domain tertentu. Name-server mempunyai bagian-bagian informasi mengenai domain name-space yang dikenal denganzoneZone ini akan dimuat dari berkas yang disimpannya atau dari server DNS lain. Sebagai contoh domain id bisa dibagi menjadi beberapa zone yaitu ac.idnet.id dan dari zone tersebut bisa dibagi lagi menjadi zone-zone yang lebih kecil misal undip.ac.id, dst. Disini yang bertanggung jawab ialah organisasi/lembaga yang memiliki domain tersebut.
bagizonecom.jpg
Pembagian zone
Ada dua tipe dari name-server yaitu:
  1. Primary Master
    Primary Master name-server bertanggung jawab terhadap suatu zone dengan memuat informasi dari berkas database pada dirinya sendiri.
  2. Secondary Master (Slave)
    Secondary Master name-server memuat informasi zone dari server lain yang otoritatif pada suatu zone yang disebut Master Server. Secondary Master akan melakukan zone-transfer dari Master Serveruntuk mendapatkan data/informasi pada suatu zone yang dikelolanya.
primary-secondary.png
Primary Master dan Secondary Master server DNS
Untuk dapat bekerja name-server membutuhkan resource-record untuk domain yang dikelola. Resource-record adalah data yang mengacu/menunjukkan pada informasi mengenai host pada jaringan atau domain tertentu.

Komponen DNS

DNS sebenarnya merupakan suatu sistem server-client, jadi ada suatu mekanisme dari client untuk meminta informasi dari server yang akan memberikan informasi yang diminta sang client. Seperti yang disebutkan di atas program pada server tersebut sering disebut dengan name-server. Pada client sering disebut dengan resolver.
DNS mempunyai beberapa komponen yaitu:
  1. Resolver
    Resolver yaitu suatu rutin pustaka yang akan membuat suatu permintaan/query dan mengirimkannya lewat jaringan ke sebuah name-server. Program tersebut berjalan pada host yang menginginkan informasi mengenai suatu host di Internet. Resolver juga menginterpretasikan respon dari name-server apakah informasi yang diminta merupakan record ataupun kesalahan.
  2. Resolution
    Resolution yaitu proses pencarian name-server yang mempunyai tanggung jawab terhadap suatu domain yang akan diminta. Setelah name-server yang dicari ditemukan maka server akan memberikan informasi name-server yang bersangkutan kepada pemintanya.
  3. Caching
    Caching yaitu suatu rutin yang akan menyimpan hasil pencarian domain dalam database dari name-server yang pernah diminta. Time To Live (TTL) merupakan batas waktu dimana server DNS dapat menyimpan/caching infomasi yang pernah dicari.
resolver.png
Resolvercaching, dan resolution

BIND (Berkeley Internet Name Domain)

BIND merupakan salah satu implementasi dari DNS yang paling banyak digunakan pada server di Internet. Implementasi DNS pertama adalah JEEVES buatan Paul Mockapetris. BIND dibuat untuk sistem operasi BSD UNIX 4.3 oleh Kevin Dunlap, tapi kemudian banyak di-porting ke banyak turunan UNIX termasuk Linux.
BIND sampai sekarang masih dikoordinasi oleh Internet Software Consortium.
Program utama dari BIND adalah bernama named yaitu sebuah daemon yang bila dijalankan akan menunggu koneksi pada port 53 (default). Koneksi pada port 53 ini adalah koneksi permintaan informasi pemetaan dari nama domain/mesin ke alamat IP dan sebaliknya.
Jika sebuah server DNS mempunyai otorisasi terhadap suatu domain maka si server DNS tersebut akan memberikan informasi mengenai nama-nama mesin/domain yang berada di bawah domain yang dipegangnya.
Misal: server DNS penulis mempunyai otorisasi terhadap domain indolinux.com, maka ketika ada sebuah komputer dari Internet ingin mengakses pikachu.indolinux.com, maka sang komputer itu akan menghubungi server DNS penulis untuk mengetahui informasi alamat IP dari pikachu.indolinux.com. Sang server DNS akan menjawab permintaan/query dari komputer peminta tersebut dengan alamat IP yang sesuai kemudian komputer tersebut dapat mengakses pikachu.indolinux.com melalui alamat IP yang diberikan oleh name-server tersebut.
aksesip.png
Pencarian host pikachu.indolinux.com
Versi terakhir pada saat artikel ini dibuat adalah BIND versi 9.2.1. Sebagian besar distribusi Linux menyertakan paket BIND. Jadi anda tinggal konfigurasi dan aktifkan saja jika sudah terinstal.
BIND secara umum terdiri dari beberapa berkas yang mendukung yaitu:
  1. /etc/resolv.conf
    Berkas konfigurasi berisi domain atau alamat IP name-server yang pertama dicari oleh resolver ketika sebuah domain/nama mesin diminta untuk dipetakan ke alamat IP.
  2. /etc/nsswitch.conf
    Berkas konfigurasi sistem untuk melakukan mekanisme switch sistem database dan name-serviceSwitch dapat melalui berkas, name-server, atau NIS server.
  3. /etc/named.conf
    Berkas konfigurasi dari BIND yang utama, berisi informasi mengenai bagaimana klien DNS mengakses port 53, letak dan jenis berkas database yang diperlukan. Umumnya berisi letak berkas konfigurasiname-server root, domain, localhost/loopback, dan reverse-mapping.
  4. /var/named/named.ca
    Berkas database name-server root yang bertanggung jawab terhadap Top Level Domain di Internet. Digunakan untuk mencari domain di luar domain lokal. Nama berkas ini bisa anda definisikan sendiri tetapi tetap harus mengacu ke named.conf sebagai berkas konfigurasi utama dari BIND.
  5. /var/named/named.local
    Berkas database name-server untuk alamat loopback/host lokal/alamat diri sendiri. Nama berkas ini bisa anda definisikan sendiri tetapi tetap harus mengacu ke named.conf sebagai berkas konfigurasi utama dari BIND.
  6. /var/named/db.domain-kita.com
    Berkas database name-server untuk domain domain-kita.com yang berisi resource record, informasi nama host dan alamat IP yang berada di bawah domain domain-kita.com. Berkas ini bisa lebih dari satu tergantung jumlah domain yang kita kelola. Nama berkas ini bisa anda definisikan sendiri tetapi tetap harus mengacu ke named.conf sebagai berkas konfigurasi utama dari BIND.
  7. /etc/rndc.conf
    Berkas konfigurasi program rndc yaitu suatu program untuk administrasi dan kontrol operasi name-server BIND.
Semoga artikel ini dapat memberikan konsep dan gambaran dari Domain Name System (DNS) dan Berkeley Internet Name Domain (BIND).
Artikel selanjutnya akan membahas mengenai pembuatan server DNS resolving-caching tanpa domain.
Saran dan kritik bisa dialamatkan ke stwn[at]duniasemu[dot]org.

URL

Referensi

  • DNS HOWTO, Nicolai Langfeldt, Jamie Norrish and others
  • DNS and BIND, Third Edition, Cricket Liu & Paul Albitz
  • Halaman manual (man pages)
  • Server Linux, Ahmad Sofyan
  • TCP/IP, Onno W. Purbo, Adnan Basalamah, Ismail Fahmi, dan Achmad Husni Thamrin

Rabu, 14 Mei 2014

Install Webmin di FreeBSD

Webmin adalah antarmuka berbasis web untuk sistem administrasiuntuk Unix termasuk FreeBSD. Dengan menggunakan browser yang mendukung tabel dan forms, kita bisa mengatur user accounts, Apache, DNS, file sharing, firewall dan sebagainya.Webmin terdiri dari web server sederhana, dan sejumlah programCGI yang langsung memperbarui file sistem seperti /etc/inetd.confdan /etc/master.passwd.
Instal webmin

Untuk menginstal webmin, perbarui port anda, masukkan:
# Portsnap fetch update
Instal webmin dari /usr/ports/sysutils/webmin, masukkan:
# cd /usr/ports/sysutils/webmin
# make install clean
Konfigurasi webmin

Sekarang, webmin sudah terinstal. Jika ingin menjalankan webminpada startup, masukkan:
# ee /etc/rc.conf
Tambahkan baris berikut:
webmin_enable = "YES"
Simpan dan tutup file.  

Anda perlu menjalankan /usr/local/lib/webmin /setup.sh 
untuk melakukan setup pada konfigurasi selanjutnya, masukkan:
# /usr/local/lib/webmin/setup.sh


Akses webmin memakai browser di :

https://domainanda.com:10000

Minggu, 13 April 2014

Membuat Web Server

Install APACHE22–

Install dari Ports

cd /usr/ports/www/apache24
make install clean

Atau Lewat Pakage

pkg_add apache24

Enable MySQL pada option

Selanjutnya pakai saja opsi default, jadi ok,ok saja


Tambahkan pada rc.conf

echo 'apache24_enable="YES"' >> /etc/rc.conf
Jalankan apache

/usr/local/etc/rc.d/apache24 start

atau bisa menggunakan command

serice apache24 start
Output:

Performing sanity check on apache24 configuration:
Syntax OK
Stopping apache22.
Waiting for PIDS: 61539.
Performing sanity check on apache24 configuration:
Syntax OK
Starting apache24.




–Install PHP55—

Dari ports

cd /usr/ports/lang/php55
make install clean

Pastikan untuk meng enable apache module pada install Step (Blue screen)
Pastikan untuk meng enable php55-extention
Pada instalasi ini pastikan untuk meng-enable session dan mysql suppot.

Setelah itu aktifkan the konfigurasi php

cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini

–MYSQL51-server–

1- Install Mysql Server 5.1 dari ports

cd /usr/ports/databases/mysql51-server

make install clean

2- Enable dan jalankan mysql service

echo ‘mysql_enable=”YES”‘ >> /etc/rc.conf

3- Start mysql server

/usr/local/etc/rc.d/mysql-server start

4- Buat mysql admin password

mysqladmin -u root password “newpassword”

Install WordPress

Untuk wordpress, tinggal install melalui port, kemudian semua aplikasi yang dibutuhkan akan otomatis di install juga.

cd /usr/ports/www/wordpress

make install clean
Tunggu sampai selesai.

setting apache24
buka
ee /usr/local/etc/apache24/httpd.conf

cari scrpt dibawah bila tidak ada tambahkan script dibawah atau ganti sesuai dibawah ingat cari dulu kemudian tempat sesuai posisi script sebelumnya

LoadModule php5_module        libexec/apache24/libphp5.so #untuk membaca php


ServerAdmin wahyuXXXX@arc.itb.ac.id #email admin

ServerName XXXXX.ac.id:80 #domain server, bila blm ada bisa pake IP


DirectoryIndex index.php #untuk membaca file php sebelumnya index.html maka akan membaca file html


<IfModule mime_module>
AddType application/x-httpd-php .php #tambahan untuk me-run file php

DocumentRoot "/usr/local/www/apache24/data" #tempat dokumen root
<Directory "/usr/local/www/apache24/data">

file wordpress ada di /usr/local/www/wordpress maka script di atas bisa di ganti menjadi

DocumentRoot "/usr/local/www/wordpress" # tempat menyimpan file wordpress
<Directory "/usr/local/www/wordpress">

keluar dari ee

restart apache

service apache24 restart