Rehber Raspberry Pi ile Adguard + Unbound + Cloudflare DoH ve DoT birlikte çalıştırma

Durum
Mesaj gönderimine kapalı.

Herkese selamlar.

Bu rehberimde Raspberry Pi üzerinde Adguard Home'u Unbound ve tercihinize göre Cloudflare DoH veya DoT ile birlikte çalıştırmayı anlatacağım.


İşletim sisteminin yüklü olduğunu ve terminal üzerinden bağlantı kurduğunuzu varsayacağım, eğer bu konularda eksik iseniz bu konudan öğrenebilirsiniz: Rehber: Pi-Hole Kurulumu | Modeme bağlı tüm cihazlardaki reklamları engellemek




Adguard Home nedir?:
Kısaca, Raspberry Pi cihazınızı, tüm ağınızda reklam engelleyen bir DNS sunucusuna çeviren bir yazılım. Pi-Hole ile aynı mantıktadır. Google gibi, Cloudflare gibi bir DNS sunucusu hazırlayıp, o DNS sunucusunu modemdeki tüm cihazların kullanmasını sağlayarak bunu yapıyoruz. Bu yazılım, kurulumunu yapacağımız DNS'i kullanan tüm cihazlardaki DNS isteklerine bakar, eğer reklam ise engeller; değil ise diğer DNS sunucularına yönlendirir. Bu şekilde reklam daha intenetinizi sömürüp cihazınıza indirilmeden engeller, veri tasarrufu ve haliyle internet yükünde azalma sağlar.


DNS over HTTPS nedir? Ne işe yarar?:
HTTPS üzerinden DNS (DoH), isteği bir HTTPS uç noktasına göndererek DNS isteklerinizin güvenliğini sağlamanın bir yöntemidir. Bu, DNS isteğinizin gerçek bir DNS paketi yerine normal HTTPS (şifrelenmiş) web trafiği olarak göründüğü anlamına gelir. DNS, şifrelenmemiş bir açık metin protokolüdür, yani istemci ile DNS sunucusu arasındaki herhangi bir gizli dinleyicinin (Türk Telekom :p ) veya makinenin DNS talebinin içeriğini görebileceği anlamına gelir. HTTPS üzerinden DNS, DNS'ye güvenlik ekler ve HTTPS (web'i şifrelemek için kullanılan protokol) kullanarak DNS sorgularını şifreler.


Unbound nedir?:
Bunu tam olarak cevaplamak için DNS'in çalışma mantığını anlatmam gerekiyor ancak bunu yapmadan anlatmaya çalışacağım.

Unbound, doğrulayan, özyinelemeli, önbelleğe alınan bir DNS çözümleyicidir. Adguard ya da Pi-Hole, internette girdiğiniz bir web sitesinin IP adresini bilmiyorsa, bu bilgi için bir DNS sunucusuna, mesela Cloudflare DNS'e: "Hop! Kimdir bu?" şeklinde sorması gerekir.

Unbound, girdiğiniz bir web sitesinin ip adresini "bulacak" kendi DNS sunucunuzdur. Başka bir DNS'e sormaz, bunu kendisi yapar. Bu şekilde daha fazla gizlilik sağlar. Ayrıca Unbound, istemcilerin iletişimlerini şifrelemelerine olanak tanıyan TLS üzerinden DNS ve HTTPS üzerinden DNS'yi destekler.





Adguard kurulumu

Terminal üzerinde şu komutu girelim:

Kod:
curl -sSL https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh

  1. Kurulum tamamlandığında, Adguard ana sayfanızın bağlantısını gösteren bir pencere açılır, oradan ara yüze girin.
  2. Listen interface seçeneklerinde Eth0 seçin.
  3. Kullanıcı adı ve şifre ayarlayın.
  4. Ayarlar - Genel ayarlar kısmında filtreleri güncelleme sıklığı ayarını 12 saat yapın.


Cihazlarınızın Adguard'ı kullanmasını sağlamak

Bunun için Raspberry Pi cihazınızın IP adresini DNS ayarlarınıza girmeniz gerekiyor. Benim için bu: 192.168.1.68
Tek tek cihazlardan DNS ayarlayabilirsiniz, modem ayarlarınızdan DNS adresini seçebilirsiniz, ya da DNS seçeneği yok ise DHCP seçeneğini kullanabilirsiniz.



Unbound kurulumu

Terminal üzerinden şu komutları girelim:

Kod:
sudo apt install unbound -y

Kod:
wget -O root.hints https://www.internic.net/domain/named.root && sudo mv root.hints /var/lib/unbound/

6 ayda bir bunun güncellenmesi lazım, bunu otomatikleştirelim:

Kod:
sudo crontab -e

Komutunu girdikten sonra size bir editör soracak, 1 seçip devam edelim. Çıkan boş ekran şunu yapıştıralım:

Kod:
1 0 1 */6 * wget -O root.hints https://www.internic.net/domain/named.root
2 0 1 */6 * sudo mv root.hints /var/lib/unbound/

Daha sonrasında Ctrl+X ve Y komutları ile kaydedelim.



Cloudflared Kurulumu

Terminal üzerinden sırasıyla şu komutları girelim:

Kod:
wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-arm.tgz && tar -xvzf cloudflared-stable-linux-arm.tgz

Kod:
sudo cp cloudflared /usr/local/bin/ && sudo chmod +x /usr/local/bin/cloudflared

Kod:
sudo useradd -s /usr/sbin/nologin -r -M cloudflared

Kod:
cd /etc/default && sudo wget https://raw.githubusercontent.com/trinib/Adguard-Wireguard-Unbound-Cloudflare/main/cloudflared

Kod:
sudo chown cloudflared:cloudflared /etc/default/cloudflared && sudo chown cloudflared:cloudflared /usr/local/bin/cloudflared

Kod:
cd /lib/systemd/system && sudo wget https://raw.githubusercontent.com/trinib/Adguard-Wireguard-Unbound-Cloudflare/main/cloudflared.service

Kod:
sudo systemctl enable cloudflared && sudo systemctl start cloudflared

Cloudflared çalıştığını doğrulamak için şu komutu kullanabiliriz:

Kod:
sudo systemctl status cloudflared

Active (running) gördüğünüzde sorun yok demektir. Kontrol ettikten sonra Ctrl + C kombinasyonuyla terminale geri dönebilirsiniz.

Cloudflared otomatik güncelleştirmesini ayarlayalım:

Kod:
sudo crontab -e

Açılan metin belgesi görünümündeki bölümün en altına şu komutu ekleyin:

Kod:
0 3 * * 5 sudo cloudflared update && sudo systemctl restart cloudflared

Daha sonrasında Ctrl+X ve Y komutunu verip bu ekranı kapatalım.



Cloudflared ve Unbound'ı Adguard ile birlikte çalışacak şekilde ayarlamak

Terminal üzerinden şu komutu girelim:

Kod:
sudo nano /etc/unbound/unbound.conf.d/unbound.conf

Şu metni yapıştırın:

Kod:
server:



    # The  verbosity  number, level 0 means no verbosity, only errors.

    # Level 1 gives operational information. Level  2  gives  detailed

    # operational  information. Level 3 gives query level information,

    # output per query.  Level 4 gives  algorithm  level  information.

    # Level 5 logs client identification for cache misses.  Default is

    # level 1.

    verbosity: 0

 

    interface: 127.0.0.1

    port: 53

    do-ip4: yes

    do-udp: yes

    do-tcp: yes

 

    # May be set to yes if you have IPv6 connectivity

    do-ip6: no



    # You want to leave this to no unless you have *native* IPv6. With 6to4 and

    # Terredo tunnels your web browser should favor IPv4 for the same reasons

    prefer-ip6: no

 

    # Use this only when you downloaded the list of primary root servers!

    # Read  the  root  hints from this file. Make sure to

    # update root.hints evry 5-6 months.

    root-hints: "/var/lib/unbound/root.hints"

 

    # Trust glue only if it is within the servers authority

    harden-glue: yes

 

    # Ignore very large queries.

    harden-large-queries: yes

 

    # Require DNSSEC data for trust-anchored zones, if such data is absent, the zone becomes BOGUS

    # If you want to disable DNSSEC, set harden-dnssec stripped: no

    harden-dnssec-stripped: yes

 

    # Number of bytes size to advertise as the EDNS reassembly buffer

    # size. This is the value put into  datagrams over UDP towards

    # peers. The actual buffer size is determined by msg-buffer-size

    # (both for TCP and UDP).

    edns-buffer-size: 1232

 

    # Rotates RRSet order in response (the pseudo-random

    # number is taken from Ensure privacy of local IP

    # ranges the query ID, for speed and thread safety).

    # private-address: 192.168.0.0/16

    rrset-roundrobin: yes

 

    # Time to live minimum for RRsets and messages in the cache. If the minimum

    # kicks in, the data is cached for longer than the domain owner intended,

    # and thus less queries are made to look up the data. Zero makes sure the

    # data in the cache is as the domain owner intended, higher values,

    # especially more than an hour or so, can lead to trouble as the data in

    # the cache does not match up with the actual data anymore

    cache-min-ttl: 300

    cache-max-ttl: 86400

 

    # Have unbound attempt to serve old responses from cache with a TTL of 0 in

    # the response without waiting for the actual resolution to finish. The

    # actual resolution answer ends up in the cache later on.

    serve-expired: yes

 

    # Harden against algorithm downgrade when multiple algorithms are

    # advertised in the DS record.

    harden-algo-downgrade: yes

 

    # Ignore very small EDNS buffer sizes from queries.

    harden-short-bufsize: yes

 

    # Refuse id.server and hostname.bind queries

    hide-identity: yes

 

    # Report this identity rather than the hostname of the server.

    identity: "Server"

 

    # Refuse version.server and version.bind queries

    hide-version: yes

 

    # Prevent the unbound server from forking into the background as a daemon

    do-daemonize: no

 

    # Number  of  bytes size of the aggressive negative cache.

    neg-cache-size: 4M

 

    # Send minimum amount of information to upstream servers to enhance privacy

    qname-minimisation: yes

 

    # Deny queries of type ANY with an empty response.

    # Works only on version 1.8 and above

    deny-any: yes



    # Do no insert authority/additional sections into response messages when

    # those sections are not required. This reduces response size

    # significantly, and may avoid TCP fallback for some responses. This may

    # cause a slight speedup

    minimal-responses: yes

 

    # Perform prefetching of close to expired message cache entries

    # This only applies to domains that have been frequently queried

    # This flag updates the cached domains

    prefetch: yes

 

    # Fetch the DNSKEYs earlier in the validation process, when a DS record is

    # encountered. This lowers the latency of requests at the expense of little

    # more CPU usage.

    prefetch-key: yes

 

    # One thread should be sufficient, can be increased on beefy machines. In reality for

    # most users running on small networks or on a single machine, it should be unnecessary

    # to seek performance enhancement by increasing num-threads above 1.

    num-threads: 1



    # more cache memory. rrset-cache-size should twice what msg-cache-size is.

    msg-cache-size: 50m

    rrset-cache-size: 100m

 

    # Faster UDP with multithreading (only on Linux).

    so-reuseport: yes

 

    # Ensure kernel buffer is large enough to not lose messages in traffix spikes

    so-rcvbuf: 4m

    so-sndbuf: 4m

 

    # Set the total number of unwanted replies to keep track of in every thread.

    # When it reaches the threshold, a defensive action of clearing the rrset

    # and message caches is taken, hopefully flushing away any poison.

    # Unbound suggests a value of 10 million.

    unwanted-reply-threshold: 100000

 

    # Minimize logs

    # Do not print one line per query to the log

    log-queries: no

    # Do not print one line per reply to the log

    log-replies: no

    # Do not print log lines that say why queries return SERVFAIL to clients

    log-servfail: no

    # Do not print log lines to inform about local zone actions

    log-local-actions: no

    # Do not print log lines that say why queries return SERVFAIL to clients

    logfile: /dev/null

 

    # Ensure privacy of local IP ranges

    private-address: 192.168.0.0/16

    private-address: 169.254.0.0/16

    private-address: 172.16.0.0/12

    private-address: 10.0.0.0/8

    private-address: fd00::/8

    private-address: fe80::/10

 

# CLOUDFLARE SETTINGS

server:

    tls-cert-bundle: /etc/ssl/certs/ca-certificates.crt

forward-zone:

  name: "."

  forward-tls-upstream: yes

  # Cloudflare DNS

  forward-addr: 2606:4700:4700::1111@853#cloudflare-dns.com

  forward-addr: 1.1.1.1@853#cloudflare-dns.com

  forward-addr: 2606:4700:4700::1001@853#cloudflare-dns.com

  forward-addr: 1.0.0.1@853#cloudflare-dns.com

Metini yapıştırdıktan sonra yine Ctrl+X ve Y komutunu verip bu ekranı kapatalım.

Adguard arayüzüne dönüpAyarlar - DNS kısmında ÜST DNS sunucusu ve DNS Önyükleme sunucuları kısmında ne varsa silelim.

TLS (DoT) üzerinden DNS için, hem "Üst" hem de "Önyükleme" sunucu alanlarına 127.0.0.1:53 ekleyin.
HTTPS(DoH) üzerinden DNS için hem "Üst" hem de "Önyükleme" sunucu alanlarına 127.0.0.1:5053 ekleyin.

İkisini birden kullanmak da mümkün, bunun için iki bölüme de iki ip adresini de yazmanız, ve En hızlı IP adresi seçeneğini seçmeniz gerekiyor.
adguard dns.png



Ayarları uyguladıktan sonra,

DNS Önbelleği Yapılandırması bölümünde Önbellek boyutunu 0 olarak ayarlayıp kaydedin. Bu ayarı zaten Unbound halledeceği için gereksiz yük yapmaya gerek yok.
adguard dns önbelleği.png


Son olarak Unbound'u şu komut ile yeniden başlatalım:

Kod:
sudo service unbound restart





Her şeyin çalıştığını doğrulamak:

Adguard Home ara yüzünde yeşil renkte AÇIK yazısını görmelisiniz.
adguard yeşil.png

1.1.1.1 — the Internet’s Fastest, Privacy-First DNS Resolver sitesinde 1.1.1.1 karşısında YES ve ayarınıza göre DoH veya DoT karşısında YES görmelisiniz.
cloudflare debug info.png

DNS leak test. Free check Sızma çıkmaması lazım.
dnsleaknot.png

Cloudflare ESNI Checker | Cloudflare Secure DNS yeşil olmalı.
cloudflare secure dns.png

DNSSEC Resolver Test Size okay işareti yapmalı :p
dnssecokay.png
 
Son düzenleyen: Moderatör:
Evet, maalesef Technopat üzerinde konu güncellemesi yapılamıyor bir zaman geçtikten sonra. Buradan bakabilirsiniz:

@Dümdüz Çok faydalı bir konu. Yerinizde olsam yeni bir konu açar ve konu linkini bu konuda son yazacağım mesaja eklerdim. Türkçe kaynak alternatif yok bu sebeple insanlığa faydalı bir konu ve kesinlikle devamını getirmelisiniz.

Ancak 1.1.1.3 için dot kullanımı yok sanırım? Şu sayfada ilgili kısıma family.cloudflare-dns.com yapıştırın deniyor. Set up Cloudflare 1.1.1.1 resolver · Cloudflare 1.1.1.1 docs

Saçmalamak pahasına sorayım. Unbound kurmak istemiyorum. Sadece cloudflared lurmak için ne yapmalıyım? IPV6 desteğim yok günümüzdeki kullanım için IPV4 ayarları tanımlamak istiyorum. Şöyle bir varyasyon mümkün müdür?

unbound.conf içeriğinde son satır... (unbound kurmadan unbound.conf eklemek mümkün mü)

forward-addr: 1.1.1.3@853#family.cloudflare-dns.com
forward-addr: 1.0.0.3@853#family.cloudflare-dns.com
forward-addr: family.cloudflare-dns.com@853#family.cloudflare-dns.com
 
@Dümdüz Çok faydalı bir konu. Yerinizde olsam yeni bir konu açar ve konu linkini bu konuda son yazacağım mesaja eklerdim. Türkçe kaynak alternatif yok bu sebeple insanlığa faydalı bir konu ve kesinlikle devamını getirmelisiniz.
Maalesef iş dolayısıyla zamanım olmuyor.

Ancak 1.1.1.3 için dot kullanımı yok sanırım? Şu sayfada ilgili kısma family.cloudflare-dns.com yapıştırın deniyor. Set up Cloudflare 1.1.1.1 resolver · Cloudflare 1.1.1.1 docs
security.cloudflare-dns.com 75 -> 1.1.1.2, 1.0.0.2, 2606:4700:4700::1112, 2606:4700:4700::1002

family.cloudflare-dns.com 54 -> 1.1.1.3, 1.0.0.3, 2606:4700:4700::1113, 2606:4700:4700::1003

Daha ayrıntılı bir filtreleme ile DoH - DoT bağlantısı istiyorsanız incelemenizi öneririm:

Saçmalamak pahasına sorayım. Unbound kurmak istemiyorum. Sadece cloudflared lurmak için ne yapmalıyım?
"Saçmalaya saçmalaya" öğreniyor herkes, ne demek :)
Pi-Hole ile Cloudflared kurulumunu anlatmıştım, değişen tek şey Adguard - PiHole arayüzü. Bu konudan Adguard kurulur, geri kalanı bu konuda:


unbound.conf içeriğinde son satır... (unbound kurmadan unbound.conf eklemek mümkün mü)
Unbound.conf adı üstünde, "Unbound conf.iguration" yani "Unbound yapılandırması" Unbound kurulmadığı takdirde bu konfigürasyon dosyasının hiçbir işlevi kalmayacaktır. Kurulsa dahi bu konfigürasyona gerek kalmayacaktır, boşu boşuna kurulmuş olur.
 
Bu anlatım kurulumunda herşeyi doğru yapmama rağmen sayfa sonundaki testleri geçemiyorum. Defalarda kaldırıp yeniden yükledim herşeyi doğru yaptığıma eminim. Sıfırdan sistem yükleyip baştan yaptım gene testleri geçemiyor. Adguard- unbound-cloudflare kurulu.
DNS leak test. Cloudflare ESNI Checker | DNSSEC Resolver Test Bu testlerin hiçbirinden geçemiyor.
 
Bu anlatım kurulumunda herşeyi doğru yapmama rağmen sayfa sonundaki testleri geçemiyorum. Defalarda kaldırıp yeniden yükledim herşeyi doğru yaptığıma eminim. Sıfırdan sistem yükleyip baştan yaptım gene testleri geçemiyor. Adguard- unbound-cloudflare kurulu.
DNS leak test. Cloudflare ESNI Checker | DNSSEC Resolver Test Bu testlerin hiçbirinden geçemiyor.
Bu anlatım güncelliğini yitirdi, konunun en üstünde olan Github linkinden faydalanabilirsiniz.
 
Maalesef iş dolayısıyla zamanım olmuyor.


security.cloudflare-dns.com 75 -> 1.1.1.2, 1.0.0.2, 2606:4700:4700::1112, 2606:4700:4700::1002

family.cloudflare-dns.com 54 -> 1.1.1.3, 1.0.0.3, 2606:4700:4700::1113, 2606:4700:4700::1003

Daha ayrıntılı bir filtreleme ile DoH - DoT bağlantısı istiyorsanız incelemenizi öneririm:


"Saçmalaya saçmalaya" öğreniyor herkes, ne demek :)
Pi-Hole ile Cloudflared kurulumunu anlatmıştım, değişen tek şey Adguard - PiHole arayüzü. Bu konudan Adguard kurulur, geri kalanı bu konuda:



Unbound.conf adı üstünde, "Unbound conf.iguration" yani "Unbound yapılandırması" Unbound kurulmadığı takdirde bu konfigürasyon dosyasının hiçbir işlevi kalmayacaktır. Kurulsa dahi bu konfigürasyona gerek kalmayacaktır, boşu boşuna kurulmuş olur.
Sadece Doh kurdum. Herşey çok güzel, tek bir sorun var, sadece modem kapanıp açıldığında yada sadece modem yeniden başlatıldığında, (ancak pi cihazı full aktif) cloudflared yeniden bağlantı sağlayamıyor.

sudo systemctl restart cloudflared

Pi konsola şu komutu vermeden internet aktif olmuyor.

Ne düşünüyorsunuz, var mıdır çözümü?
 
sudo nano /etc/systemd/system/cloudflared.service
Restart=on-failure
Komutu bu dizine eklemeniz çözmeli.
Teşekkür ederim @Dümdüz dediğin gibi çözdü, unbound + dot + doh adguard home da mükemmel çalışıyor. Tek bir sorun kaldı hocam. İlk konudaki DNS Leak testi olumsuz sonuçlanıyor. Sonuç: "Dns queries are not protected"

Bu önemli midir? Nette sorun yok, düzeltilebilir bir durumsa düzeltmek isterim. Ne düşünüyorsunuz?
 
Teşekkür ederim @Dümdüz dediğin gibi çözdü, unbound + dot + doh adguard home da mükemmel çalışıyor. Tek bir sorun kaldı hocam. İlk konudaki DNS Leak testi olumsuz sonuçlanıyor. Sonuç: "Dns queries are not protected"

Bu önemli midir? Nette sorun yok, düzeltilebilir bir durumsa düzeltmek isterim. Ne düşünüyorsunuz?
Modeminize girdiğiniz başka bir DNS adresi varsa ondan kaynaklı olabilir.
 
DNS Leak testi leak dışında tüm testleri geçmeyi başardım

Teşekkür ederim @Dümdüz dediğin gibi çözdü, unbound + dot + doh adguard home da mükemmel çalışıyor. Tek bir sorun kaldı hocam. İlk konudaki DNS Leak testi olumsuz sonuçlanıyor. Sonuç: "Dns queries are not protected"

Bu önemli midir? Nette sorun yok, düzeltilebilir bir durumsa düzeltmek isterim. Ne düşünüyorsunuz?
Sorun raspberry bullseye ile alakalıymış
 
Son düzenleme:
Modeminize girdiğiniz başka bir DNS adresi varsa ondan kaynaklı olabilir.

@Dümdüz Kontrol etmediğim yer kalmadı. Çözemedim bir türlü. Ancak internette sorun yok çok güzel çalışıyor.

scr4646464.png


Unbound status
scr58.png


Cloudflared status
scr59.png


1.1.1.1/help
scr55.png
 
Son düzenleme:
Durum
Mesaj gönderimine kapalı.

Technopat Haberler

Geri
Yukarı