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.
ahhh SOK TAU lu Pri…..