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.