Konfigurasi DNS-Over-HTTPS di Pi-Hole
DNS-Over-HTTPS adalah protokol yang bertugas untuk menangani permintaan alamat dari DNS menggunakan protokol yang sama saat anda browsing website dengan aman menggunakan protokol HTTPS.
Jika menggunakan fitur DNS standar, setiap permintaan data dikirimkan dalam format text biasa, sehingga dengan mudah tiap orang yang memiliki akses terhadap DNS Server tersebut mengetahui apa yang anda akses dan memiliki kemungkinan untuk mem-forward response dari permintaan yang anda lakukan ke alamat url palsu misalnya.
Penggunaan DNS-Over-HTTPS mencegah hal ini terjadi dengan menggunakan standar protokol HTTPS dalam setiap permintaan alamat ke DNS Server. Ini berarti koneksi dari device ke DNS Server adalah aman dan tidak mudah untuk monitor ataupun hal-hal jahat lainnya. Saat ini bahkan beberapa situs yang cukup terkenal seperti Reddit menerapkan DNS-Over-HTTPS terhadap situsnya, sehingga user yang tidak menggunakan DNS-Over-HTTPS di jaringan lokalnya tidak bisa mengakses situsnya.
Konfigurasi DNS-Over-HTTPS
Seiring dengan di aktifkannya DNS Service 1.1.1.1 yang dimiliki Cloudflare, maka kita dapat mengimplementasikan DNS-Over-HTTPS proxy dengan menggunakan salah satu dari tools yang dimilikinya yaitu: cloudflared. Selanjutnya saya akan menjelaskan, bagaimana cara meng-install dan mengkonfigurasi tools ini di Pi-hole.
ARM architecture (Raspberry Pi)
Karena saya menggunakan Raspberry Pi sebagai DNS Server berbasis Pi-hole, maka saya akan menggunakan tools yang berbasis ARM Architecture. Kita akan melakukan download file binary cloudflared dan kemudian meng-copy nya ke folder: /usr/local/bin/ sehingga bisa dieksekusi oleh user cloudflared.
wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-arm.tgz tar -xvzf cloudflared-stable-linux-arm.tgz sudo cp ./cloudflared /usr/local/bin sudo chmod +x /usr/local/bin/cloudflared cloudflared -v
Konfigurasi cloudflared Agar Berjalan di Startup
Buat cloudflared user, dengan cara:
sudo useradd -s /usr/sbin/nologin -r -M cloudflared
Buat file konfigurasi untuk cloudflared dengan meng-copy perintah di bawah ke dalam file /etc/default/cloudflared.
# Commandline args for cloudflared CLOUDFLARED_OPTS=--port 5053 --upstream https://1.1.1.1/dns-query --upstream https://1.0.0.1/dns-query
Update permisi file konfigurasi dan file cloudflared sehingga bisa diakses oleh cloudflared user:
sudo chown cloudflared:cloudflared /etc/default/cloudflared sudo chown cloudflared:cloudflared /usr/local/bin/cloudflared
Kemudian buat systemd script dengan cara meng-copy perintah di bawah ke dalam file berikut: /etc/systemd/system/cloudflared.service. Agar script ini dapat berjalan di startup sebagai service.
sudo nano /etc/systemd/system/cloudflared.service
[Unit] Description=cloudflared DNS over HTTPS proxy After=syslog.target network-online.target [Service] Type=simple User=cloudflared EnvironmentFile=/etc/default/cloudflared ExecStart=/usr/local/bin/cloudflared proxy-dns $CLOUDFLARED_OPTS Restart=on-failure RestartSec=10 KillMode=process [Install] WantedBy=multi-user.target
Kemudian aktifkan systemd service agar berjalan di startup, kemudian start service dan cek statusnya:
sudo systemctl enable cloudflared sudo systemctl start cloudflared sudo systemctl status cloudflared
Untuk melakukan tes apakah konfigurasi yang telah kita lakukan sudah berjalan dengan baik, maka dapat dilakukan cara berikut:
pi@raspberrypi:~ $ dig @127.0.0.1 -p 5053 google.com ; <<>> DiG 9.11.5-P4-5.1-Raspbian <<>> @127.0.0.1 -p 5053 google.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12157 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: 22179adb227cd67b (echoed) ;; QUESTION SECTION: ;google.com. IN A ;; ANSWER SECTION: google.com. 191 IN A 172.217.22.14 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#5053(127.0.0.1) ;; WHEN: Wed Dec 04 09:29:50 EET 2019 ;; MSG SIZE rcvd: 77
Konfigurasi Pi-hole
Dan yang terakhir, kita akan melakukan konfigurasi Pi-hole untuk menggunakan cloudflared service sebagai upstream DNS Server dengan cara menggunakan 127.0.0.1#5053 sebagai Custom DNS (IPv4).
Selesai deh, sekarang DNS Server anda sudah menerapkan DNS Over HTTPS sehingga lebih aman dalam penggunaannya. Mudah-mudahan cukup jelas dan mudah untuk diterapkan.