Masalah di Server DNS IDNIC

Saya melihat ada beberapa masalah di server DNS yang digunakan oleh [IDNIC](http://www.idnic.net.id). 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.


$ dig ns id @a.root-servers.net
;; 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:


$ dig ns id @ns2.id
;; 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

$ dig ns id @ns1.id
;; 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

$ dig ns id @sec3.apnic.net
;; 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.


$ dig soa id @ns.uu.net
;; 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

$ dig soa id @ns1.id
;; 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

$ dig soa id @ns1.rad.net.id
;; 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

$ dig soa id @ns1.indo.net.id
;; 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

$ dig soa id @ns2.id
;; 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

$ dig soa id @sec3.apnic.net
;; 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

$ dig soa id @auth02.ns.uu.net
;; 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

$ dig soa id @ns.ac.id
;; 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

$ dig soa id @ns.eu.net
;; 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](http://www.cbn.net.id), [IndoNet](http://www.indo.net.id) dan [RadNet](http://www.rad.net.id) 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 comments

Leave a comment

Your email address will not be published. Required fields are marked *