Yazılara geri dön
Yazı

systemd-resolved ile DNS-over-TLS ve DNSSEC Yapılandırma Kılavuzu

Linux sistemlerinde systemd-resolved kullanarak şifreli DNS ve DNSSEC doğrulamasını adım adım etkinleştirin. Güvenli isim çözümlemesi için yapılandırma ve test komutları.

SistemsystemdDNSDNS-over-TLSDNSSECnetworking

Daha önce birkaç kamuya açık sunucudaki DNS trafiğini denetlerken, UDP/53 üzerinden açık sorguların üst düzey çözümleyicilere sızıntı gösterdiğini gördüm. Bu durumda sistem seviyesinde isim çözümlemesini sıkılaştırmak için systemd-resolved kullanmaya karar verdim. Çoğu modern dağıtımda yerleşik olan bu stub çözümleyici, DNS-over-TLS (DoT) ve DNSSEC doğrulamasını varsayılan olarak destekliyor.

systemd-resolved'in aktif olup olmadığını kontrol et

Öncelikle hizmetin çalışıp çalışmadığını doğrula. Ubuntu/Debian gibi dağıtımlarda genellikle varsayılan olarak etkindir, ancak minimale kurulumlar veya özel yapılandırmalarda devre dışı bırakılmış olabilir.

systemctl is-active systemd-resolved

Eğer inactive dönerse, hizmeti başlat ve otomatik başlatmayı etkinleştir:

sudo systemctl start systemd-resolved
sudo systemctl enable systemd-resolved

Ardından durumu kontrol et:

sudo systemctl status systemd-resolved

127.0.0.53:53 adresini dinlediğini görmelisin — bu yerel stub çözümleyici adresi.

DNS-over-TLS sunucularını yapılandır

/etc/systemd/resolved.conf dosyasını düzenleyerek üst düzey DoT çözümleyicilerini tanımlayorum. Cloudflare ve Quad9 gibi gizlilik politikaları ve DNSSEC desteği sunan hizmetleri tercih ediyorum.

[Resolve]
DNS=1.1.1.1#cloudflare-dns.com 9.9.9.9#dns.quad9.net
FallbackDNS=8.8.8.8 8.8.4.4
DNSOverTLS=yes
DNSSEC=yes

#hostname sözdizimi, systemd-resolved'ın TLS sertifikasını bu isim karşılığında doğrulamasını söyler — bu da DoT kimlik doğrulamasının çalışma prensibi. Bu olmadan şifreleme olur ama sunucu kimliği doğrulanmaz.

Değişikliği kaydettikten sonra hizmeti yeniden başlat:

sudo systemctl restart systemd-resolved

DNS-over-TLS'in çalıştığını doğrula

Mevcut DNS ayarlarını sorgulamak ve çözümlemeyi test etmek için resolvectl komutunu kullan:

resolvectl status

Şunlara bak:

  • Current DNS Server: 1.1.1.1, 9.9.9.9
  • DNSSEC Supported: yes
  • DNS-over-TLS: yes

Sonra bir alan adıyla test yap:

resolvectl query example.com

DNSSEC doğrulaması geçerse, ad bayrağı (kimliği doğrulanmış veri) olan güvenli bir yanıt görmeni gerekiyor.

Bilinen hatalı bir alan adıyla DNSSEC'i doğrula

DNSSEC'in gerçekten doğrulama yaptığını onaylamak için imzası bozuk bir alan adıyla test yap:

resolvectl query dnssec-failed.org

Bu komut SERVFAIL döndürmeli, çünkü bölge doğrulamadan geçemiyor. Eğer bir yanıt alırsan, DNSSEC çalışmıyor demektir.

İsteğe bağlı: Çözümleyici çakışmaları için yerel yedek kullan

Bazı araçlar (Docker veya VPN istemcileri gibi) /etc/resolv.conf dosyasını üzerine yazabiliyor. Çakışmayı önlemek için bu sembolik bağın systemd-resolved'ın stub dosyasını göstermesini sağla:

ls -l /etc/resolv.conf

Bu bağın /run/systemd/resolve/stub-resolv.conf işaret etmesi gerekiyor. İşaret etmiyorsa düzelte:

sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

tcpdump ile DNS trafiğini izle

Sorguların gerçekten TLS üzerinden mi gittiğini kontrol etmek için port 853'te paket yakala:

sudo tcpdump -i any port 853 -v

TLS el sıkışması ve şifreli DNS sorgularını görmeni beklemeliyim. Açık DNS sorgularının port 53 üzerinden hosttan çıkışı görmemeli, açıkça izin vermediğin sürece.

Yaygın pułaplar

  • Yerel DNS geçersiz kılmaları yoksayılıyor: /etc/hosts veya yerel dnsmasq kullanıyorsan, systemd-resolved bunları atlayabilir. DNSStubListener ayarını değiştir veya resolved.conf içinde ListenDNS kullanarak başka bir arayüze bağla.
  • Yeniden başlatmada DNS bozuluyor: Genellikle /etc/resolv.conf üzeri yazma işlemi nedeniyle olur. NetworkManager dispatcher komut dosyası veya systemd path birimiyle bu sembolik bağın korunmasını sağlayabilirsin.
  • Cloudflare zaman aşımı: Nadiren 1.1.1.1#cloudflare-dns.com zaman aşımı yapar. Güvenilir bir yedek olarak 9.9.9.9#dns.quad9.net'i tut.

Son düşünceler

systemd-resolved'ı DoT ve DNSSEC için kullanmak, ek proxy veya ajans eklemeden DNS'yi şifrelemek ve doğrulamak için en basit yöntemlerden biri. Hafif, işletim sistemiyle entegre edilmiş ve başsız sunucular, konteynerler ve sanal makinelerde iyi çalışıyor. Bu yapılandırmayı ayıktaki düğümler ve iç altyapımda aylarırdan beri kullanıyorum — sızdırmazlık, doğrulama bypass'i yok ve journalctl üzerinden net denetim izleri elde ediyorum.

Güvenilir olmayan ağlara açık Linux sistemleri yönetiyorsan, bu temel seviye bir önlem olmalı. Hizmetler arası iletişimi güvence altına alma konusunda daha fazla bilgi için, [Linux tc VoIP DSCP işaretleme](https://furkanikkan.com/urun/linux-tc-ile-voip-icin-dscp-ef-isaretleme-ve-oncelik-kuyrugu-yapilandirmasi-91) adlı önceki yazıma bakabilirsin.


Kapak görseli: USDAgov · PDM (Openverse / kamu malı) · https://www.flickr.com/photos/41284017@N08/52288964396