Keamanan

Pi-hole: Blokir Iklan dan Tracker di Tingkat DNS untuk Seluruh Jaringan

Pi-hole: Blokir Iklan dan Tracker di Tingkat DNS untuk Seluruh Jaringan
Pi-hole adalah DNS sinkhole yang memblokir iklan dan tracker di tingkat DNS. Berbeda dari browser ad blocker yang perlu diinstall di setiap perangkat, Pi-hole bekerja di level jaringan — sekali setup, semua perangkat yang menggunakan DNS server ini akan terproteksi tanpa instal software apapun. ## Mengapa Pi-hole? **Network-Wide Blocking.** Satu Pi-hole melindungi semua perangkat di jaringan — laptop, HP, smart TV, IoT devices. Tidak perlu install ad blocker di masing-masing perangkat. **Lebih Ringan dari Browser Extension.** Pi-hole hanya memblokir di DNS level (mengembalikan NXDOMAIN untuk domain iklan). Bandwidth dan CPU yang dihemat signifikan. **Dashboard Real-time.** Web interface yang menampilkan queries, blocked domains, top domains, dan analytics dalam format yang mudah dipahami. **Whitelist/Blacklist Granular.** Kontrol penuh atas domain mana yang diblokir dan diizinkan. ## Install Pi-hole ### Docker (Recommended) ```bash docker run -d --name pihole \ -p 53:53/tcp \ -p 53:53/udp \ -p 8053:80/tcp \ -v pihole-data:/etc/pihole \ -v pihole-dnsmasq:/etc/dnsmasq.d \ -e TZ=Asia/Jakarta \ -e WEBPASSWORD=your-password \ --restart unless-stopped \ --cap-add=NET_ADMIN \ pihole/pihole:latest ``` ### Docker Compose ```yaml version: "3.8" services: pihole: image: pihole/pihole:latest container_name: pihole restart: unless-stopped ports: - "53:53/tcp" - "53:53/udp" - "8053:80/tcp" volumes: - ./pihole:/etc/pihole - ./dnsmasq:/etc/dnsmasq.d environment: TZ: Asia/Jakarta WEBPASSWORD: your-password cap_add: - NET_ADMIN ``` ### Install di Raspberry Pi / VPS ```bash curl -sSL https://install.pi-hole.net | bash ``` Ikuti installer wizard. Setelah selesai, akses dashboard di `http://:8053/admin`. ## Konfigurasi DNS ### Di Router (Recommended) Set DNS server router ke IP Pi-hole. Semua perangkat di jaringan otomatis menggunakan Pi-hole. ### Di Perangkat Individual Set DNS manual: - **Android:** Settings → Network → WiFi → Advanced → DNS → `` - **iPhone:** Settings → WiFi → Configure DNS → Manual → `` - **Windows:** Network Settings → Adapter → DNS → `` ## Blocklists Pi-hole sudah include beberapa blocklists default. Tambahkan blocklists lain untuk proteksi lebih: ### Rekomendasi Blocklists ``` # Steven Black's Unified Hosts (combine multiple lists) https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts # AdGuard DNS Filter https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt # OAD (OpenDNS) https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext # Malware Domain Blocklist https://raw.githubusercontent.com/RPiList/specials/master/Blocklisten/malware ``` Tambahkan di Admin Dashboard → Group Management → Adlists. ### Update Blocklists ```bash # Via web dashboard Tools → Update Gravity # Via CLI pihole -g ``` ## Whitelist dan Blacklist ### Whitelist (Izinkan domain) ```bash # Via CLI pihole -w example.com # Via dashboard Whitelist → Add ``` ### Blacklist (Blokir domain) ```bash # Via CLI pihole -b tracking-domain.com # Via dashboard Blacklist → Add ``` ### Regex Filtering ```bash # Blokir semua domain yang mengandung "ads" pihole -regex ".*ads.*" # Blokir semua tracking pixels pihole -regex ".*\.track\..*" ``` ## DHCP Server Pi-hole bisa menggantikan DHCP server di router: ### Enable DHCP 1. Admin Dashboard → Settings → DHCP 2. Enable DHCP Server 3. Set range: `192.168.1.201 - 192.168.1.254` 4. Set gateway: `192.168.1.1` 5. **Disable DHCP di router** (penting — jangan ada 2 DHCP server) Keuntungan: Pi-hole bisa menampilkan hostname perangkat di dashboard. ## Custom DNS Entries Tambahkan DNS record manual untuk perangkat lokal: ```bash # Via CLI pihole -a addnas 192.168.1.10 nas pihole -a addnas 192.168.1.20 printer # Via admin dashboard Local DNS → DNS Records ``` Sekarang `nas.local` akan resolve ke `192.168.1.10`. ## VPN Remote Access Akses Pi-hole dari luar jaringan dengan WireGuard: ```bash # Install WireGuard apt install -y wireguard # Buat config cat > /etc/wireguard/wg0.conf << 'EOF' [Interface] PrivateKey = Address = 10.0.0.1/24 ListenPort = 51820 PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] PublicKey = AllowedIPs = 10.0.0.2/32 EOF wg-quick up wg0 ``` Di phone/client, set DNS ke `10.0.0.1` (VPN IP Pi-hole). ## Monitoring dan Analytics ### Dashboard Features - **Total queries:** Total DNS queries hari ini - **Blocked:** Jumlah query yang diblokir - **% Blocked:** Persentase blokir - **Top domains:** Domain paling banyak di-query - **Top advertisers:** Domain iklan paling aktif - **Query log:** Real-time log semua DNS queries - **Long-term data:** Analytics historis ### API ```bash # Total queries hari ini curl -s "http://pihole:8053/admin/api.php?summaryRaw" | jq '.dns_queries_today' # Blocked queries curl -s "http://pihole:8053/admin/api.php?summaryRaw" | jq '.queries_blocked_today' ``` ## Tips **Block YouTube Ads.** YouTube ads sulit diblokir di DNS level. Gunakan combination: 1. Pi-hole untuk blocking awal 2. uBlock Origin di browser untuk blocking remaining 3. SponsorBlock untuk video sponsor segments **Gaming Issues.** Beberapa game butuh domain tertentu. Jika game bermasalah, whitelist domain-nya: ```bash pihole -w example-game-domain.com ``` **Smart Home.** IoT devices sering kirim telemetry. Pi-hole bisa memblokir ini, tapi bisa juga break functionality. Whitelist domain yang dibutuhkan device. **Performance.** Pi-hole sangat ringan. 1 CPU core dan 256MB RAM sudah lebih dari cukup untuk jaringan rumah dengan 20+ perangkat. Pi-hole adalah investment yang sangat worth it untuk privasi dan keamanan jaringan. Sekali setup, semua perangkat terproteksi tanpa effort tambahan.