Mufid's Code blog

Internet Positif, DNSCrypt, dan Internet yang Terkesan Melambat

| Comments

Masih ingat kasus pemblokiran Twitter di Turki?

Semua orang menyarankan untuk menggunakan Google DNS. Akan tetapi, di Indonesia, Google DNS di-redirect oleh pemerintah kita lewat program bernama internet positif. Mari kita buktikan:

$ dig reddit.com @8.8.8.8

; <<>> DiG 9.11.0-P3 <<>> reddit.com @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2443
;; flags: qr rd; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;reddit.com.                    IN      A

;; ANSWER SECTION:
reddit.com.             604800  IN      CNAME   internet-positif.org.
internet-positif.org.   30      IN      A       118.97.116.27

;; AUTHORITY SECTION:
telkomblacklisting.co.id. 604800 IN     SOA     localhost. root.localhost. 2017021207 3600 3600 604800 604800

;; Query time: 2 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Feb 12 07:43:20 SE Asia Standard Time 2017
;; MSG SIZE  rcvd: 152

Anda bisa lihat pada baris ANSWER, saya mendapatkan balasan internet-positif.org. untuk pertanyaan reddit.com.. Aneh sekali, bukan? Padahal saya sudah meminta agar DNS Google (8.8.8.8) yang menjawab. Saya menduga, sebuah firewall atau semacamnya me-redirect traffic dari port DNS (53). Alih-alih tersambung ke DNS Google, paket saya di re-route ke DNS pemerintah.

Oleh karenanya, saya menggunakan DNSCrypt.

Dalam banyak kasus, saya selalu menggunakan DNSCrypt. Alasan pertama adalah alasan kecepatan respons perintah DNS. Dalam beberapa kasus, DNS “pemerintah” terlalu lambat dan peramban saya menjadi tidak bekerja. Alasan kedua adalah ada beberapa situs yang justru tidak bisa diakses dengan DNS “pemerintah” pada beberapa kasus. Misalnya saja CloudApp.

Berhubung DNSCrypt bukanlah protokol DNS biasa, Anda perlu menggunakan perantara agar Anda dapat mulai menggunakan DNSCrypt. Perantara ini akan bertindak sebagai DNS Server biasa. Anda kemudian akan menyambungkan ke DNS Server ini. Di Windows, Anda dapat menggunakan perantara bernama SimpleDNSCrypt.

Ketika DNSCrypt telah terpasang, dia akan hidup, by default, di loopback 127.0.0.1 pada port 53. Mari kita coba bertanya alamat IP dari Reddit.com lewat DNSCrypt:

$ dig reddit.com @127.0.0.1

; <<>> DiG 9.11.0-P3 <<>> reddit.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50641
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 4, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;reddit.com.                    IN      A

;; ANSWER SECTION:
ReDdit.COM.             262     IN      A       151.101.65.140
ReDdit.COM.             262     IN      A       151.101.193.140
ReDdit.COM.             262     IN      A       151.101.1.140
ReDdit.COM.             262     IN      A       151.101.129.140

;; AUTHORITY SECTION:
ReDdit.COM.             67583   IN      NS      ns-378.awsdns-47.com.
ReDdit.COM.             67583   IN      NS      ns-1029.awsdns-00.org.
ReDdit.COM.             67583   IN      NS      ns-1887.awsdns-43.co.uk.
ReDdit.COM.             67583   IN      NS      ns-557.awsdns-05.net.

;; ADDITIONAL SECTION:
ns-378.awsdns-47.COM.   172526  IN      A       205.251.193.122

;; Query time: 392 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Feb 12 07:43:40 SE Asia Standard Time 2017
;; MSG SIZE  rcvd: 283

Baiklah. Sekarang saya bisa mengakses Reddit. Akan tetapi, masalah belum selesai. Beberapa web memang responnya lebih cepat (hostname query), tetapi kecepatan transfer menjadi lebih lambat. Hal ini CDN, ya, Content Delivery Network yang justru dirancang agar Anda dapat menikmati konten lebih cepat justru melambat dengan Anda menggunakan DNSCrypt. Ini karena beberapa CDN menggunakan DNS untuk mendeteksi mana server yang “terdekat” dengan kita.

Contohnya adalah Origin. Saat saya mengunduh dari Origin, internet terasa lambat sekali. Saya menggunakan langganan 10 mbps, tetapi kecepatan yang saya dapat justru hanya sekitar sepersepuluhnya:

Kalau saya matikan DNSCrypt, inilah yang terjadi:

Mengapa seperti itu? Saat tidak menggunakan DNSCrypt, proses pencarian server terdekat oleh CDN terjadi secara “natural” karena memang kita menggunakan DNS yang terdekat dengan kita, dalam kasus ini adalah DNS Telkom. Akan tetapi, ketika menggunakan DNSCrypt, CDN akan “dibodohi” karena mereka tidak tahu bahwa DNS yang kita gunakan bukanlah DNS yang terdekat dengan kita. Dalam konteks saya, saya menggunakan server DNSCrypt di Eropa.

Mari kita buktikan. Saya akan menggunakan Process Explorer dari Sysinternals. Saya pilih Origin, klik kanan > Properties. Kemudian, saya pilih TCP/IP.

Saat tersambung tanpa DNSCrypt, Origin tersambung ke jaringan berikut:

a104-93-98-193.deploy.static.akamaitechnologies.com
36.66.10.126
a104-93-87-243.deploy.static.akamaitechnologies.com

Mari kita ambil yang paling atas karena host tersebut memiliki sambungan paling banyak di komputer saya saat pengujian dilakukan. Lakukan traceroute ke host tersebut:

$ tracert a104-93-98-193.deploy.static.akamaitechnologies.com

Tracing route to a104-93-98-193.deploy.static.akamaitechnologies.com [104.93.98.193]
over a maximum of 30 hops:

  1    <1 ms    <1 ms    <1 ms  1.1.168.192.in-addr.arpa [192.168.1.1]
  2     4 ms     1 ms     1 ms  36.77.192.1
  3     1 ms     1 ms     1 ms  PE-BOO-HUAWEI.telkom.net.id [125.160.0.113]
  4     1 ms     1 ms     1 ms  69.171.94.61.in-addr.arpa [61.94.171.69]
  5     2 ms     7 ms     6 ms  a104-93-98-193.deploy.static.akamaitechnologies.com [104.93.98.193]

Trace complete.

Sekarang, keluar dari Origin, sambungkan DNSCrypt, dan lihat sambungan yang terjadi. Ternyata banyak sambungan ke a92-122-201-149.deploy.akamaitechnologies.com. Jika kita traceroute:

$ tracert a92-122-201-149.deploy.akamaitechnologies.com

Tracing route to a92-122-201-149.deploy.akamaitechnologies.com [92.122.201.149]
over a maximum of 30 hops:

  1    <1 ms    <1 ms    <1 ms  192.168.1.1
  2     5 ms     3 ms     3 ms  36.77.192.1
  3     4 ms     1 ms     1 ms  125.160.0.113
  4     1 ms     1 ms     1 ms  61.94.171.69
  5    20 ms    23 ms    22 ms  180.240.191.42
  6    17 ms    16 ms    16 ms  180.240.191.41
  7   155 ms   154 ms   156 ms  180.240.196.33
  8   167 ms   165 ms   165 ms  akamai.par.franceix.net [37.49.236.168]
  9   164 ms   164 ms   164 ms  a92-122-201-149.deploy.akamaitechnologies.com [92.122.201.149]

Trace complete.

Anda dapat lihat di sana, kita mengakses server CDN yang di Eropa. Cukup jelas mengapa kecepatan pengunduhan menjadi melambat.

UPDATE: Ternyata, ini tergantung dari server DNSCrypt yang dipilih. Tadinya saya hanya memilih Cisco OpenDNS. Pada saat post ini ditulis, saya tidak sadar ada server yang dekat, di Singapura. Saat ini saya selalu menggunakan DNSCrypt dan memilih server Singapura. Dengan demikian, tidak ada dampak negatif yang terasa. Ping tetap terasa tinggi dan kecepatan transfer tetap tinggi.

Update 2: Dokumen ini ditulis pada Februari 2017, tetapi saat saya coba lagi di Agustus 2017, kecepatan unduh Origin tidak selambat sebelumnya. Memang masih tetap lebih lambat daripada menggunakan CDN yang dekat, tetapi saat ini sudah jauh lebih baik. Saya mendapatkan kecepatan sekitar 800 kbps, alih-alih di bawah 500 kbps beberapa bulan yang lalu. Sepertinya Telkom telah berbaik hati untuk melepas throttle ke server yang jauh dari Indonesia. Yay!

Comments