Internet "Negatif" dan Bebas Iklan Menggunakan Pi-hole dan Cloudflare DoH

Seringkali kita kesal dengan iklan yang mengganggu saat membuka sebuah halaman website. Pemerintah memblokir beberapa website (misalnya reddit.com) yang sebenarnya tidak berbahaya untuk konten-konten tertentu. Bagaimana jika kita “paksa” sistem kita untuk tidak men-load iklan dan membuka website yang diblokir pemerintah itu? Pi-hole adalah solusinya.

Instalasi Pi-hole

Kita cukup menyiapkan sebuah Raspberry Pi yang dapat kita gunakan untuk menginstall Pi-hole. Untuk melakukan instalasi Pi-hole cukup menggunakan kode dibawah ini.

curl -sSL https://install.pi-hole.net | bash

Membuka Website Yang Diblokir

Cara seperti mengganti DNS dengan Google DNS (8.8.8.8, 8.8.4.4) sudah tidak mempan lagi. Untuk itu kita membutuhkan cara baru yaitu DNS-Over-HTTPS. DNS-Over-HTTPS akan mengecek DNS menggunakan protokol yang lebih aman, dalam hal ini adalah HTTPS. Salah satu contohnya yang akan kita gunakan adalah milik Cloudflare.

Instalasi Cloudflare DNS

Untuk melakukan instalasi Cloudflare DNS cukup menggunakan kode di bawah ini:

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 Cloudflare DNS

Untuk menjalankan cloudflared ketika startup, tambahkan user cloudflared agar bisa menjalankan daemon.

sudo useradd -s /usr/sbin/nologin -r -M cloudflared

Kemudian buat file konfigurasi untuk cloudflared, yakni berada pada /etc/default/cloudflared dengan isi sebagai berikut:

CLOUDFLARED_OPTS=--port 5053 --upstream https://1.1.1.1/dns-query --upstream https://1.0.0.1/dns-query

Konfigurasi tersebut akan menjalankan cloudflared pada port 5053 di host Raspberry Pi kita.

Setelah itu ganti permission dari file binary cloudflared dan file konfigurasi nya agar bisa dijalankan oleh user cloudflared:

sudo chown cloudflared:cloudflared /etc/default/cloudflared
sudo chown cloudflared:cloudflared /usr/local/bin/cloudflared

Lalu buat sebuah script systemd yang berfungsi untuk mengontrol proses dari cloudflared sehingga dapat berjalan ketika startup. File ini berada pada /etc/systemd/system/cloudflared.service dengan isi sebagai berikut:

[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

Menjalankan Cloudflared

Cukup jalankan kedua command di bawah ini:

sudo systemctl enable cloudflared
sudo systemctl start cloudflared

Untuk mengecek status dari cloudflared dapat menggunakan command berikut:

sudo systemctl status cloudflared

Untuk mengecek apakah cloudflared dapat berjalan dengan baik dapat menggunakan command di bawah ini:

dig @127.0.0.1 -p 5053 reddit.com

Hasil dari command di atas adalah seperti berikut:

; <<>> DiG 9.11.5-P4-5.1-Raspbian <<>> @127.0.0.1 -p 5053 reddit.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44351
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

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

;; ANSWER SECTION:
reddit.com.             272     IN      A       151.101.1.140
reddit.com.             272     IN      A       151.101.65.140
reddit.com.             272     IN      A       151.101.129.140
reddit.com.             272     IN      A       151.101.193.140

;; Query time: 489 msec
;; SERVER: 127.0.0.1#5053(127.0.0.1)
;; MSG SIZE  rcvd: 168

Memasang Clouldflare DNS di Pi-hole

Langkah terakhir yang perlu dilakukan adalah mengganti DNS yang ada di Pi-hole dengan DNS milik cloudflared, yakni 127.0.0.1#5053. Perlu diperhatikan bahwa port 5053 adalah port yang didefinisikan pada file konfigurasi.

dns-pihole.png

Sumber