Gerçek kaynağı bulmak için DNS sorgusunu adım adım izleyin
İtilen bir çözümleyici adresi, çözümleyicinin hangi kaynağı göreceğini belirlemez. İstemciyi, ileticiyi ve alan sunucuyu izleyin, sonra yolu yazın.
Bir istemciye çözümleyici adresi vermek, sorguların nereye gönderileceğini belirler, çözümleyicinin hangi kaynağı göreceğini değil. Yönlendirme, iletme ve çeviri iki uç arasında sırayla devreye girer. Kaynak soruları için bir el kitabı, sorguyu adım adım izler ve her gözlemcinin gerçekte ne gördüğünü kaydeder. Sıra önemlidir, çünkü gözlemden önce yapılan bir iddia ancak daha iyi biçimlendirilmiş bir tahmindir.
Kanıt toplamadan önce düzeni yazın
Dört yer bir DNS kaynağı hakkında size bir şey söyleyebilir ve hepsi aynı şeyi söylemez. İstemci çekirdeği hangi kaynağı kullanacağını bilir, iletici yukarıya ne gönderdiğini bilir, çeviri yapan aygıt neyi yeniden yazdığını bilir ve alan çözümleyici neyin geldiğini bilir. Bir şey toplamadan önce bunlardan hangilerine gerçekten ulaşabildiğinizi yazın.
| Observation point | What it can prove | What it cannot prove | How to read it |
|---|---|---|---|
| client kernel | which source address it would use for that resolver | anything a device in between rewrote | ip route get against the resolver address |
| forwarder | that it sent an upstream query, and from which source | what the client originally asked for | its own log and its cache state |
| translating device | that a source was rewritten, and to what | whether the query was legitimate | NAT policy and its counters |
| receiving resolver | the address that actually arrived | which client behind that address asked | a scoped capture on port 53 |
Beklentinizi de yazın, kullanımda olduğunu düşündüğünüz çözümleyici dahil. Bölünmüş bir yol, sorguyu bambaşka bir yere gönderebilir ve bir önbellek yukarıya hiçbir alışveriş olmadan yanıt verebilir, bu yüzden yalnızca bellekte tutulan bir varsayım ilk sürprizi atlatamaz. Bildirilen tasarımı ve gözlenen yolu aynı notun ayrı sütunlarında tutun; ikisi uyuşmadığında, peşine düşmeye değer soruyu bulmuşsunuzdur.
Sorguyu gerçekte hangi sürecin gönderdiğini denetleyin
İstemciden başlayın: çözümleyici adresini, sorgu adını ve saati kaydedin, sonra hangi sürecin gönderdiğini doğrulayın. Aşağıdaki ilk satır UDP soketini tutan süreci adlandırır ve bu, başlığın vaat ettiği denetimdir. Bu süreç sistem çözümleyicisi yerine bir tarayıcı yardımcısı ya da kapsayıcı çalışma ortamıysa, izin geri kalanı kimsenin istemediği bir yolu anlatır.
ss -tunp 'dport = :53'
dig @10.20.30.53 host.corp.example +noall +answer
ip route get 10.20.30.53
Birden çok arayüzü olan bir makinede, başka bir yere bakmadan önce çekirdeğin o hedef için hangi kaynak adresini seçtiğini bulun. Bu, yolun tamamen sizin denetiminizde olduğu son noktadır ve çözümleyicinin bildirdiğiyle karşılaştıracağınız değerdir. Uyuşmazlık, aradaki bir şeyin paketi yeniden yazdığının ya da iki farklı sorgunun gönderildiğinin işaretidir.
Test adlarını içeride tutun, çünkü genel bir çözümleyiciye gönderilen iç ad, iç yolu hakkında hiçbir şey kanıtlamaz ve yayımlamanız gerekmeyen bir adı yayımlar. Güvenli DNS açık bir tarayıcı o soket listesinde hiç görünmez ve bu yokluk kendi başına yanıttır.
İletici ikinci, ayrı bir sorgu yapar
İletici bir alışverişi ikiye çevirir. Aşağıdan gelen istek ulaşır, sonra iletici kendi sorgusunu seçtiği bir adresten yukarıya gönderir. Yukarıdaki çözümleyicinin ne gördüğünü istemci değil, onun yapılandırması belirler.
dnsmasq el kitabı tam bu nedenle okunmaya değer: bir ileticinin yukarı akış sunucularını nasıl seçtiğini ve dinleme tarafını nasıl bağladığını belgeler ve bu düzenlemede hiçbir şey istemci kaynağını yukarıya taşımaz. Bu yüzden bir ağ geçidi adresi gösteren çözümleyici günlüğü normaldir, arıza kanıtı değildir. Yokluğu da aynı kolaylıkla yanlış okunur, çünkü önbellek isabeti yukarıya hiçbir sorgu üretmez ve hiç gelmemiş bir sorguyla tıpatıp aynı görünür. İki sonuçtan birini çıkarmadan önce ileticinin yapılandırmasını ve önbellek durumunu okuyun. İki soru, bakılacak iki yer.
Kaynağı alan çözümleyicide okuyun
Bunu kesinleştiren tek gözlem sunucu tarafında alınır. İstemcinin arayüz listesinden çıkarılan her şey, çözümleyici gerçekte neyin geldiğini bildirene kadar varsayım olarak kalır.
tcpdump -ni any port 53 and host 10.20.30.53
Çözümleyici makinesinde yakalayın, yakalamayı kısa ve sınırlı tutun ve politikasının izin verdiği yerde saklayın. Gözlenen kaynak çevrilmiş bir adres ise, sıradaki soru çeviriyi hangi aygıtın yaptığı ve politikasının amaçlanan olup olmadığıdır. Bir yakalama neyin geldiğini yanıtlar; politikanın neden izin verdiğini açıklamaz. Gözlemciyi ve adımı nota yazın, çünkü bir ağ geçidi hakkındaki gizlilik iddiası o adım hakkındadır, tüm yol hakkında değil.
Bulgunuzu adres olarak değil, yol olarak yazın
İstemciyi, çözümleyiciyi, varsa ileticiyi, her adımda gözlenen kaynağı ve onu yöneten politikayı kaydedin. Böyle bir kayıt, çoğu gelecek soruyu yeni bir yakalama olmadan yanıtlar. Zincir olarak çizin, çünkü bir adres listesi hangi adımın hangisini ürettiğini saklar.
Çizime tarihi, istemci sürümünü ve yapılandırma revizyonunu ekleyin, böylece sonraki bir okuyucu hâlâ geçerli olup olmadığını söyleyebilsin. Taşıma kaynağını hizmetin işlediği her şeyden ayırın, çünkü bir ağ geçidi adresi görmek başka neyin saklandığı hakkında hiçbir şey söylemez. Çözümleyicinin konumu da hangi istemcinin sorduğu hakkında hiçbir şey söylemez. Bu iddiaları ayrı tutmak, sonucu incelemede savunulabilir kılan şeydir.