Dünyanın en detaylı ücretsiz FDE + DevOps kütüphanesi: 140 üzeri ders, 70 üzeri lab ve 80 uzun yazı, İngilizce ve Türkçe. Öğrenmeye başla →

DevOps Foundations · Modül 2: Ağ, DNS, HTTP ve TLS

DNS Çözümlemesi Gerçekte Nasıl Çalışır

Bağlanamıyorum olaylarının yarısı ağ değil isimdir. Bu ders çözümlemeyi gözlenebilir kılar; DNS suçlanan şey olmaktan çıkar, kontrol edilen şey olur.

10 dk okuma

Kazanımlar

  • Makine adını uygulamadan çözümleyiciye ve yetkili yanıta kadar izlemek
  • İki komutla DNS arızasını uygulama portu arızasından ayırmak
  • TTL'nin neyi kontrol ettiğini ve neyi etmediğini açıklamak
  • /etc/hosts ve nsswitch sırasının etkisini testten önce tahmin etmek

Neden önemli

Dağıtım çıktı, sağlık kontrolleri düşüyor, üç mühendis veritabanının taşınıp taşınmadığını tartışıyor. Bir dig tartışmayı bitirir: isim artık kimsenin sahip olmadığı adrese çözümleniyor. DNS olayları ağ olayı gibi hissettirir, çünkü hatalı yanıtın aşağısındaki her araç aynı şekilde düşer. Düzeltme her zaman tartışmanın yukarısındadır: ismi elle çözümle, uygulamanın kullandığıyla karşılaştır; olay tek kayda iner.

Kavramlar

Çözümleme zincirdir ve her halka bağımsız yalan söyleyebilir. Uygulama sistem çözümleyiciye sorar; o /etc/nsswitch.conf sırasına bakar: çoğu Linux sisteminde önce dosyalar (/etc/hosts), sonra DNS. Yani altı ay önceki hata ayıklamadan kalma unutulmuş satır, global DNS'in tamamını yener ve tek makinede tek ismi karartırken diğer makineler çalışır. Akıllıca her şeyden önce hosts dosyasını kontrol et.

DNS ayağı kendisi aşağı yürür: kökten TLD'ye ve yetkili sunucuya; yapılandırılmış çözümleyicin (/etc/resolv.conf) yürür ve yanıtı TTL süresince önbelleğe alır. dig +trace yürüyüşü gösterir; yalın dig önbellekli yanıtı ve hangi sunucunun verdiğini gösterir. Olaylarda iki kayıt öne çıkar: adres için A/AAAA ve bir arama ile bir TTL daha ekleyen takma ad CNAME. Silinmiş hedefe giden CNAME, ağ arızasıyla birebir aynı görünen hatayla hiçbir şeye çözümlenemez.

TTL önbelleği kontrol eder; ekiplerin sandığı gibi yayılma hızını değil. TTL'yi 60 saniyeye indirmek çözümleyicilere her dakika yeniden sormalarını söyler ama eski yanıtı tutan çözümleyici süresi dolana kadar saklar; bazı ara kutular düşük TTL'leri tamamen görmez. Kayıt değişikliklerini yeni TTL'ye değil eski TTL'ye göre planla: geçiş, sandığından eski-TTL saniye sonra tamamlanır ve bu pencerede iki yanıt meşru şekilde bir arada yaşar.

Uygulamalı örnek

Servis 5432 portunda db.internal adresine ulaşamıyor. İsim mi port mu?

$ getent hosts db.internal 10.20.6.10 $ dig +short db.internal 10.20.9.99 $ ss -tn dst 10.20.6.10 2>/dev/null | head -3 (görünür bağlantı girişimi yok)

Beklenen okuma: sistem çözümleyici (önce dosyalar) .6.10 derken doğrudan DNS .9.99 diyor. Ya kayıt değişti ve hosts dosyası eski adresi sabitliyor ya da tersi. İkisi de isim sorunudur, port sorunu değil: .6.10'a hiç paket yöneltilmemeli; orada port test etmek hayaleti test etmektir. İsim katmanını düzelt (sabiti güncelle ya da kaldır, TTL'yi bekle), iki araç anlaşana kadar yeniden çözümle, sonra portu tam bir kez test et. L04 labı bu ayrımı refleks olana kadar tekrarlatır.

Yaygın yanlış hamle

Uygulamayı doğrudan IP kullanacak şekilde değiştirmek. Bugünü düzeltir, her gelecek taşımayı bozar: yük devretme, geçiş ve ölçekleme ismin sabit tanıtıcı, adresin harcanabilir olduğu varsayımına dayanır. Sabit IP'ler ayrıca TLS makine adı doğrulamasını bozar; sıradaki olayı 4. derste üretir. İsimleri isim katmanında onar; uygulama isimde kalır.

Lab ve sonraki adım

L04 labı aynı anda yanlış kayıt ve yanlış port verir; düzeltmeden önce iki komutlu ayrımı ister. Sırada 3. ders: paketi adresin ötesine izler; HTTP anlambilimi ve arada duran proksiler.

Mini kontrol

4 soruluk isteğe bağlı öz kontrol. Yanıtlar cihazından çıkmaz, saklanmaz ve hiçbir değerlendirmeye sayılmaz.

Ders geri bildirimi

Henüz yayında geri bildirim yok.

Geri bildirim yazmak için giriş yap ve dersi tamamla.

Kaynaklar

Alıştırma

/etc/hosts dosyana 127.0.0.1 gösteren sahte isim ekle; getent ve dig'in anlaşmazlığını göster; sonra satırı kaldırıp anlaşmayı göster. Üç çıktıyı ve her aracın hangi kaynağa baktığını tek cümleyle yaz.

Geçme kriterleri

Hosts girdisi gösterilmiş, iki araçla anlaşmazlık kanıtlanmış, kaldırınca anlaşma geri gelmiş; tek cümle dosyalar ile DNS'i doğru eşleştirmiş.

İlerlemeni kaydetmek için giriş yapÜcretsiz hesap: yalnızca ders ilerlemen ve quiz sonuçların saklanır.