Pi-hole ve Unbound ile Yerel Ağ Seviyesinde Reklam Engelleme ve Güvenli DNS
İnternette gezinirken tarayıcı eklentileri (uBlock Origin vb.) masaüstünde reklamları engellemek için etkilidir; ancak akıllı televizyonlar (Smart TV), mobil uygulamalar ve IoT cihazlarındaki telemetri ve izleme isteklerine karşı çaresiz kalırlar. Üstelik girdiğiniz her web sitesinin alan adı (DNS sorgusu) varsayılan olarak internet servis sağlayıcınız (İSS) ya da Google/Cloudflare gibi merkezi şirketler tarafından günlüğe kaydedilir.
Bu rehberde; ev ağındaki tüm cihazları kapsayacak şekilde reklam ve izleyicileri kara delik yöntemiyle yutan Pi-hole ile hiçbir dış DNS sağlayıcısına bağımlı kalmadan doğrudan kök sunuculardan sorgulama yapan Unbound özyinelemeli (recursive) DNS sunucusunun entegrasyonunu inceliyoruz.
1. Mimari Nasıl Çalışır? (DNS Sinkhole + Recursive DNS)
[Ev Cihazları (Telefon, TV, PC)]
│ (DNS Sorgusu: ahakan.com)
▼
[Pi-hole] ──(Reklam/İzleyici Listesinde mi?)──> [EVET] ──> [0.0.0.0 (Engellendi)]
│ [HAYIR]
▼
[Unbound (127.0.0.1:5335)]
│ (Doğrudan Kök DNS Sunucuları: .root -> .com -> ahakan.com)
▼
[İnternet Kök Sunucuları]
Bu yapıda Google (8.8.8.8) veya Cloudflare (1.1.1.1) gibi aracı şirketler tamamen devreden çıkar. DNS sorgularınız hiçbir üçüncü taraf şirketin veritabanında profillenmez.
2. Docker Compose ile Pi-hole ve Unbound Kurulumu
Her iki servisi tek bir docker-compose.yml dosyasıyla ayağa kaldırabiliriz:
version: "3"
services:
unbound:
image: mvance/unbound:latest
container_name: unbound
restart: always
volumes:
- ./unbound:/opt/unbound/etc/unbound/
networks:
dns_net:
ipv4_address: 172.20.0.2
pihole:
image: pihole/pihole:latest
container_name: pihole
restart: always
hostname: pihole
environment:
TZ: 'Europe/Istanbul'
WEBPASSWORD: 'GucluSifreniz123'
PIHOLE_DNS_: '172.20.0.2#53' # DNS upstream olarak doğrudan Unbound'u göster
DNSMASQ_LISTENING: 'all'
volumes:
- './etc-pihole:/etc/pihole'
- './etc-dnsmasq.d:/etc/dnsmasq.d'
ports:
- "53:53/tcp"
- "53:53/udp"
- "8080:80/tcp" # Web arayüzü portu
networks:
dns_net:
ipv4_address: 172.20.0.3
depends_on:
- unbound
networks:
dns_net:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/24
Konteynerleri başlatmak için:
docker compose up -d
3. Unbound İnce Ayarları (unbound.conf)
Unbound’un kök sunucularla DNSSEC doğrulamalı güvenli konuşması için ./unbound/unbound.conf:
server:
verbosity: 1
interface: 0.0.0.0
port: 53
do-ip4: yes
do-udp: yes
do-tcp: yes
do-ip6: no
# Gizlilik ayarları
hide-identity: yes
hide-version: yes
harden-glue: yes
harden-dnssec-stripped: yes
use-caps-for-id: no
# Önbellek optimizasyonu
cache-min-ttl: 3600
cache-max-ttl: 86400
prefetch: yes
num-threads: 1
# Yerel Docker ağına izin ver
access-control: 172.20.0.0/24 allow
4. Tüm Ev Ağına Yaymak: Modem DHCP Ayarı
Pi-hole’u her cihazda tek tek elle ayarlamak yerine ev modeminizin yönetim arayüzüne girin:
- LAN / DHCP Ayarları bölümünü bulun.
- Birincil DNS (Primary DNS): Ev sunucunuzun yerel IP adresini girin (Örn:
192.168.1.150). - İkincil DNS: Boş bırakın (Eğer ikincil DNS’e 8.8.8.8 yazarsanız cihazlar reklam engellemeyi atlayarak oraya yönlenebilir).
- Ayarları kaydedip modemi yeniden başlatın.
Artık evinize bağlanan akıllı televizyon, tablet veya telefon fark etmeksizin tüm cihazların DNS sorguları Pi-hole üzerinden filtrelenir.
5. Web Arayüzü ve Sonuç
Tarayıcınızdan http://192.168.1.150:8080/admin adresine giderek belirlediğiniz şifreyle panoya erişebilirsiniz.
- Günlük engellenen sorgu oranı tipik bir ev ağında %15 ile %35 arasındadır.
- Akıllı TV’lerin arka planda gönderdiği telemetri isteklerinin, mobil oyunlardaki video reklamların ve web sitelerindeki izleyicilerin tamamen kesildiğini görebilirsiniz.
- DNS sorguları yerel Unbound önbelleğinde tutulduğu için sık ziyaret edilen sitelerin yanıt süresi 1 milisaniyenin altına iner.
Bir sonraki bölümde, evimizdeki bu güvenli ağa ve servislere dışarıdayken güvenle erişebilmek için WireGuard VPN tüneli kuracağız.