Sejak memasang "dark" theme, saya cenderung menjadi malas menulis. Untuk sementara, dark theme saya disable dulu yaa. Terima kasih (^_^) (bandithijo, 2024/09/15) ●
Pendahuluan
DNSCrypt ? Apa itu ?
Dokumentasi ini tidak ditulis untuk menjelaskan pertanyaan-pertanyaan tersebut. Mungkin teman-teman bisa mencari-cari literatur sendiri untuk jawaban dari pertanyaan di atas, yaa. Seperti di sini.
Permasalahan
Kesulitan dalam mengakses beberapa portal informasi membuat saya gerah. Pasalnya saya kehilangan beberapa bahan bacaan dan sumber informasi yang bagus sekali dari internet berskala global. Di sisi lain, saya pun setuju dengan adanya pemblokiran-pemblokiran ini. Agar informasi yang tidak semestinya dilihat oleh kelompok umur yang belum dewasa secara psikologis tidak melihat konten tersebut dengan mudah dan gamblang. Terlebih lagi untuk teman-teman yang sudah memiliki anak. Akan sangat diuntungkan oleh kebijakan ini. Toh, kita yang orang dewasa sudah pada pintar-pintar mencari jalan menuju roma.
Baiklah, saya tidak ingin menuliskan panjang lebar tentang issue ini. Apabila kalian membaca post ini, mungkin masalah yang kita hadapi sama, mas bro !
Instalasi
Kita perlu memasang paket yang bernama dnscrypt-proxy.
$ sudo pacman -S dnscrypt-proxy
Konfigurasi
Setelah kita berhasil memasang paket dnscrypt-proxy
, tahap selanjutnya tentu saja mengkonfigurasi. Jujur saja, untuk saya, bagian ini agak susah-susah gampang. Bukan susah dalam artian sulit, namun lebih ke tricky. Karena dalam beberapa kasus, cara A terbukti berhasil di saya, namun belum tentu dengan di sistem kalian.
Pada dokumentasi ini saya langsung saja akan menggunakan cara yang berhasil saya terapkan pada sistem saya.
Sekenario pada dokumentasi ini adalah, kita akan mengkonfigurasi dnscrypt-proxy
terlebih dahulu, selanjutnya kita akan mengkonfigurasi /etc/resolv.conf
agar tidak ter-generate oleh NetworkManager.
Konfigurasi DNSCrypt
Setelah kita memasang paket dnscrypt-proxy
, akan terdapat dua service yang disediakan, yang kita hanya bisa memilih salah satu dari keduanya untuk kita enable-kan1.
Kedua service tersebut adalah :
dnscrypt-proxy.service
dnscrypt-proxy.socket
Pada dokumentasi ini saya akan menggunakan .socket
karena sudah terbukti terkonfigurasi dengan baik pada sistem saya.
Karena saat saya menggunakan .service
, saya sudah meng-enable kan service agar dapat dijalankan saat proses sistem dimulai, namun ternyata tidak dijalankan. Karena keterbatasan ilmu, saya memutuskan untuk mencoba menggunakan .socket
dan berjalan sesuai harapan.
Lahkah-lahkahnya sebagai berikut :
-
Edit file
/etc/dnscrypt-proxy/dnscrypt-proxy.toml
.1$ sudo vim /etc/dnscrypt-proxy/dnscrypt-proxy.toml
Cari pada baris yang bertuliskan
listen_addresses
, value yang ada pada kurung kotak, berupa ip address dan port, kita kosongkan. Sehingga akan berbentuk seperti ini.1listen_addresses = [ ]
Simpan dan exit.
-
Konfigurasi socket agar aktif saat proses booting.
$ sudo systemctl enable dnscrypt-proxy.socket
Created symlink /etc/systemd/system/sockets.target.wants/dnscrypt-proxy.socket → /usr/lib/systemd/system/dnscrypt-proxy.socket
Jalankan socket.
$ sudo systemctl start dnscrypt-proxy.socket
Cek status socket, apakah sudah active (running) atau inactive.
$ sudo systemctl status dnscrypt-proxy.socket
● dnscrypt-proxy.socket - DNSCrypt-proxy socket Loaded: loaded (/usr/lib/systemd/system/dnscrypt-proxy.socket; enabled; vendor preset: disabled) Active: active (running) since Wed 2018-08-22 09:12:01 WITA; 4h 33min ago Docs: https://github.com/jedisct1/dnscrypt-proxy/wiki Listen: 127.0.0.1:53 (Stream) 127.0.0.1:53 (Datagram) [::1]:53 (Stream) [::1]:53 (Datagram) Tasks: 0 (limit: 4915) Memory: 40.0K CGroup: /system.slice/dnscrypt-proxy.socket Aug 22 09:12:01 BanditHijo-X260 systemd[1]: dnscrypt-proxy.socket: TCP_DEFER_ACCEPT failed: Protocol not available Aug 22 09:12:01 BanditHijo-X260 systemd[1]: dnscrypt-proxy.socket: TCP_NODELAY failed: Protocol not available Aug 22 09:12:01 BanditHijo-X260 systemd[1]: Listening on DNSCrypt-proxy socket.
Apabila terlihat status
dnscrypt-proxy.socket
sudah active (running), artinya service sudah berjalan dengan baik.Kalau kita menggunakan socket secara otomatis akan mengaktifkan juga service-nya.
Tapi,
dnscrypt-proxy.serivce
ini akan berjalan setelah kita merestart network atau sistem operasi.Kalau sudah seperti di atas, artinya service yang kita perlukan sudah berjalan dengan baik.
Sekarang lanjut ke konfigurasi nameserver pada /etc/resolv.conf
.
Konfigurasi resolv.conf
Bagian ini telah diperbaharui sejak tanggal 2020-06-26.
Sebelumnya, terima kasih kepada mas DØNIX (@dsnvhlm) yang telah memberikan informasi dan masukan untuk bagian ini.
Saya sependapat, karena menggunakan service dhcpcd hanya untuk membuat static dns pada file /etc/resolv.conf
terlalu overkill (berlebihan).
Saya memang menanti-nantikan ada cara yang lebih praktis. Dan cara yang diberikan oleh mas DØNIX ini sangat mudah untuk kita aplikasikan.
Saran tersebut juga didukung dari sini, yang menginformasikan seperti ini.
In a dynamic environment (laptops and to some extents desktops), you need to configure your resolver based on the network(s) you are connected to. The best way to do that is to use openresolv because it supports multiple subscribers.
Nah, sudah cukup banyak pendapat yang mengarah pada openresolv.
Yuk, langsung kita sikat!
Pertama, kita perlu mengintervensi NetworkManager, karena isi dari file /etc/resolv.conf
merupakan symlink dari salah satu dari 3 file ini:
/run/systemd/resolve/stub-resolv.conf
/run/systemd/resolve/resolv.conf
/usr/lib/systemd/resolv.conf
Kalau saya, ada di no. 2. Saya tebak, teman-teman juga biasanya no. 2.
Untuk memerintahkan NetworkManager agar mengguanakn openresolv, kita perlu membuat sebuah file config di dalam direktori NetworkManager config.
$ sudo vim /etc/NetworkManager/conf.d/rc-manager.conf
Lalu isikan seperti ini.
[main]
rc-manager=resolvconf
Oke, urusan kita dengan NetworkManager selesai.
Selanjutnya, kita perlu mengkonfigurasi openresolv.
Openresolv sudah merupakan paket dari core/openresolv, yang artinya sudah berada pada core package dari Arch Linux. Jadi kita tidak perlu memasangnya.
Kalau ternyata belum terpasang, bisa pasang dulu yaa paket openresolv.
$ sudo pacman -S openresolv
Nah, openresolv menyediakan file binary perintah bernama resolvconf
dan file konfigurasi di /etc/resolvconf.conf
.
Buka file konfig tersebut, dan uncomment baris yang mengandung name_servers=
.
# Configuration for resolvconf(8)
# See resolvconf.conf(5) for details
resolv_conf=/etc/resolv.conf
# If you run a local name server, you should uncomment the below line and
# configure your subscribers configuration files below.
name_servers=127.0.0.1
*Uncomment baris yang saya marking.
Untuk konfigurasi dnscrypt-proxy yang kita lakukan, kita menggunakan nameserver 127.0.0.1.
Sekedar info saja, kalau kita perhatikan nama dari option tersebut name_servers=
yang berbentuk plural, artinya kita dapat mendefinisikan lebih dari satu name server. Caranya dengan mengapit dengan petik dua (") dan setiap name server dipisahkan oleh spasi.
name_servers="127.0.0.1 8.8.8.8 4.4.4.4 1.1.1.1"
Nah, dengan begini tahap konfigurasi static DNS dengan file resolv.conf telah selesai.
Untuk memastikan nameserver
berubah menjadi static, coba restart serivice dari NetworkManager.service
terlebih dahulu.
$ sudo systemctl restart NetworkManager.service
Kemudian coba lakukan pengecekan isi dari file /etc/resolv.conf
.
$ cat /etc/resolv.conf
Apakah nameserver sudah berubah menjadi nameserver 127.0.0.1
?
Kalau belum, tunggu sekitar 2-3 menit. Sambil melakukan restart terhadap kedua service di atas.
Kalau gak sabar, bisa jalankan perintah di bawah, untuk mengenerate isi dari file /etc/resolv.conf
sesuai dengan yang kita konfig.
$ sudo resolvconf -u
Selesai!
Berikut adalah tampilan file /etc/resolv.conf
sebelum dan sesudah kita konfig.
Sebelum.
# Generated by NetworkManager
nameserver 118.98.44.100
nameserver 118.98.44.10
nameserver fe80::1%wls3
Sesudah.
# Generated by resolvconf
nameserver 127.0.0.1
Video demonstrasinya
Hasilnya
Apabila kedua langkah di atas sudah kita lakukan, sekarang tinggal melakukan pengujian.
Apabila berhasil.
$ dig +short txt qnamemintest.internet.nl
a.b.qnamemin-test.internet.nl.
"HOORAY - QNAME minimisation is enabled on your resolver :)!"
$ ping -c 3 reddit.com
PING reddit.com (151.101.1.140) 56(84) bytes of data.
64 bytes from 151.101.1.140 (151.101.1.140): icmp_seq=1 ttl=55 time=32.3 ms
64 bytes from 151.101.1.140 (151.101.1.140): icmp_seq=2 ttl=55 time=32.6 ms
64 bytes from 151.101.1.140 (151.101.1.140): icmp_seq=3 ttl=55 time=32.7 ms
--- reddit.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 10ms
rtt min/avg/max/mdev = 32.330/32.623/32.977/0.278 ms
Apabila gagal.
$ dig +short txt qnamemintest.internet.nl
a.b.qnamemin-test.internet.nl.
"NO - QNAME minimisation is NOT enabled on your resolver :("
$ ping -c 3 reddit.com
PING internetpositif.uzone.id (36.86.63.185) 56(84) bytes of data.
64 bytes from 36.86.63.185: icmp_seq=1 ttl=245 time=30.2 ms
64 bytes from 36.86.63.185: icmp_seq=2 ttl=245 time=30.8 ms
64 bytes from 36.86.63.185: icmp_seq=3 ttl=245 time=31.6 ms
--- internetpositif.uzone.id ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 9ms
rtt min/avg/max/mdev = 29.596/30.352/31.551/0.755 ms
Sekarang buka browser favorite kalian, dan buka halaman www.reddit.com.
Kesimpulan
Yang dibutuhkan untuk dapat mennggunakan dnscrypt-proxy
adalah :
- Service
dnscrypt-proxy
yang sudah running nameserver 127.0.0.1
pada/etc/resolv.conf
Referensi
-
wiki.archlinux.org/index.php/DNSCrypt
Diakses tanggal: 2018/09/22 -
wiki.archlinux.org/index.php/Domain_name_resolution#Conditional_forwarding
Diakses tanggal: 2020/06/26 -
wiki.archlinux.org/index.php/NetworkManager#Use_openresolv
Diakses tanggal: 2020/06/26 -
wiki.archlinux.org/index.php/Openresolv
Diakses tanggal: 2020/06/26 -
superuser.com/questions/442096/change-default-dns-server-in-arch-linux
Diakses tanggal: 2018/09/22 -
github.com/jedisct1/dnscrypt-proxy
Diakses tanggal: 2018/09/22 -
www.privacytools.io/providers/dns/
Diakses tanggal: 2020/07/26
Lisensi
Atribusi-NonKomersial-BerbagiSerupa 4.0 Internasional (CC BY-NC-SA 4.0)
Penulis
My journey kicks off from reading textbooks as a former Medical Student to digging bugs as a Software Engineer – a delightful rollercoaster of career twists. Embracing failure with the grace of a Cat avoiding water, I've seamlessly transitioned from Stethoscope to Keyboard. Armed with ability for learning and adapting faster than a Heart Beat, I'm on a mission to turn Code into a Product.
- Rizqi Nur Assyaufi