Ini seharusnya pembaruan yang kedua, tapi karena yang pertama entah kemana (yang di domain faultable.dev), jadi setidaknya gue bisa takeover ini slug.

Sudah sekitar setahun lebih menjalankan edgyDNS sejak 20 Juni 2021 kemarin. Hasilnya? Biasa saja lol. edgyDNS adalah salah satu infrastruktur terpenting di jaringan rumah gue karena jika doi down, maka internet di rumah gue dianggap down karena gue tidak belum membuat failover nya.

Pembaruan disini cukup singkat dan lebih ke teknis. Dari sisi pengguna tidak ada yang berubah kecuali latensi yang lebih kecil lagi!

Penyedia Cloud

Sebelumnya edgyDNS berjalan di infrastrukturnya IDCloudHost, namun sayang harus berpindah karena gue kurang puas dengan throughput nya. Untuk menjalankan shred(1) yang biasa gue lakukan untuk update Traefik aja kadang lambat banget, sekitar 3 menit jika gue kira-kira.

Jika melihat ke panel metriks Disk I/O, tertulis 95 MB/s dan bila melakukan microbenchmark dengan dd(1), literally menunggu sampai selamanya, ga muncul keluaran apa-apa setelah menuggu sampai 20 menit.

Dari segi jaringan, gue tidak menemukan referensi seberapa besar IDCloudHost menjanjikan network bandwidth. Namun jika melakukan Speedtest, gue mendapatkan:

  • Download: ~41 MiB/s (346 Mbps)
  • Upload: ~36 MiB/s (309 Mbps)

Yang anyhow setara dengan skala internet residen?

Alternatifnya gue pindah ke Amazon Web Services dengan region ap-southeast-3 (Jakarta). Meskipun belum menjadi first-class region di Asia, tapi throughput nya cukup oke. Dengan spek yang sama (2 vCPU), gue dijanjikan 61 MiB/s sebagai baseline sampai 5 GiB/s sebagai burst nya.

Jika melakukan Speedtest, berikut yang gue dapatkan:

  • Download: ~377 MiB/s (3165 Mbps)
  • Upload: ~292 MiB/s (2450 Mbps)

Better daripada skala internet rumahan hahaha.

Throughput jaringan (dan Disk I/O) selalu bergantung dengan jumlah CPU, jika melihat dari metriks Disk I/O di dasbor AWS, gue tidak menemukan apa-apa, dan bila melakukan microbenchmark via dd(1), berikut yang gue dapat:

  • Write: 35.1 MB/s (LOL)
  • Read: 338 kB/s (LOLLLL)

Dan ini cukup “oke” untuk gue mengingat instance yang gue gunakan adalah t3.micro (free tier gang).

…dan setidaknya command dd(1) kagak berjalan selamanya! (30 mins and still counting).

Update: Perintah dd(1) di IDCloudHost sudah keluar outputnya setelah sekitar 32 menit! Berikut yang gue dapat (sekitar 38 menitan sama nungguin Read):

  • Write: 636 kB/s
  • Read: 4.4 kB/s

Dan ini perbandingan dengan laptop ringan gue dengan 8 CPU :) Dan gue di IDCloudHost dan AWS sama-sama menggunakan SSD yang berbasis NVMe.

”Neutral” DNS

Jika somehow membutuhkan upstream DNS resolver yang murni hanya untuk me-resolve DNS query dan lo somehow mempercayakan ke gue sebagai penyedia, sekarang lo bisa menggunakan pure.edgy-dns.com yang hanya tersedia sebagai DoH (DNS Over HTTPS) untuk sekarang.

Kasus penggunaannya adalah misal lo menjalankan Pi-Hole atau AdGuard Home atau Blocky sendiri di jaringan lo, dan lo membutuhkan salah satu upstream DNS resolver.

Alternatif dari DNS resolver yang gue sediakan yang biasa gue rekomendasikan adalah Quad9 dan 1.1.1.1 nya Cloudflare. Lo bisa gunakan sebanyak mungkin upstream DNS yang digunakan, dan rekomendasi gue menggunakan algoritma something like “query ke semua upstream satu-per-satu, urutkan berdasarkan RTT (Round-trip time), dan prioritaskan yang paling stabil dan rendah RTT nya”.

Biasanya algoritma lain yang digunakan adalah mengambil yang latensinya paling rendah berdasarkan alamat IP dan menggunakan round-robin.

Gue personally tidak menggunakan Neutral DNS ini, tapi, yaa nice to have lah ;) Tangkapan layar diatas adalah contoh yang masuk ke daftar “situs berita palsu”, dan terlihat bahwa yang “Neutral DNS” dan Cloudflare meresolve domain tersebut sedangkan yang non-netral memblokirnya.

Untuk mengetahui apakah lo berhasil menggunakan “Neutral DNS” lo bisa coba resolve coba.pure. Jika jawabannya 0.0.0.0, berarti lo sudah berhasil tersambung ke Neutral DNS nya edgyDNS! Umumnya jika menggunakan yang non-neutral menggunakan coba.dong yang akan dijawab dengan 10.6.6.6 untuk pengujiannya. Technically ini valid (masih netral) karena coba.pure adalah bogus domain.

”Clean” DNS

By default, edgyDNS memblokir query ke:

  • Jaringan iklan
  • Jaringan pelacak
  • Situs judi
  • Situs scam
  • Situs berita palsu
  • OS telemetry
  • Malware (dan malvertising)
  • Spyware
  • Ransomware
  • Cryptojacking

Yang berdasarkan “kurasi” gue sebagai penyedia.

Jika terdapat kasus dimana lo tidak ingin fully mengikuti daftar saringan gue, misal, lo memperbolehkan Microsoft mengumpulkan data Windows lo (karena jika tidak melakukan itu, Windows lo berjalan aneh), sekarang lo bisa menggunakan clean.edgy-dns.com.

Pada dasarnya Clean DNS ini melakukan filtering juga, namun hanya untuk Malware dan Ransomware, yang, still, berdasarkan kurasi gue juga (yang bisa di cek di GitHub, belum gue update per gue merilis tulisan ini). Tangkapan layar diatas adalah contoh yang masuk ke daftar “situs malware”, dan terlihat bahwa yang “Neutral DNS” meresolve domain tersebut sedangkan yang non-netral dan yang default memblokirnya.

Jika menggunakan Safari, ada peringatan seperti ini jika mencoba mengakses situs tersebut: Begitupula dengan di Google Chrome: Jadi, seems to work, right?

Karena di Clean DNS (dan yang Neutral, tentu saja) ini tidak memblokir iklan, jadi, query ke Google Analytics akan diresolve dan komputer lo akan berkomunikasi dengan layanan tersebut! Clean DNS ini gue rasa cocok untuk yang ingin menggunakan Neutral DNS tapi masih ingin blokir situs Malware dan Ransomware.

Untuk mengetahui apakah lo berhasil menggunakan “Clean DNS” lo bisa coba resolve coba.clean. Jika jawabannya 0.0.0.0, berarti lo sudah berhasil tersambung ke Clean DNS nya edgyDNS! Umumnya jika menggunakan yang non-neutral menggunakan coba.dong yang akan dijawab dengan 10.6.6.6 untuk pengujiannya. Dan of course, gue personally tidak menggunakan Clean DNS ini, tapi, sekali lagi, nice to have lah ;)

Update OS

Sebelumnya edgyDNS ditenagai oleh Ubuntu dan sekarang menggunakan Amazon Linux 2. Tidak ada perubahan yang signifikan, hanya, setidaknya gue bisa mengaktifkan SELinux disini.

Pengaturan masih sama: tidak ada log yang ditulis ke disk. Everything goes  to /dev/null.

Gue tertarik untuk menjalankan OS nya di ramdisk, dan di inisiasi melalui cloud-init. Tapi hanya sekadar tertarik aja, dan terkadang tidak semua yang menarik harus dicoba, bukan?

Substack

Gue tidak lupa klo memiliki newsletter terkait edgyDNS ini, hanya, belum ada konten dan ide baru aja yang mau dibagikan. Rencana mau pakai fitur custom domain nya Substack, tapi, ya, rencana hanyalah rencana (let’s see) dan yang paling penting adalah kontennya, bukan?

Penutup

Mungkin ada yang bertanya, “ngapain sih riz lu jalanin DNS resolver sendiri?”, selain jawabannya karena dogfooding, juga karena sebuah misi lol.

Disamping itu, karena gue fun melakukannya.

Berkat menjalankan DNS resolver sendiri dan menawarkannya ke publik ini gue ada belajar sedikit-sedikit low-level nya DNS dari segi performa; keamanan dsb, bahkan sampai ada security researcher yang japri gue karena edgyDNS ada privacy concerns (sekarang udah ga relevan) yang berkaitan dengan tesis dia tentang EDNS(0) padding.

Untuk statistik siapa saja pengguna edgyDNS dan sudah berapa total query yang diresolve adalah:

  • MAU (monthly active users): -
  • QPM (queries per month): -

Yes, karena tidak ada log yang ditulis, sekalipun itu “anonymized”, “privacy-respecting blabla”, “technical-only” whatsoever. Kalau cek log local di raspberry gue untuk 9 hari yang lalu dari tulisan ini dibuat ada sekitar 149,157 ya untuk di jaringan rumah gue. Tapi gue tidak memusingkannya juga.

Sebagai penutup, silahkan gunakan edgyDNS dan pilih yang sesuai dengan kebutuhan lo!

Sejauh ini gue tidak ada masalah menggunakan edgyDNS di jaringan rumah gue sebagai upstream, mungkin di next nya gue akan membuat failover thing pakai Multi Zone (yang sekalian bisa gue pakai eksperimen lagi buat ODoH).

Terakhir, enjoy a cleaner, private and secure internet!