DNS over HTTPS Nedir? DNS Sorguları Nasıl Şifrelenir?

Geleneksel DNS protokolü verileri şifrelemeden gönderdiği için güvenlik zafiyeti oluşturur. DoH yapısı bu verileri HTTPS tüneli içine alarak uçtan uca koruma sağlar. Şifreli iletim sayesinde internet trafiği dış tehditlere karşı kapalı bir yapıya kavuşur.

DoH (DNS over HTTPS) Nedir?

İnternet altyapısında kullanılan standart DNS sorguları korumasız bir yapıya sahiptir. DoH bu talepleri HTTPS trafiğiyle birleştirerek güvenli bir iletişim kanalı oluşturur. Şifrelenmiş bu yapı sayesinde servis sağlayıcılar ve üçüncü taraflar DNS trafiğini teknik olarak ayrıştıramaz.

DoH Neden Önemli?

DNS sorgu trafiğinin şifrelenmesi verilerin dışarıdan değiştirilme riskini ortadan kaldırır. Bu teknoloji bağlantı performansını koruyarak DNS yanıtlarının daha hızlı iletilmesine olanak tanır. Port 443 kullanımı trafiğin ayırt edilmesini ve engellenmesini teknik olarak güçleştirir. Sistem performansını doğrulamak amacıyla iPerf üzerinden ağ hızı ve paket iletim kalitesi ve ağ genişliği denetlenebilir.

DNS Protokolleri Karşılaştırması

Sistem performansını ve gizliliği etkileyen protokol farklılıkları aşağıda tablolaştırılmıştır. Hangi yöntemin size hitap ettiğini bu özet verilerle anlayabilirsiniz.

ÖzellikGeleneksel DNSDNS over TLS (DoT)DNS over HTTPS (DoH)
Port53 (UDP/TCP)853 (TCP)443 (TCP/HTTP)
ŞifrelemeYokTLSTLS (HTTPS üzerinden)
GörünürlükTamamen açıkŞifreli (ama porttan belli)Normal web trafiğiyle aynı
EngellenebilirlikÇok KolayKolay (Port bazlı)Çok Zor
PerformansDüşük GecikmeTLS yükü varHTTP/2-3 ve TLS yükü var

BIND9 Ve DoH Servis Ayarları

BIND9 yaygın kullanılan bir DNS sunucu yazılımıdır. DoH desteğini aktif etmek için sunucunuzda libnghttp2 kütüphanesinin kurulu olması gerekir. Bu bileşen HTTPS üzerinden gelen sorguların doğru şekilde işlenmesini ve protokol uyumluluğunu sağlar.

BIND9 Paketlerini Yükleyelim

Sistemi güncelleyip gerekli araçları kuralım

sudo apt update && sudo apt install bind9 bind9utils

SSL Sertifikası Alımı

HTTPS üzerinden hizmet verebilmek için geçerli bir sertifikaya ihtiyacımız var. Let’s Encrypt ile hızlıca ücretsiz sertifika oluşturabiliriz

sudo certbot certonly --standalone -d alanadiniz.com

Yapılandırma Dosyasını Düzenleyelim

named.conf.options dosyasını düzenleyerek TLS ve HTTP parametrelerini eklememiz gerekiyor.

sudo nano /etc/bind/named.conf.options

Dosya içeriğini şu şekilde yapılandıralım.

tls local-doh-tls { 
    cert-file "/etc/letsencrypt/live/alanadiniz.com/fullchain.pem"; 
    key-file "/etc/letsencrypt/live/alanadiniz.com/privkey.pem"; 
};

http doh-endpoint { 
    endpoints { "/dns-query"; }; 
};

options {
    directory "/var/cache/bind";
    dnssec-validation auto;
    auth-nxdomain no;
    listen-on-v6 { any; };

    forwarders {
        1.1.1.1;
        8.8.8.8;
    };

    # DoH Dinleyicisi
    listen-on port 443 tls local-doh-tls http doh-endpoint { any; };
};

Local Yapılandırma Dosyasını Düzenleyelim

Gerekli tanımlamaları yapmak için şu dosyayı açalım

sudo nano /etc/bind/named.conf.local

İçerisine şu satırları ekleyelim.

zone "alanadiniz.com" {
    type master;
    file "/etc/bind/db.alanadiniz.com";
};

Zone Dosyasını Oluşturalım

Alan adı kayıtlarını tutacağımız dosyayı hazırlayalım

sudo nano /etc/bind/db.alanadiniz.com

Ardından şu örnek verileri dosyaya aktaralım

$TTL    604800
@       IN      SOA     ns.alanadiniz.com. admin.alanadiniz.com. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.alanadiniz.com.
ns      IN      A       SUNUCU_IP_ADRESI
@       IN      A       SUNUCU_IP_ADRESI

BIND9 Servisini Yeniden Başlatalım

Tüm yapılandırmayı tamamladıktan sonra değişikliklerin aktif olması için servisi baştan başlatalım

sudo systemctl restart bind9

Reverse Proxy Katmanında DoH Ve DoT

DNS servislerini dış tehditlerden korumak için proxy katmanı üzerinden yönlendirme yapılabilir. Nginx 443 portundaki HTTPS trafiğini deşifre edip yerel DNS birimine aktarırken Caddy tarafında sertifika işlemleri otomatik yürütülür. Bu yapıda özellikle port 853 üzerindeki DoT trafiğini aktarmak için özel eklenti yapılandırmaları tercih edilir.

{
    layer4 {
        :853 {
            @dot tls sni dns.example.com
            route @dot {
                proxy localhost:53
            }
        }
    }
}

Sık Sorulan Sorular

DoH ile DoT ağda nasıl ayırt edilir?

DoT 853 portunu kullanır. Bu port kolayca tespit edilip engellenebilir. DoH ise 443 portu üzerinden çalışır. Web trafiği gibi göründüğü için ayrıştırılması zordur.

BIND9 önüne neden Nginx veya Caddy koymalıyım?

Eğer sunucuda zaten bir reverse proxy varsa, DoH trafiğini 443 üzerinden karşılayıp BIND9’a aktarmak daha temiz bir yapı oluşturur.

DoH yeterli mi yoksa VPN gerekir mi?

ISS alan adını göremez. Ancak bağlandığınız IP adresini görebilir. Yani hedef sunucu bilgisi tamamen gizlenmez.

Yorum yapın