Pi-hole Kurulum Rehberi

Pi-hole Kurulum Rehberi

2020, Aug 17    

Güncelleme Tarihi: 27.04.2021

Pi-hole Nedir?

Pi-hole, internetteki reklamları, zararlı yazılım barındıran siteleri ve izleyicileri engellemek için kullanılan ücretsiz ve özgür bir sunucu yazılımıdır. Bir DHCP sunucusu olarak kullanıldığında aynı ağdaki tüm cihazların korunmasını sağlar. Pi-hole, Linux üzerinde çalışır, yükleyip kullanabilmek için Linux çalıştıran bir cihaza/bilgisayara ihtiyaç vardır. Kullanıcıların büyük bir kısmı Pi-hole yazılımını Raspberry Pi cihazlarına kurarlar. Biz de bu yazıda Pi-hole yazılımını Raspberry Pi cihazına kurup çalıştırmayı ele alacağız.

Web tarayıcısına bir reklam engelleme eklentisi kurup çalıştırmaktan daha iyidir. Pi-hole kullanan bir ağa bağlı tüm cihazlar ekstra bir yazılıma veya ayara ihtiyaç duymadan reklam ve izleyicilerden temizlenir. Web tarayıcısındaki eklenti yalnızca tarayıcıdaki etkinlikleri kapsar, Pi-hole ise üzerinden geçen geçen tüm internet trafiğini kapsar. Bu sayede Pi-hole ağına bağlı mobil cihazlardaki ve akıllı TV’lerdeki uygulama içi reklamlar dahi engellenir. Ayrıca istatistikleri görüntülemek ve etkinlikleri kontrol etmek için kullanılan bir web arayüzü panosuna sahiptir. Pi-hole’ün teknik olarak yaptığı iş, kara listeye eklenmiş bir bağlantı isteği aldığında onu 0.0.0.0 ip adresine, aksi durumda ise ‘upstream server’a (OpenDNS, Cloudflare, GoogleDNS ..) aktarmaktır. Dilerseniz kendi ‘upstream server’ (DNSCrypt-Proxy v.s.) yazılımınızı da Rapberry Pi cihazına kurup kullanabilirsiniz. DNSCrypt-Proxy kurulum talimatlarını makalenin sonunda bulabilirsiniz.

Raspberry Pi Pi-hole

Raspberry Pi OS Kurulumu (Eski adıyla Raspbian)

Bu makaleyi okuduğunuza göre büyük ihtimalle bir Raspberry Pi cihazınız var ve işletim sistemi yüklü. Eğer elinizde Raspbian işletim sistemi kurulu bir Raspberry Pi varsa bu adımı geçebilirsiniz.

Pi-hole, minimum donanım ve yazılım gereksinimleriyle sorunsuz çalışır. Raspberry Pi 2, 3, 4 veya Zero üzerinde çalışabilir. Genellikle Zero modeli tercih edilir. Pi-hole için 512MB RAM ve 4GB SD kart yeterlidir. Zero modelinin enerji tüketimi oldukça azdır bu sayede modeminizin USB çıkış voltajıyla besleyebilirsiniz. Zero modelinde entegre bir Ethernet portu bulunmadığından, eğer modeme Ethernet kablosu ile bağlamak isterseniz bir adaptöre ihtiyacınız olacaktır. Bu yazıda Zero-W veya wifi desteklekli başka bir Raspberry Pi modelini wifi ile modeme bağlayabilmeniz için gereken ayarları bulacaksınız.
Raspbian’ı Raspberry Pi’ya yüklerken birkaç seçeneğimiz var, ben Raspberry Pi OS (32-bit) Lite sürümünü kullandım. Bu sürümde bir masaüstü grafik arayüzü bulunmuyor ve herhangi bir ekrana veya klavyeye ihtiyaç duymuyor. Kurulumu ve kullanımı ağ üzerinden gerçekleştireceğiz.

  • Raspberry Pi OS (32-bit) Lite Image İndirme
    Raspbian’ı şu adresten indirebilirsiniz. https://www.raspberrypi.org/downloads/raspberry-pi-os/ Dilerseniz farklı bir sürümü de kullanabilirsiniz ama bu işlem için en uygun seçim “Raspberry Pi OS (32-bit) Lite” olacaktır.
  • Raspberry Pi OS (32-bit) Lite Image’ını SD Karta Yazdırma
    İndirdiğiniz img dosyasını “Win32DiskImager” yardımıyla SD kartınıza kurun: Win32DiskImager İndirme Linki: https://sourceforge.net/projects/win32diskimager/ img dosyasını ve kurulum yapacağınız SD kartı seçin ve “write” butonuyla imajı SD karta yazdırın.
Win32 Disk Imager ile SD kart kurulumu
Win32 Disk Imager ile SD kart kurulumu

Ağ Üzerinden Raspberry Pi Cihazına Bağlanma

  • SSH Etkinleştirme
    Pi-hole kurulumunu ağ üzerinden gerçekleştireceğiz bu yüzden SSH’ı (Secure Shell, uzak sunucu bağlantı protokolü) etkinleştirmemiz gerekiyor. SSH’ı etkinleştirebilmek için SD kartın boot bölümüne uzantısı olmayan SSH adında boş bir dosya oluşturun. Raspberry Pi açıldığında boot klasöründe SSH dosyasını arar eğer dosyayı bulursa SSH etkinleştirilir ve dosya silinir. Ayrıntılı bilgiye ihtiyaç duyarsanız şu bağlantıdan 3. adıma bakabilirsiniz: https://www.raspberrypi.org/documentation/remote-access/ssh/
SSH dosyası
SSH dosyası
  • Raspberry Pi Zero-W İçin Wi-fi Ağ Bağlantısı
    Raspberry pi Zero-W modelinde ağa wi-fi ile bağlanabilmek için SD kartın boot bölümüne (ana dizinine) wpa_supplicant.conf adında ikinci bir metin dosyası oluşturmanız gerekiyor. Bu dosyanın içine bağlanacağımız ağın ağ bilgilerini ekleyeceğiz. Oluştutduğunuz metin dosyasının içine aşağıdaki kodu kopyalayıp yapıştırın. Dosyanın içindeki ağ adı (Wİ-Fİ-ADI) ve ağ parolası (Wİ-Fİ-PAROLASI) bölümüne kendi wi-fi ağ bilgilerinizi girin. Dosyayı wpa_supplicant.conf olarak kaydedin. Dosyanın uzantısı .conf olmalıdır. Dosyayı .txt uzantısı ile kaydetmediğinize emin olun.\
country=TR
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="Wİ-Fİ-ADI"
    psk="Wİ-Fİ-PAROLASI"
}
  • Raspberry Pi Cihazı Çalıştırın
    SD kartınızı Raspberry Pi cihazınıza takın ve güç kablosunu bağlayıp çalıştırın. Eğer Raspberry Pi cihazını modeme bağlanmak için ethernet kablosu kullanacaksanız kablo bağlantısını yapın. Raspberry Pi’yın başlamatılması yaklaşık 1.5 dakika sürecektir.
  • Raspberry Pi İp Adresini Öğrenme
    Kurulumu ağ üzerinden gerçekleştireceğimiz için Raspberry Pi cihazının ip adresine ihtiyacımız olacak. İp adresini birkaç farklı yolla öğrenebilirsiniz. Modeminizin arayüzünden veya ağdaki cihaz ip’lerini tarayan bir programı bilgisayarınıza/telefonunuza kurarak öğrenebilirsiniz. Ben bu işlemler için çoğunlukla “Advanced IP Scanner” programını kullanıyorum. Advanced IP Scanner programını şu adresten indirebilirsiniz: https://www.advanced-ip-scanner.com/tr/
Advanced IP Scanner ile Raspberry Pi İp adresi öğrenme
Advanced IP Scanner ile Raspberry Pi İp adresi öğrenme
  • PuTTY ile Raspberry Pi Cihazına Bağlanma
    Raspberry Pi cihazımızın ip adresini öğrendiğimize göre artık cihazımızın terminaline bağlanabiliriz. Bu işlem (SSH) için sıklıkla “PuTTY” adlı program kullanılıyor. Eğer Bilgisayarınızda yüklü değilse şu adresten indirebilirsiniz: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html Programı çalıştırın ve aşağıdaki ekran görüntüsündeki gibi Raspberry Pi cihazının ip adresini girin ve ardından “Open” butonu ile cihaza bağlanın.
PuTTY ile Raspberry Pi cihazına bağlanama ekranı
PuTTY ile Raspberry Pi cihazına bağlanama ekranı

Eğer başarılı bir şekilde bağlanabilirseniz Raspberry Pi sizden bir kullanıcı adı ve parola isteyecek. Varsayılan kullanıcı adı ve şifre aşağıdaki gibidir:

Kullanıcı adı: pi
Parola: raspberry
Raspberry Pi terminali
Raspberry Pi terminali

Pi-hole Kurulumu

Kurulumu “root/su” kullanıcısı olarak yapmamız gerekiyor, en azından ilerleyen adımlarda sorun yaşamamak bu adımı atlamamakta fayda var. root olarak işlem yapabilmek için aşağıdaki komutlardan birini çalıştırın:

sudo su
sudo -i

Pi-hole uygulamasını tek adımda otomatik olarak kurmak mümkün, kurulumu başlatmak için aşağıdaki komutu çalıştırın:

curl -sSL https://install.pi-hole.net | bash
Pi-hole kurulumunu başlatma
Pi-hole kurulumunu başlatma

Komutu çalıştırdığınızda kurulum sihirbazı başlayacak. Kurulum aşamasında Pi-hole hakkında bize bazı bilgiler gösterilecek ve bazı ayarları yapmamızı isteyecek. Bu ayarların büyük bir kısmını varsayılan olarak bırakacağız. Eğer farklı bir versiyon kuruyorsanız veya tereddütte kalırsanız varsayılan ayarı olduğu gibi bırakın. Kurulum tamamlandıktan sonra istediğiniz ayarı web ara yüzünden değiştirebilirsiniz.

Aşağıdaki gibi bilgilendirme pencerelerinde “ok” seçeneğini seçip geçiyoruz.

Pi-hole kurulum ekranı
Pi-hole kurulum ekranı
Pi-hole kurulum ekranı
Pi-hole kurulum ekranı
Pi-hole kurulum ekranı
Pi-hole kurulum ekranı

Bu adımda bir DNS sağlayıcısı seçmenizi istiyor. Genellikle Cloudflare kullanılıyor ben de ilk kurulumda Cloudflare DNS sağlayıcısını seçtim.

Aşağı ve yukarı yön tuşları: Listede gezinme
Tab tuşu: Onay menüsüne geçme
Space tuşu: Seçme/kaldırma için kullanılır. 
Pi-hole DNS sağlayıcıları
Pi-hole DNS sağlayıcıları

Pi-hole tarafından hazırlanmış listeleri (blacklist) yüklemek isterseniz her iki seçeneği işaretleyin. Bu liste sürekli güncelleniyor. Kurulum tamamlandıktan sonra kendi listelerinizi oluşturabilir veya Github üzerinde paylaşılan farklı listeleri de yükleyip kullanabilirsiniz.

Pi-hole blacklist
Pi-hole blacklist

Aşağıdaki pencerede ise kullanmak istediğimiz ip protokolünü seçmemizi istiyor. Şu anda Türkiye’de ipv6 desteklenmiyor o yüzünden sadece ipv4 seçeneğini işaretleyebilirsiniz.

İp protokolleri
İp protokolleri

Pi-hole sunucusunun statik adresi.

Pi-hole sunucusunun statik adresi
Pi-hole sunucusunun statik adresi

Aşağıdaki ayarları tercihinize göre değiştirebilirsiniz, ancak ilk penceredeki admin web arayüzünü mutlaka kurun(işaretli bırakın). Ben bu ayarları olduğu gibi bıraktım.

Pi-hole admin web arayüzü kurulum ekranı
Pi-hole admin web arayüzü kurulum ekranı
Pi-hole kurulum ekranı
Pi-hole kurulum ekranı
Pi-hole kurulum ekranı
Pi-hole kurulum ekranı
Pi-hole kurulum ekranı
Pi-hole kurulum ekranı

Kurulum tamamlandığında web arayüzne giriş yapabilmeniz için bir parola verecek. Bu parolayı not edin. Eğer parolayı değiştirmek isterseniz aşağıdaki komutu kullanabilirsiniz.

pihole -a -p yeniparola

Artık Raspberry Pi cihazınızın ip adresini bilgisayarımızın web tarayıcısına yazarak veya http://pi.hole/admin linkini yazarak Pi-hole uygulamasına erişebilirsiniz.

Pi-Hole giriş ekranı
Pi-Hole giriş ekranı
Pi-Hole index sayfası
Pi-Hole index sayfası

Pi-hole uygulamasını DNS sunucusu olarak kullanabilmek için 3 tane seçeneğimiz.

1. İç ağdaki her cihaza Pi-hole adresini DNS adresi olarak ayarlamak. Bu seçeneği kullanırsanız Pi-hole ile reklamları engellemek istediğiniz her cihaza Pi-hole adresini DNS adresi olarak elle girmeniz gerekiyor.

Pi-hole adresin DNS adresi olarak ayarlama
Pi-hole adresini DNS olarak ayarlama

2. Pi-hole uygulamasını DHCP sunucusu olarak ayarlamak, dns sunucuları Pi-hole yönlendirmek.

Bunu için “settings” -> “DHCP” yolunu izleyin ve DHCP “server enabled” seçeneğini işaretleyin. Pi-hole aşağıda bulunan resimdeki gibi belirlediğiniz aralıktaki ip adreslerini Pi-hole yönlendirir bu sayede modeme bağlanan hiçbir bilgisayara ya da cihaza bir ayar yapmanıza gerek kalmaz. Bu seçeneği kullanacaksanız modeme bağlanan bilgisyarın verdiğiniz aralıkta bir ip adresi almış olması gerekiyor. Aşağıdaki resimdeki görüldüğü gibi dağıtılacak IP adresi aralığı belirleyebilirsiniz.

Pi-hole uygulamasını DHCP sunucusu olarak ayarlama
Pi-hole DHCP server enabled olarak ayarlama

Eğer Pi-hole’ü DHCP sunucusunu kullanmaya karar verdiyseniz modemizin DHCP sunucusu devre dışı bırakın.

Modem arayünde DHCP ayarı
Modem arayünde DHCP ayarı

3. Modemden DNS Sunucusu olarak Pi-hole seçmek. Bu şekildeki bir kullanımda hiçbir cihaza (bilgisayar/telefon …) DNS ayarı yapmanıza gerek kalmaz. Bu ağa bağlanacak tüm cihazlar Pi-hole üzerinden İnternet’e bağlanır.. (Modemlerin kullanıcı ayarları birbirinden farklılık gösterir)

Modem arayünde DHCP ayarı
Modem arayünde DHCP ayarı


Pi-hole birçok komut kullanır, komut satırı arayüzünde kullanabileceğiniz birkaç komut:
Tamamı: https://docs.pi-hole.net/core/pihole-command/

Pi-hole Core Komutları:

# Beyaz listeye alma (Whitelisting):

pihole -w

# Kara listeye alma (Blacklisting):

pihole -b

# Hazır listeleri çevrim içi olarak güncelleme (Gravity):

pihole -g 

# Düzenli ifade (Regex):

pihole -regex

# Hata ayıklayıcı (Debugger):

pihole debug

# Pi-hole günlüğü (Log Flush):

pihole flush

# Yeniden yapılandırma (Reconfigure):

pihole reconfigure

# Günlük izleme (Tail):

pihole tail

# Yönetici (Admin):

pihole -a

# Güncelleme (Update):

pihole updatePihole / pihole pihole -up

# Version:

pihole version / pihole -v -c

# Kurulumu kaldırma (Uninstall):

pihole uninstall

# Durum (Status):

pihole status

# Etkinletirme & devre dışı bırakma (Enable & Disable):

pihole enable

# DNS yeniden başlatma (Restart DNS):

pihole restartdns

# Gerçek zamanlı istatistik konsol panosu (Chronometer):

pihole -c -e

Pi-hole Web Komutları:

# Parola (Password):

pihole -a password secretpassword

# Sıcaklık birimi (Temperature Unit):

pihole -a celsius, pihole -a fahrenheit, pihole -a kelvin fahrenheit, pihole -a kelvin

# Ana Bilgisayar Kaydı (Host Record):

pihole -a hostrecord

# E-posta adresi (Email Address):

pihole -a email admin@domain.com

# Arayüz (Interface):

pihole -a interface local

DNSCrypt-Proxy Kurulumu

DNSCrypt-Proxy, anonimleştirilmiş şifrelenmiş DNS protokollerini destekleyen esnek bir DNS proxydir.
Ben bu yazıyı yazarken en güncel sürümü “2.0.45” idi.
Kuruluma başlamadan önce şu adresten en güncel versiyonu kontrol edebilirsiniz, kurulumu Raspberry Pi cihazına yapacağımız için linux-arm sürümünü seçmelisiniz.
https://github.com/DNSCrypt/dnscrypt-proxy/releases

Kurulum için aşağıdaki adamları sırasıyla uygulayın.

cd /opt
sudo wget https://github.com/DNSCrypt/dnscrypt-proxy/releases/download/2.0.45/dnscrypt-proxy-linux_arm-2.0.45.tar.gz
sudo tar xzvf dnscrypt-proxy-linux_arm-2.0.45.tar.gz
cd linux-arm
sudo cp example-dnscrypt-proxy.toml dnscrypt-proxy.toml
sudo nano dnscrypt-proxy.toml

dnscrypt-proxy.toml dosyasındaki ayarları aşağıdaki gibi değiştirin.

53 numaralı port Pi-hole tarafından kullanıldığı için listen_addresses satırındaki portu 5300 olarak değiştirin.

listen_addresses = \['127.0.0.1:5300']
require_dnssec = true
cache = false

Aşağısaki komutlar yardımıyla ayarları kurun ve çalıştırın.\

sudo ./dnscrypt-proxy -service install
sudo ./dnscrypt-proxy -service start
sudo setcap cap_net_bind_service=+pe dnscrypt-proxy

Daha sonra Raspberry Pi’yi statik bir IP adresi için yapılandırmalıyız. Bu işlem için aşağıdaki komutu girin:

sudo nano /etc/dhcpcd.conf

static domain_name_servers yazan satırı aşağıdaki gibi değiştirin.\

static domain_name_servers=127.0.0.1
static domain_name_servers
static domain_name_servers

Pi-hole ile oturum açın, ayarlardan DNS’e gidin. (settings -> DNS)
Tüm Upstream DNS Servers seçeneklerini kaldırın.

Upstream DNS Servers
Upstream DNS Servers

Custom 1’e (IPv4) 127.0.0.1#5300 girin ve kutuyu işaretleyin ve değişiklikleri kaydedin.

Custom (IPv4) Upstream DNS Servers
Custom (IPv4) Upstream DNS Servers

Raspberry Pi’nizi yeniden başlatın.

sudo reboot

Tüm DNS sorgularının düzgün çalıştığını ve Pi-hole’un bazı istekleri engellediğini doğrulayın. Aşağıdaki komutu çalıştırdığınızda ‘iadsdk.apple.com’ engelli bir adres olduğu için 0.0.0.0 döndermelidir.

nslookup iadsdk.apple.com 

Eğer DNSCrypt-Proxy başarılı bir şekilde çalışıyorsa aşağıdaki gibi bir sonuç döndermelidir.

DNSCrypt-Proxy test
DNSCrypt-Proxy test