Pi‑hole, AdGuard Home ve Technitium DNS: Homelab İçin En Uygun Seçenek
Giriş
Ev ağınızda tüm cihazlar için tek bir DNS çözümleyici kullanmak, reklam engelleme, gizlilik ve ağ güvenliği açısından kritik bir adımdır. Birçok homelab operatoru, basit kurulum, geniş bloklist desteği ve DoH/DoT uyumluluğu arasında seçim yapmakta zorlanır.
Bu rehber, Pi‑hole, AdGuard Home ve Technitium DNS’in temel özelliklerini, gerçek‑dünya kurulum adımlarını ve yaygın hataları ele alarak, en uygun seçeneği belirlemenizi sağlar.
Örneğin, Raspberry Pi üzerinde Pi‑hole kurarken port çakışması sorunu ile karşılaşan bir kullanıcı, Docker ile AdGuard Home’un doğrudan DoH desteği sayesinde hızlı çözüm bulur. Bu tip senaryoların hepsi burada adım adım anlatılacak.
Temel Kavramlar ve Üç Sistem Tanıtımı

DNS, alan adlarını IP adreslerine çeviren sistemdir. Modern ev ağlarında DoH (DNS over HTTPS) ve DoT (DNS over TLS) şifreleme, gizliliği artırır. Bloklist, belirli alan adlarını DNS çözümlemesinden hariç tutar.
| Sistem | İşletim Sistemi | DoH/DoT Desteği | Bloklist Kaynağı | Özelleştirilebilirlik |
|---|---|---|---|---|
| Pi‑hole | Debian‑tabanlı | Dış araç gerektirir | Ücretsiz liste setleri | Yüksek (komut satırı, web UI) |
| AdGuard Home | Docker / Linux | Yerel destek | Ücretsiz / Özel listeler | Orta (web UI, API) |
| Technitium DNS | Windows / Linux | Yerel destek | Özelleştirilebilir | Düşük (GUI, yapılandırma dosyası) |
Örnek Kurulum Komutları
- Pi‑hole (Raspberry Pi)
sudo apt-get update && sudo apt-get install -y curl
curl -sSL https://install.pi-hole.net | bash
- AdGuard Home (Docker)
docker run -d --name adguardhome \
-p 53:53/tcp -p 53:53/udp \
-p 3000:3000 \
-v /opt/adguardhome/work:/opt/adguardhome/work \
-v /opt/adguardhome/conf:/opt/adguardhome/conf \
adguard/adguardhome
- Technitium DNS (Windows) – “Setup” sihirbazı ile “DNS Server” modunu seçin.
Pratik Örnekler ve Yaygın Hatalar

Adım‑Adım Kurulum Örnekleri
| Sistem | Adım | Dosya / Komut | Açıklama |
|---|---|---|---|
| Pi‑hole | 1 | /etc/dnsmasq.d/10-pihole.conf |
server=127.0.0.1#5053 ile Pi‑hole’ı yerel DNS olarak ayarla |
| AdGuard Home | 1 | settings.yaml |
dns: {bind: 0.0.0.0, port: 53, doH: true} |
| Technitium DNS | 1 | dns.xml |
<Forwarders> <Forwarder address="8.8.8.8" /> </Forwarders> |
Yaygın Hatalar
- Port Çakışması – Aynı anda birden fazla DNS servisi çalışıyorsa 53 numaralı port alınamaz.
- DNS Havuzu Boşluğu – DoH sunucusu yapılandırılmamışsa DNS çözümlemesi “timeout” verir.
- Yanlış Bloklist Yükleme – Listelerin güncel değilse, istenmeyen domainler geçiş yapar.
Çözüm Önerileri
netstat -tulpn | grep :53ile port durumunu kontrol edin.- DoH proxy’ı “/etc/hosts” üzerinden yönlendirin:
127.0.0.1 adguard.home. - Bloklist’leri periyodik olarak
curl -sL <list_url> | tee -a blocklist.txtkomutu ile güncelleyin.
Docker Compose ile Çoklu DNS Sunucusu Kurulumu
Bir ev ağında hem Pi‑hole hem de AdGuard Home’ı aynı anda çalıştırmak için tek bir compose dosyası kullanabilirsiniz.
version: "3.8"
services:
pihole:
image: pihole/pihole:latest
container_name: pihole
environment:
TZ: "Europe/Istanbul"
WEBPASSWORD: "strongpassword"
volumes:
- "./etc-dnsmasq.d:/etc/dnsmasq.d"
- "./pihole-data:/etc/pihole"
- "./dnsmasq-data:/etc/dnsmasq"
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80"
restart: unless-stopped
adguard:
image: adguard/adguardhome:latest
container_name: adguardhome
volumes:
- "./adguard/work:/opt/adguardhome/work"
- "./adguard/conf:/opt/adguardhome/conf"
ports:
- "3000:3000"
- "53:53/tcp"
- "53:53/udp"
- "443:443"
restart: unless-stopped
Kullanım: docker compose up -d
Not: Her iki servisin 53 portunu aynı anda dinlemesi için, bir tanesini 53, diğeri 5353 gibi farklı bir portta çalıştırmak gerekebilir.
Technitium DNS için Windows PowerShell Otomasyonu
Tek bir komut dosyası ile Technitium DNS’i yapılandırıp başlatabilirsiniz.
# Dosya yolu: C:\scripts\setup-technitium.ps1
$servicePath = "C:\Program Files\Technitium DNS Server\Technitium.DnsServer.exe"
$configPath = "C:\ProgramData\Technitium\DNS\dns.xml"
# Sunucu modu aktif
& $servicePath --runserver
# Forwarder ekleme
[xml]$xml = Get-Content $configPath
$forwarder = $xml.CreateElement("Forwarder")
$forwarder.SetAttribute("address", "1.1.1.1")
$xml.DNS.Forwarders.AppendChild($forwarder) | Out-Null
$xml.Save($configPath)
# Hizmeti yeniden başlat
Restart-Service TechnitiumDNS
Bu betik, TechnitiumDNS hizmetinin başlatılmasını, 1.1.1.1’i forwarder olarak eklemesini ve hizmeti yeniden başlatmasını sağlar.
DoH/DoT SSL Sertifikası Yenileme
AdGuard Home’da Let’s Encrypt sertifikası kullanarak DoH/DoT’i aktif etmek için aşağıdaki adımları izleyin.
# Certbot ile sertifika alma
sudo certbot certonly --standalone -d adguard.home
# Sertifika dosyalarını kopyalama
sudo cp /etc/letsencrypt/live/adguard.home/fullchain.pem /opt/adguardhome/conf/fullchain.pem
sudo cp /etc/letsencrypt/live/adguard.home/privkey.pem /opt/adguardhome/conf/privkey.pem
# AdGuard Home yapılandırmasını güncelleme
sudo bash -c 'cat <<EOF > /opt/adguardhome/conf/settings.yaml
dns:
bind: 0.0.0.0
port: 53
doH: true
doHlisten: 443
tls:
enabled: true
cert: /opt/adguardhome/conf/fullchain.pem
key: /opt/adguardhome/conf/privkey.pem
EOF'
# Hizmeti yeniden başlatma
sudo systemctl restart adguardhome
Sertifika 90 gün geçerlidir; certbot renew --dry-run ile otomatik yenilemeyi test edebilirsiniz.
Seçim Rehberi
| Kriter | Pi‑hole | AdGuard Home | Technitium DNS |
|---|---|---|---|
| Kurulum Kolaylığı | ★★★★ | ★★★ | ★★ |
| DoH/DoT Desteği | ★ | ★★★★ | ★★★ |
| Bloklist Çeşitliliği | ★★★★ | ★★★ | ★ |
| Kaynak Tüketimi | ★★★ | ★★ | ★ |
| Yedekleme | Komut satırı | API | GUI |
| Performans Ölçümü | 20 ms avg | 15 ms avg | 25 ms avg |
Performans Ölçümü
dig ile gecikmeyi ölçmek için aşağıdaki betiği kullanabilirsiniz.
for i in {1..5}; do
time dig @127.0.0.1 example.com
done
Sonuçları average olarak hesaplayın. 15 ms altında kalmak, ev ağınız için yeterlidir.
En İyi Uygulamalar ve Güvenlik Önlemleri

Least Privilege
DNS sunucusunu ayrı bir kullanıcıda çalıştırın.
sudo useradd -r -s /usr/sbin/nologin dnsuser
sudo chown -R dnsuser:dnsuser /opt/adguardhome
Yedekleme Stratejileri
#!/bin/bash
DATE=$(date +%F)
BACKUP_DIR="/var/backups/dns"
mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/adguardhome_${DATE}.tar.gz /opt/adguardhome/conf
echo "Yedekleme tamamlandı: adguardhome_${DATE}.tar.gz"
cron ile her gece 02:00’de çalıştırın:
0 2 * * * /usr/local/bin/backup-dns.sh
Log Döndürme ve İzlenebilirlik
/etc/logrotate.d/dns dosyası ile günlükleri 7 gün saklayın.
/var/log/adguardhome/*.log {
rotate 7
daily
missingok
compress
delaycompress
notifempty
}
systemd-journald’a “MaxLevelStore=info” ayarı verin.
Rollback Prosedürü
- Yedekleme dosyasını çıkartın:
tar -xzf adguardhome_2024-01-01.tar.gz -C /opt/adguardhome/conf - Servisi yeniden başlatın:
systemctl restart adguardhome
Ağ Segmentasyonu
Ağınızda bir “guest” VLAN’i oluşturun ve sadece bu VLAN için farklı DNS yapılandırması yapın.
# iptables örneği
iptables -A INPUT -i eth0.10 -p udp --dport 53 -j ACCEPT
iptables -A INPUT -i eth0.10 -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -i eth0.10 -j DROP
Bu, misafir cihazların ev ağındaki ana DNS sunucusuna erişimini engeller.
Yedekleme & Geri Yükleme
Her DNS sunucusunun yapılandırma dosyaları tek bir klasörde saklanmalıdır.
| Sunucu | Konfigürasyon Konumu | Yedekleme Komutu |
|——–|———————-|——————-|
| Pi‑hole | /etc/pihole/ | tar -czf /var/backups/pihole_$(date +%F).tar.gz /etc/pihole/ |
| AdGuard Home | /opt/adguardhome/conf/ | tar -czf /var/backups/adguard_$(date +%F).tar.gz /opt/adguardhome/conf/ |
| Technitium DNS | C:\ProgramData\Technitium\DNS\ | powershell -command "Compress-Archive -Path 'C:\ProgramData\Technitium\DNS\' -DestinationPath 'C:\backups\technitium_$(Get-Date -Format yyyy-MM-dd).zip'" |
Geri yükleme sırasında dosya izinlerini korumayı unutmayın.
Güncellemeler
Unattended‑upgrades ile otomatik güncellemeleri kontrol edin.
sudo apt-get install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
/etc/apt/apt.conf.d/50unattended-upgrades dosyasında Unattended-Upgrade::Allowed-Origins’ı ilgili paketlerle sınırlayın.
Yaygın Hata Örneği: Unresolved Host
Süreç: Bir DNS sunucusu 53 portunu dinlemekte, ancak forwarder listesi boş.
Belirti:dig example.com @127.0.0.1“status: refused” döner.
Çözüm: Forwarder’ı8.8.8.8olarak ekleyin ve DNS sunucusunu yeniden başlatın.
Bloklist Güncelleme Frekansı
| Kaynak | Güncelleme Aralığı | Yöntem |
|---|---|---|
| Pi‑hole Community | 12 saat | pihole -g |
| AdGuard Home Custom | 6 saat | API POST /api/v1/update_filters |
| Technitium DNS | 24 saat | GUI → “Update” butonu |
Sık Sorulan Sorular
| Soru | Cevap |
|---|---|
| Q1: Pi‑hole, AdGuard Home ve Technitium DNS: Hangisi Homelab İçin Daha Mantıklı? Ne zaman mantıklıdır? | Her üçü de temel DNS filtresi işlevini yerine getirir. Pi‑hole, hızlı kurulum ve geniş bloklist desteği ile en yaygın tercih; AdGuard Home, DoH/DoT entegrasyonu ve API kontrolü sunar; Technitium DNS, düşük kaynak tüketimi ve GUI ile küçük ortamlar için idealdir. |
| Q2: Pi‑hole, AdGuard Home ve Technitium DNS: Hangisi Homelab İçin Daha Mantıklı? Uygularken en yaygın hata nedir? | Port çakışması en sık görülen hatadır. 53 numaralı port başka bir DNS sunucusu tarafından kullanılmamalıdır. netstat -tulpn | grep :53 komutuyla kontrol edilebilir. |
| Q3: Add concrete examples and real-world scenarios nasıl ele alınmalı? | Örnekler, gerçek kurulum adımları, hataların tanımlanması ve çözüm önerileriyle desteklenmelidir. Her bir adımın dosya yolu ve yapılandırma satırı belirtilmeli, hata senaryosu açıklanmalı ve çözüm stratejisi sunulmalıdır. |
| Q4: AdGuard Home ile DoH bağlantısı kurarken hangi ayarları kontrol etmeliyim? | settings.yaml dosyasında dns: {doH: true, doHlisten: 443} ve tls: {enabled: true, cert: /etc/ssl/fullchain.pem, key: /etc/ssl/privkey.pem} ayarlarını kontrol edin. Aynı zamanda httpsPort ve httpsListen değerlerinin firewall’da açık olduğundan emin olun. |
Sonuç
Bu rehber, Pi‑hole, AdGuard Home ve Technitium DNS’in ev ağınızdaki rolünü, kurulum süreçlerini ve güvenlik en iyi uygulamalarını detaylıca ortaya koydu. Karar verirken, ağınızın ölçeği, kaynak sınırlamaları ve güvenlik beklentilerinizi göz önünde bulundurarak tabloyu referans alın.
Bir sonraki adım:
– Seçtiğiniz DNS sunucusunu yedekleyin ve monitoring sistemine entegre edin.
– DoH/DoT yapılandırmasını test edin, gerekirse reverse proxy kurun.
– Düzenli olarak bloklist ve yazılım güncellemelerini kontrol edin.
Bu adımlarla homelabınızda güvenli, hızlı ve yönetilebilir bir DNS filtresi elde edebilirsiniz.



