DoH ve DoT Teknolojilerinin Karşılaştırmalı Analizi

Ağ protokolü katmanından DNS over HTTPS ve DNS over TLS’in teknik uygulamasını, performans farklarını ve kullanım senaryolarını derinlemesine analiz eder

DNS over HTTPS (DoH) ve DNS over TLS (DoT), DNS sorgularının güvenli aktarımını farklı protokol yığınlarıyla gerçekleştiren iki yaygın şifreli DNS aktarım yöntemidir. DoT standardı RFC 7858 tarafından tanımlanmışken, DoH DNS Queries over HTTPS (DoH) standardıyla belirlenmiştir. Bu iki teknoloji arasındaki temel farkı anlamak için ağ protokolü katman yapısından başlayarak analiz etmek gerekir.

Ağ Protokolü Katman Yapısı

Modern ağ protokolleri katmanlı bir tasarım benimser ve her katman farklı işlevler sunar. DNS bir uygulama katmanı protokolü (L7) olarak, belirli bir aktarım yöntemine bağlı değildir ve çeşitli taşıma protokolleri üzerinde çalışabilir.

Uygulama katmanı (L7); HTTP/1.1, HTTP/2, HTTP/3, FTP ve DNS gibi protokolleri içerir. HTTP/3’ün semantiği hala uygulama katmanındadır, ancak taşıma katmanı olarak QUIC kullanır. Güvenlik katmanı, uygulama katmanı ile taşıma katmanı arasında yer alır ve öncelikle TLS ve türevlerini içerir. TLS genellikle TCP üzerinde çalışır, örneğin HTTPS ve DoT gibi. DTLS, TLS’in veri gram sürümüdür ve UDP üzerinde çalışabilir. QUIC protokolü biraz daha özeldir ve TLS 1.3 handshake’ini ve anahtar türetmesini doğrudan protokolün içine entegre eder.

QUIC, L4.5 katman protokolü olarak görülebilir; UDP’yi temel alarak geleneksel taşıma katmanı yeteneklerini sağlar. Taşıma katmanı (L4); TCP, UDP ve QUIC’i içerir. Mühendislik uygulama açısından QUIC UDP’ye dayanmasına rağmen, güvenilirlik, tıkanıklık kontrolü, çoklu kullanım ve şifreli handshake gibi özellikleriyle bağımsız bir taşıma katmanı protokolü olarak kabul edilir. Ağ katmanı (L3), paketlerin yönlendirilmesi ve iletilmesinden sorumlu IP protokolünü (IPv4/IPv6) kullanır. Veri bağlantı katmanı (L2); Ethernet ve Wi-Fi (802.11) gibi teknolojileri içerir.

TLS bir şifreleme yöntemi olarak uygulama ve taşıma katmanları arasında çalışır. TLS şifrelemesi DoT’tan çıkarılırsa, DoT özünde DNS over TCP’ye dönüşür. Bu katmanlı tasarım, şifrelemeyi zorunlu bir kısıtlama yerine protokolün isteğe bağlı bir parçası haline getirir.

Plain DNS’in Özellikleri

En sıradan DNS’e Plain DNS denir ve UDP veya TCP üzerinde çalışabilir. UDP, bağlantı kurulumunun basit olması ve ilk sorgunun hızlı olması nedeniyle en yaygın taşıma yöntemidir. Ancak UDP’nin zayıf noktası güvenilmez olması ve paketlerin ağ içinde kolayca kaybolmasıdır. TCP, handshake sayısı daha fazla olsa da ilk bağlantı hızı UDP’den yaklaşık %30 daha yavaştır, ancak uzun bağlantı kurulduktan sonra yanıt hızı UDP ile aynıdır.

İSS’ler (İnternet Servis Sağlayıcıları), ağ yoğun olduğunda cihaz üzerindeki baskıyı hafifletmek için UDP paketlerini droplamayı (düşürmeyi) seçebilir. Bazı operatörlerde UDP paket kaybının şiddetli olduğu bölgelerde, DNS sorguları için TCP kullanılması daha avantajlı olabilir. TCP yeniden iletim mekanizmasına sahiptir ve paket kaybı olsa bile verinin güvenli bir şekilde varmasını sağlar; oysa UDP paketlerini droplamak küçük operatör cihazları üzerindeki yükü azaltmaz, aksine yeniden denemeler (retry) nedeniyle daha fazla belirsizlik getirir.

Uygulama Katmanı İç İçe Geçmesi

DNS ve HTTP her ikisi de uygulama katmanı protokolleridir; DoH özünde bir uygulama katmanı protokolünün başka bir uygulama katmanı protokolünü kapsamasıdır. DoH zorunlu olarak DNS over HTTPS olmak zorunda değildir; sıradan HTTP kullanmak da mümkündür, sadece şifrelenmemiş DoH açık metin isteğidir ve Plain DNS’e göre hiçbir avantajı yoktur, sadece çok az sayıda özel senaryoda kullanılır.

Teorik olarak DNS herhangi bir uygulama katmanı protokolü üzerinde taşınabilir, örneğin DNS over FTP de uygulanabilir, yeterince ilgili sunucu ve istemci geliştirilsin. Bu esneklik, uygulama katmanı protokolü kombinasyonlarının olanlığını gösterir.

flowchart TD
    subgraph L7["Uygulama Katmanı"]
        A[DNS]
        B[HTTP]
        C[FTP]
    end
    
    subgraph Security["Güvenlik Katmanı"]
        D[TLS]
        E[DTLS]
    end
    
    subgraph Transport["Taşıma Katmanı"]
        F[TCP]
        G[UDP]
        H[QUIC]
    end
    
    subgraph L3["Ağ Katmanı"]
        I[IP]
    end
    
    subgraph L2["Veri Bağlantı Katmanı"]
        J[Ethernet]
        K[WiFi]
    end
    
    A --> D
    B --> D
    C --> D
    D --> F
    E --> G
    H --> G
    F --> I
    G --> I
    H --> I
    I --> J
    I --> K
    
    style A fill:#e1f5ff
    style B fill:#e1f5ff
    style C fill:#e1f5ff
    style D fill:#fff4e1
    style E fill:#fff4e1
    style F fill:#ffe1e1
    style G fill:#ffe1e1
    style H fill:#e1ffe1

Taşıma Katmanı İç İçe Geçmesi

QUIC protokolü UDP’ye dayanırken, aynı zamanda taşıma katmanında bağlantı odaklı bir hizmet sağlar. QUIC; TCP’nin sahip olduğu bağlantı odaklılık, tıkanıklık kontrolü, yeniden iletim, akış kontrolü, parçalama ve birleştirme gibi taşıma katmanı yeteneklerini gerçekleştirir. TCP’ye kıyasla QUIC daha düşük gecikme süresine sahiptir. UDP’ye kıyasla QUIC daha gelişmiş ve güvenilirdir.

Protokol Kombinasyon İlişkileri

Uygulama katmanı ve taşıma katmanı arasında zorunlu bir kısıtlama ilişkisi yoktur, şifreleme eklenebilir de eklenmeyebilir de. HTTP TCP üzerinde çalışabilir, QUIC üzerinde de çalışabilir. DNS TCP üzerinde, UDP üzerinde ve QUIC üzerinde çalışabilir.

Bu olanlıklara dayanarak, aşağıdaki kombinasyon ilişkilerini özetleyebiliriz. Plain DNS, UDP veya TCP artı DNS protokolüdür. HTTP/2, TCP artı TLS 1.2 veya TLS 1.3 artı HTTP protokolüdür. HTTP/3, QUIC artı TLS 1.3 artı HTTP protokolüdür.

DoH (DNS over HTTPS), HTTP/2 veya HTTP/3 artı DNS protokolüdür. DoT (DNS over TLS), TCP artı TLS 1.2 veya TLS 1.3 artı DNS protokolüdür. DoQ (DNS over QUIC), QUIC artı TLS 1.3 artı DNS protokolüdür.

flowchart LR
    subgraph DoT["DoT DNS over TLS"]
        direction LR
        T1[TCP] --> T2[TLS]
        T2 --> T3[DNS]
    end
    
    subgraph DoH2["DoH over HTTP/2"]
        direction LR
        H1[TCP] --> H2[TLS]
        H2 --> H3[HTTP/2]
        H3 --> H4[DNS]
    end
    
    subgraph DoH3["DoH over HTTP/3"]
        direction LR
        Q1[QUIC] --> Q2[TLS 1.3]
        Q2 --> Q3[HTTP/3]
        Q3 --> Q4[DNS]
    end
    
    subgraph DoQ["DoQ DNS over QUIC"]
        direction LR
        D1[QUIC] --> D2[TLS 1.3]
        D2 --> D3[DNS]
    end
    
    style T1 fill:#e3f2fd
    style T2 fill:#fff3e0
    style H1 fill:#e3f2fd
    style H2 fill:#fff3e0
    style Q1 fill:#e8f5e9
    style Q2 fill:#fff3e0
    style D1 fill:#e8f5e9
    style D2 fill:#fff3e0

Performans ve Uyumluluk Analizi

Protokol katman yapısını anladıktan sonra, DoH ve DoT’nin artılarını ve eksilerini analiz edebiliriz.

TCP ve QUIC karşılaştırması, operatörlerin gerçek ağ ortamı göz önüne alınarak讨论 edilmelidir. QUIC daha yeni bir protokoldür ve bazı eski ağ sorunlarını çözer, ancak yine de UDP’ye dayanır. Ağ gecikmesi açısından bakıldığında, QUIC tabanlı protokollerin gecikmesi TCP’den yaklaşık %35 daha düşüktür, bu nedenle DNS over HTTP/3 ve DoQ (DNS over QUIC) teorik olarak DNS over HTTP/2 ve DoT’ten daha iyi performans gösterebilir.

Ancak gerçek ağ ortamında paket kaybı nedeniyle yeniden iletim gecikmesi sorunları vardır. Operatörler ağ yoğun olduğunda UDP paketlerini droplamayı seçerler, QUIC de UDP olarak tanınacak ve droplanacaktır. QUIC yeniden iletimi desteklese de, yeniden iletimin getirdiği gecikme QUIC’in gerçek gecikmesini TCP’den daha yüksek yapabilir.

Gizlilik ve güvenlik açısından, DoH ve DoT her ikisi de şifreli trafiğidir ve çalınamaz veya değiştirilemez. DoT’in tanındıktan sonra engellenmesi sorunuyla ilgili olarak, bu esasen Android sisteminin şifreli DNS ayarlarının varsayılan olarak 853 portunu kullanmasından kaynaklanır ve bu da 853 portunu hassas bir port haline getirir. DoT kendisi yaygın bir sıradan şifreli trafiktir ve DNS’e özel trafik olarak tanınmaz. Aslında herhangi bir port DoT hizmeti sağlayabilir; bu Android için üçüncü taraf bir uygulama gerektirir, iOS ise herhangi bir porttaki DoT’ı yerel olarak destekler.

Genişletilebilirlik, DoH’nin önemli bir avantajıdır. HTTP ile kapsüllenmiş DNS ve Plain DNS’e kıyasla, HTTP belirgin şekilde daha iyi genişletilebilirliğe sahiptir. Hizmet sağlayıcıları 443 portunda sayısız hizmet sunabilir, bunların arasında DoH bulunur ve işlevleri kolayca genişletebilir. DoT ve DoQ genellikle ayrıcalıklı portlara ihtiyaç duyar ve genişletme yeteneği tamamen Plain DNS’e dayanır. Bu, hizmet sağlayıcı perspektifinden bir farktır; sıradan kullanıcılar için henüz belirgin bir algı yoktur.

DNS isteklerinin işlenme hızı açısından, HTTP’nin işlenme hızı Plain DNS’ten birkaç CPU saat döngüsü daha yavaş olabilir, ancak bu fark gerçek kullanımda ihmal edilebilir düzeydedir. Uyumluluk açısından, hizmet sağlayıcılar için DoH’nin genişletilebilir olması nedeniyle daha ana akım olacaktır.

Mevcut ana akım platformların şifreli DNS desteği durumları farklıdır. Chromium çekirdekli tarayıcılar DoH’ı destekler. Windows 11 sistemi DoH’ı yerel olarak destekler. Android 8 ve üzeri sistem sürümleri DoT’ı yerel olarak destekler. Android 11 ve üzeri sistem sürümleri DoT ve DoH’ı yerel olarak destekler. macOS sistemi DoT ve DoH’ı yerel olarak destekler. iOS sistemi DoT ve DoH’ı yerel olarak destekler.

Gerçek Seçim Önerileri

Sıradan kullanıcılar için, DoH kullanmak DoT kullanmaktan daha sorunsuzdur. DoH, DoT’ye kıyasla çoğu zaman daha iyi, az zamanda ise benzer gecikme sunar. DoH, DoQ’ya kıyasla çoğu zaman benzer gecikme sunar, az zamanda ise daha iyi gecikme sağlar.

Bu sonucun önkoşulu, hizmet sağlayıcının DNS over HTTP/3 hizmeti sunmasıdır. Hizmet sağlayıcı HTTP/3 sunmazsa, DoH ve DoT arasında belirgin bir fark yoktur. DoH, ağ kalitesi iyi olduğunda otomatik olarak DoH/3 kullanarak daha düşük gecikme elde eder, ağ kalitesi kötü olduğunda otomatik olarak HTTP/2’ye düşer. Bu uyarlanabilir yeteneğin hizmet sağlayıcı tarafından gerçekleştirilmesi gerekir, ancak ana akım hizmet sağlayıcıları genellikle bunu gerçekleştirmiştir.

NullPrivate‘i denemenizi öneririm; DoT ve DoH/3’ü destekler, yerel olarak reklam engelleme ve DNS trafiğini bölme (ayırma) özelliklerine sahiptir. Kendi kendine dağıtım (self-hosting) yapmanız gerekiyorsa, onların açık kaynak kütüphanesini kullanabilirsiniz.

Ağ protokolü seçimi, operatör ağ kalitesi, hizmet sağlayıcı destek durumu, cihaz uyumluluğu gibi birden çok faktörü综合考虑 (dengeli olarak) göz önünde bulundurmayı gerektirir. Çoğu kullanıcı için, DoH performans, uyumluluk ve gizlilik koruması arasında dengeli sağlayan mükemmel bir seçenektir.