29 November 2004

Masalah di Server DNS IDNIC

Posted under: at 05:51

Saya melihat ada beberapa masalah di server DNS yang digunakan oleh IDNIC. Masalah tersebut adalah bahwa beberapa server DNS tidak authoritative. Tidak authoritative artinya tidak mengaku sebagai server DNS dari domain IDNIC. Berikut adalah hasil analisis saya terhadap DNS server IDNIC.

Pertama-tama saya mulai melakukan query ke root servers. Seperti biasa, baris yang diawali oleh $ adalah perintah yang saya ketik pada shell UNIX.

<strong>$ dig ns id @a.root-servers.net</strong>
;; Got answer:
;; -HEADER- opcode: QUERY, status: NOERROR, id: 5270
;; flags: qr rd; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 4

;; ANSWER SECTION:
id.                     172800  IN      NS      NS2.id.
id.                     172800  IN      NS      SEC3.APNIC.NET.
id.                     172800  IN      NS      NS1.id.

;; ADDITIONAL SECTION:
NS2.id.                 172800  IN      A       202.153.134.52
SEC3.APNIC.NET.         172800  IN      AAAA    2001:dc0:1:0:4777::140
SEC3.APNIC.NET.         172800  IN      A       202.12.28.140
NS1.id.                 172800  IN      A       202.155.30.227

Hasil tersebut menunjukkan bahwa domain .id ditangani oleh ns2.id, sec3.apnic.net dan ns1.id. Kemudian selanjutnya saya melakukan query ke ketiga DNS server tersebut:

<strong>$ dig ns id @ns2.id</strong>
;; Got answer:
;; -HEADER- opcode: QUERY, status: NOERROR, id: 52036
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 0, ADDITIONAL: 8

;; ANSWER SECTION:
id.                     13300   IN      NS      ns.uu.net.
id.                     13300   IN      NS      ns1.id.
id.                     13300   IN      NS      ns1.rad.net.id.
id.                     13300   IN      NS      ns1.indo.net.id.
id.                     13300   IN      NS      ns2.id.
id.                     13300   IN      NS      sec3.apnic.net.
id.                     13300   IN      NS      auth02.ns.uu.net.
id.                     13300   IN      NS      ns.ac.id.
id.                     13300   IN      NS      ns.eu.net.

;; ADDITIONAL SECTION:
ns.ac.id.               13300   IN      A       202.159.124.34
ns.ac.id.               13300   IN      A       202.153.134.11
ns.eu.net.              155512  IN      A       192.16.202.11
ns.uu.net.              169953  IN      A       137.39.1.3
ns1.id.                 13300   IN      A       202.155.30.227
ns1.rad.net.id.         150     IN      A       202.154.1.2
ns1.indo.net.id.        3859    IN      A       202.159.32.2
ns2.id.                 13300   IN      A       202.153.134.52

<strong>$ dig ns id @ns1.id</strong>
;; Got answer:
;; -HEADER- opcode: QUERY, status: NOERROR, id: 64905
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 0, ADDITIONAL: 9

;; ANSWER SECTION:
id.                     13300   IN      NS      ns1.id.
id.                     13300   IN      NS      ns1.rad.net.id.
id.                     13300   IN      NS      ns1.indo.net.id.
id.                     13300   IN      NS      ns2.id.
id.                     13300   IN      NS      sec3.apnic.net.
id.                     13300   IN      NS      auth02.ns.uu.net.
id.                     13300   IN      NS      ns.ac.id.
id.                     13300   IN      NS      ns.eu.net.
id.                     13300   IN      NS      ns.uu.net.

;; ADDITIONAL SECTION:
ns.ac.id.               13300   IN      A       202.153.134.11
ns.ac.id.               13300   IN      A       202.159.124.34
ns.uu.net.              171428  IN      A       137.39.1.3
ns1.id.                 13300   IN      A       202.155.30.227
ns1.rad.net.id.         3600    IN      A       202.154.1.2
ns1.indo.net.id.        7200    IN      A       202.159.32.2
ns2.id.                 13300   IN      A       202.153.134.52
sec3.apnic.net.         672     IN      A       202.12.28.140
sec3.apnic.net.         3487    IN      AAAA    2001:dc0:1:0:4777::140

<strong>$ dig ns id @sec3.apnic.net</strong>
;; Got answer:
;; -HEADER- opcode: QUERY, status: NOERROR, id: 15113
;; flags: qr aa rd; QUERY: 1, ANSWER: 9, AUTHORITY: 0, ADDITIONAL: 0

;; ANSWER SECTION:
id.                     13300   IN      NS      ns.uu.net.
id.                     13300   IN      NS      ns1.id.
id.                     13300   IN      NS      ns1.rad.net.id.
id.                     13300   IN      NS      ns1.indo.net.id.
id.                     13300   IN      NS      ns2.id.
id.                     13300   IN      NS      sec3.apnic.net.
id.                     13300   IN      NS      auth02.ns.uu.net.
id.                     13300   IN      NS      ns.ac.id.
id.                     13300   IN      NS      ns.eu.net.

Tampak bahwa query ke ketiga nameservers tersebut menghasilkan beberapa tambahan nameservers, yaitu ns.uu.net, ns1.rad.net.id, ns1.indo.net.id, auth02.ns.uu.net, ns.ac.id, dan ns.eu.net. Mari kita cek status seluruh nameservers utama beserta nameservers tambahan tersebut.

<strong>$ dig soa id @ns.uu.net</strong>
;; Got answer:
;; -HEADER- opcode: QUERY, status: NOERROR, id: 22469
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 13

;; AUTHORITY SECTION:
.                       446923  IN      NS      F.ROOT-SERVERS.NET.
.                       446923  IN      NS      B.ROOT-SERVERS.NET.
.                       446923  IN      NS      J.ROOT-SERVERS.NET.
.                       446923  IN      NS      K.ROOT-SERVERS.NET.
.                       446923  IN      NS      L.ROOT-SERVERS.NET.
.                       446923  IN      NS      M.ROOT-SERVERS.NET.
.                       446923  IN      NS      I.ROOT-SERVERS.NET.
.                       446923  IN      NS      E.ROOT-SERVERS.NET.
.                       446923  IN      NS      D.ROOT-SERVERS.NET.
.                       446923  IN      NS      A.ROOT-SERVERS.NET.
.                       446923  IN      NS      H.ROOT-SERVERS.NET.
.                       446923  IN      NS      C.ROOT-SERVERS.NET.
.                       446923  IN      NS      G.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
F.ROOT-SERVERS.NET.     533323  IN      A       192.5.5.241
B.ROOT-SERVERS.NET.     533323  IN      A       192.228.79.201
J.ROOT-SERVERS.NET.     533323  IN      A       192.58.128.30
K.ROOT-SERVERS.NET.     533323  IN      A       193.0.14.129
L.ROOT-SERVERS.NET.     533323  IN      A       198.32.64.12
M.ROOT-SERVERS.NET.     533323  IN      A       202.12.27.33
I.ROOT-SERVERS.NET.     533323  IN      A       192.36.148.17
E.ROOT-SERVERS.NET.     533323  IN      A       192.203.230.10
D.ROOT-SERVERS.NET.     533323  IN      A       128.8.10.90
A.ROOT-SERVERS.NET.     533323  IN      A       198.41.0.4
H.ROOT-SERVERS.NET.     533323  IN      A       128.63.2.53
C.ROOT-SERVERS.NET.     533323  IN      A       192.33.4.12
G.ROOT-SERVERS.NET.     533323  IN      A       192.112.36.4

<strong>$ dig soa id @ns1.id</strong>
;; Got answer:
;; -HEADER- opcode: QUERY, status: NOERROR, id: 37613
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 9, ADDITIONAL: 9

;; ANSWER SECTION:
id.                     13300   IN      SOA     ns1.id. hostmaster.idnic.net.id. 
                         2004071300 28800 10800 604800 172800

;; AUTHORITY SECTION:
id.                     13300   IN      NS      ns2.id.
id.                     13300   IN      NS      sec3.apnic.net.
id.                     13300   IN      NS      auth02.ns.uu.net.
id.                     13300   IN      NS      ns.ac.id.
id.                     13300   IN      NS      ns.eu.net.
id.                     13300   IN      NS      ns.uu.net.
id.                     13300   IN      NS      ns1.id.
id.                     13300   IN      NS      ns1.rad.net.id.
id.                     13300   IN      NS      ns1.indo.net.id.

;; ADDITIONAL SECTION:
ns.ac.id.               13300   IN      A       202.159.124.34
ns.ac.id.               13300   IN      A       202.153.134.11
ns.uu.net.              171040  IN      A       137.39.1.3
ns1.id.                 13300   IN      A       202.155.30.227
ns1.rad.net.id.         3600    IN      A       202.154.1.2
ns1.indo.net.id.        7200    IN      A       202.159.32.2
ns2.id.                 13300   IN      A       202.153.134.52
sec3.apnic.net.         284     IN      A       202.12.28.140
sec3.apnic.net.         3099    IN      AAAA    2001:dc0:1:0:4777::140

<strong>$ dig soa id @ns1.rad.net.id</strong>
;; Got answer:
;; -HEADER- opcode: QUERY, status: NOERROR, id: 12023
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 9, ADDITIONAL: 11

;; ANSWER SECTION:
id.                     13300   IN      SOA     ns1.id. hostmaster.idnic.net.id.
                         2004071300 28800 10800 604800 172800

;; AUTHORITY SECTION:
id.                     13300   IN      NS      ns.ac.id.
id.                     13300   IN      NS      ns.eu.net.
id.                     13300   IN      NS      ns.uu.net.
id.                     13300   IN      NS      ns1.id.
id.                     13300   IN      NS      ns1.rad.net.id.
id.                     13300   IN      NS      ns1.indo.net.id.
id.                     13300   IN      NS      ns2.id.
id.                     13300   IN      NS      sec3.apnic.net.
id.                     13300   IN      NS      auth02.ns.uu.net.

;; ADDITIONAL SECTION:
ns.ac.id.               13300   IN      A       202.153.134.11
ns.ac.id.               13300   IN      A       202.159.124.34
ns.eu.net.              49854   IN      A       192.16.202.11
ns.uu.net.              2851    IN      A       137.39.1.3
ns1.id.                 13300   IN      A       202.155.30.227
ns1.rad.net.id.         3600    IN      A       202.154.1.2
ns1.indo.net.id.        13300   IN      A       202.159.32.2
ns2.id.                 13300   IN      A       202.153.134.52
sec3.apnic.net.         110236  IN      AAAA    2001:dc0:1:0:4777::140
sec3.apnic.net.         2875    IN      A       202.12.28.140
auth02.ns.uu.net.       2012    IN      A       198.6.1.82

<strong>$ dig soa id @ns1.indo.net.id</strong>
;; Got answer:
;; -HEADER- opcode: QUERY, status: NOERROR, id: 49106
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 9, ADDITIONAL: 11

;; ANSWER SECTION:
id.                     13300   IN      SOA     ns1.id. hostmaster.idnic.net.id.
                         2004071300 28800 10800 604800 172800

;; AUTHORITY SECTION:
id.                     13300   IN      NS      ns1.indo.net.id.
id.                     13300   IN      NS      ns2.id.
id.                     13300   IN      NS      sec3.apnic.net.
id.                     13300   IN      NS      auth02.ns.uu.net.
id.                     13300   IN      NS      ns.ac.id.
id.                     13300   IN      NS      ns.eu.net.
id.                     13300   IN      NS      ns.uu.net.
id.                     13300   IN      NS      ns1.id.
id.                     13300   IN      NS      ns1.rad.net.id.

;; ADDITIONAL SECTION:
ns.ac.id.               7471    IN      A       202.159.124.34
ns.ac.id.               7471    IN      A       202.153.134.11
ns.eu.net.              150626  IN      A       192.16.202.11
ns.uu.net.              20271   IN      A       137.39.1.3
ns1.id.                 13300   IN      A       202.155.30.227
ns1.rad.net.id.         726     IN      A       202.154.1.2
ns1.indo.net.id.        7200    IN      A       202.159.32.2
ns2.id.                 13300   IN      A       202.153.134.52
sec3.apnic.net.         168803  IN      A       202.12.28.140
sec3.apnic.net.         27      IN      AAAA    2001:dc0:1:0:4777::140
auth02.ns.uu.net.       154055  IN      A       198.6.1.82

<strong>$ dig soa id @ns2.id</strong>
;; Got answer:
;; -HEADER- opcode: QUERY, status: NOERROR, id: 35912
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 9, ADDITIONAL: 8

;; ANSWER SECTION:
id.                     13300   IN      SOA     ns1.id. hostmaster.idnic.net.id.
                         2004071300 28800 10800 604800 172800

;; AUTHORITY SECTION:
id.                     13300   IN      NS      ns1.indo.net.id.
id.                     13300   IN      NS      ns2.id.
id.                     13300   IN      NS      sec3.apnic.net.
id.                     13300   IN      NS      auth02.ns.uu.net.
id.                     13300   IN      NS      ns.ac.id.
id.                     13300   IN      NS      ns.eu.net.
id.                     13300   IN      NS      ns.uu.net.
id.                     13300   IN      NS      ns1.id.
id.                     13300   IN      NS      ns1.rad.net.id.

;; ADDITIONAL SECTION:
ns.ac.id.               13300   IN      A       202.159.124.34
ns.ac.id.               13300   IN      A       202.153.134.11
ns.eu.net.              154964  IN      A       192.16.202.11
ns.uu.net.              172441  IN      A       137.39.1.3
ns1.id.                 13300   IN      A       202.155.30.227
ns1.rad.net.id.         3347    IN      A       202.154.1.2
ns1.indo.net.id.        3311    IN      A       202.159.32.2
ns2.id.                 13300   IN      A       202.153.134.52

<strong>$ dig soa id @sec3.apnic.net</strong>
;; Got answer:
;; -HEADER- opcode: QUERY, status: NOERROR, id: 34802
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; ANSWER SECTION:
id.                     13300   IN      SOA     ns1.id. hostmaster.idnic.net.id.
                         2004071300 28800 10800 604800 172800

<strong>$ dig soa id @auth02.ns.uu.net</strong>
;; Got answer:
;; -HEADER- opcode: QUERY, status: NOERROR, id: 43615
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 13

;; AUTHORITY SECTION:
.                       446752  IN      NS      E.ROOT-SERVERS.NET.
.                       446752  IN      NS      F.ROOT-SERVERS.NET.
.                       446752  IN      NS      G.ROOT-SERVERS.NET.
.                       446752  IN      NS      H.ROOT-SERVERS.NET.
.                       446752  IN      NS      I.ROOT-SERVERS.NET.
.                       446752  IN      NS      J.ROOT-SERVERS.NET.
.                       446752  IN      NS      K.ROOT-SERVERS.NET.
.                       446752  IN      NS      L.ROOT-SERVERS.NET.
.                       446752  IN      NS      M.ROOT-SERVERS.NET.
.                       446752  IN      NS      A.ROOT-SERVERS.NET.
.                       446752  IN      NS      B.ROOT-SERVERS.NET.
.                       446752  IN      NS      C.ROOT-SERVERS.NET.
.                       446752  IN      NS      D.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
E.ROOT-SERVERS.NET.     533152  IN      A       192.203.230.10
F.ROOT-SERVERS.NET.     533152  IN      A       192.5.5.241
G.ROOT-SERVERS.NET.     533152  IN      A       192.112.36.4
H.ROOT-SERVERS.NET.     533152  IN      A       128.63.2.53
I.ROOT-SERVERS.NET.     533152  IN      A       192.36.148.17
J.ROOT-SERVERS.NET.     533152  IN      A       192.58.128.30
K.ROOT-SERVERS.NET.     533152  IN      A       193.0.14.129
L.ROOT-SERVERS.NET.     533152  IN      A       198.32.64.12
M.ROOT-SERVERS.NET.     533152  IN      A       202.12.27.33
A.ROOT-SERVERS.NET.     533152  IN      A       198.41.0.4
B.ROOT-SERVERS.NET.     533152  IN      A       192.228.79.201
C.ROOT-SERVERS.NET.     533152  IN      A       192.33.4.12
D.ROOT-SERVERS.NET.     533152  IN      A       128.8.10.90

<strong>$ dig soa id @ns.ac.id</strong>
;; Got answer:
;; -HEADER- opcode: QUERY, status: NOERROR, id: 38856
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 9, ADDITIONAL: 8

;; ANSWER SECTION:
id.                     13300   IN      SOA     ns1.id. hostmaster.idnic.net.id.
                         2004071300 28800 10800 604800 172800

;; AUTHORITY SECTION:
id.                     13300   IN      NS      ns2.id.
id.                     13300   IN      NS      sec3.apnic.net.
id.                     13300   IN      NS      auth02.ns.uu.net.
id.                     13300   IN      NS      ns.ac.id.
id.                     13300   IN      NS      ns.eu.net.
id.                     13300   IN      NS      ns.uu.net.
id.                     13300   IN      NS      ns1.id.
id.                     13300   IN      NS      ns1.rad.net.id.
id.                     13300   IN      NS      ns1.indo.net.id.

;; ADDITIONAL SECTION:
ns.ac.id.               13300   IN      A       202.153.134.11
ns.ac.id.               13300   IN      A       202.159.124.34
ns.eu.net.              154913  IN      A       192.16.202.11
ns.uu.net.              172390  IN      A       137.39.1.3
ns1.id.                 13300   IN      A       202.155.30.227
ns1.rad.net.id.         3296    IN      A       202.154.1.2
ns1.indo.net.id.        3260    IN      A       202.159.32.2
ns2.id.                 13300   IN      A       202.153.134.52

<strong>$ dig soa id @ns.eu.net</strong>
;; connection timed out; no servers could be reached

Disini terlihat bahwa beberapa nameserver tidak menjawab sebagaimana mestinya:

  • ns.uu.net tidak authoritative untuk domain .id
  • auth02.ns.uu.net juga tidak authoritative untuk domain .id
  • ns.eu.net tidak dapat dihubungi pada test ini

Dengan demikian, satu dari tiga query domain .id ke nameserver yang telah meng-cache NS record domain .id akan memakan waktu lebih lama. Solusi paling mudah untuk mengatasi masalah ini adalah dengan melepas status ketiga nameserver tersebut sebagai nameserver untuk domain .id.

Masalah yang sama juga ditemukan pada second level domain seperti or.id, co.id, net.id atau web.id. But, that is left as an exercise for the reader™ :).

Masalah lainnya yang cukup mengganggu adalah bahwa IDNIC mengutilisasi nameserver milik ISP seperti CBN, IndoNet dan RadNet sebagai nameserver IDNIC. Padahal nameserver-nameserver tersebut juga berfungsi sebagai nameserver authoritative untuk klien mereka dan sekaligus sebagai cache DNS tanpa ada pemisahan cache.

Contoh kasus:

Pemilik domain example.co.id menitipkan domainnya ke (misalnya) RadNet. Pihak RadNet kemudian menambahkan zone example.co.id pada nameserver ns1.rad.net.id. Perlu diketahui bahwa ns1.rad.net.id merupakan nameserver authoritative untuk domain co.id. Sampai saat ini tidak ada masalah.

Lalu setelah beberapa lama pemilik domain example.co.id memutuskan untuk memindahkan penitipan domain ke ISP lain, misalnya ke ISP-X. Pihak ISP-X kemudian menambahkan zone example.co.id pada nameserver mereka. Perlu diketahui bahwa nameserver ISP-X bukan merupakan nameserver authoritative untuk domain co.id.

Setelah pemindahkan ini muncul masalah. Kadang-kadang query untuk example.co.id masih menunjuk ke tempat lama, dan kadang-kadang sudah menunjuk ke tempat baru. Mengapa demikian? Karena pihak RadNet belum/tidak menghapus zone example.co.id pada nameserver-nya. Akibatnya, query DNS yang kebetulan ditujukan ke ns1.rad.net.id akan dijawab dengan data yang lama. Untuk mengatasi masalah ini, pihak pemilik domain perlu untuk meminta pihak RadNet untuk menghapus zone example.co.id dari nameserver RadNet. Terkadang hal ini sulit dilakukan karena keterbatasan pengetahuan DNS dari pihak pemilik domain.

Selain itu, akibat konfigurasi seperti ini, pelanggan akses Internet dari RadNet akan selalu mendapatkan data yang lama dari example.co.id. Hal ini disebabkan karena nameserver tersebut juga berfungsi sebagai cache bagi pelanggan akses Internet dari RadNet.

Bagaimana memecahkan masalah ini? Menurut saya IDNIC harus memiliki nameserver sendiri, tidak menumpang nameserver milik ISP. Atau paling tidak perlu dilakukan pemisahan terhadap nameserver IDNIC dan nameserver milik ISP. Untuk menghindari masalah ini di tingkat ISP, pihak ISP juga perlu memisahkan nameserver untuk keperluan cache dan nameserver authoritative.

Selain itu mungkin perlu dipertimbangkan agar nameserver IDNIC tidak perlu melakukan query rekursif. Misalnya pada contoh di atas, selain menjawab DNS server domain id, juga ada tambahan berupa alamat IP dari seluruh DNS server. Sedangkan sebagian client DNS tidak akan menggunakan record-record tambahan tersebut jika record-record tersebut diluar kekuasaan domain id. Hal ini dilakukan untuk menghindari cache poisoning. Jadi menurut saya, query rekursif pada nameserver authoritative sebaiknya dihilangkan saja. Data tambahan yang perlu hanyalah berupa glue record , yaitu record-record yang berada di bawah kekuasaan domain id.

2 Responses

Trackback: Use this URI to trackback this entry. Use your web browser's function to copy it to your blog posting.

Comment RSS: You can track conversation in this page by using this page's Comments RSS (XML)

Gravatar: You can have a picture next to each of your comments by getting a Gravatar.

Leave a Comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Warning: Comments carrying links to questionable sites will be removed!