WEB / WEB-03.02
DNS records ve aliasing
DNS record’ın type’ı RDATA’nın ne anlama geldiğini belirler. Aynı name için A/AAAA, bir CNAME zinciri ve NS/MX/TXT/PTR rollerini tek sentetik record table’da oku.
1. Core · Mekanizma
Hareket olmadan bütün senaryoları oku
A via two CNAMEs
- Typed question hazır
Bu scene authority seçimini sağlanmış kabul eder; root/TLD path’ini tekrarlamaz. Loop case bilinçli invalid local varyanttır.
- Typed consumer
- docs.example.org. / A / IN · result yok
- Resolver
- Authority/cache context seçildi
- Authority + local RR data
- Local record table · query yok
- Question resolver’a ulaştı
Name/type/class resolver context’inde. Her name-valued record aynı resolution action’ı değildir.
- Typed consumer
- docs.example.org. / A / IN · result yok
- Resolver
- docs.example.org. / A / IN · query alındı
- Authority + local RR data
- Local record table · query yok
- Authority selection local
Delegation/server address bilgisi başlangıç koşuludur; lookup network transfer değildir.
- Typed consumer
- docs.example.org. / A / IN · result yok
- Resolver
- Selected authority example.org. · docs.example.org. / A / IN
- Authority + local RR data
- Local record table · query yok
- Authority typed query aldı
Selected query authority’ye ulaştı. Şimdi local records type-aware olarak okunabilir.
- Typed consumer
- docs.example.org. / A / IN · result yok
- Resolver
- Selected authority example.org. · docs.example.org. / A / IN
- Authority + local RR data
- docs.example.org. / A / IN · query alındı
- İlk CNAME local lookup
docs owner alias’tır; RDATA edge target name’dir. Same-zone target lookup için yeni packet gerekmez.
- Typed consumer
- docs.example.org. / A / IN · result yok
- Resolver
- Selected authority example.org. · docs.example.org. / A / IN
- Authority + local RR data
- docs CNAME → edge.example.org. · path [docs]
- İkinci CNAME local lookup
Seçilen normal record edge’i notes’a götürür. Network arrow çizilmez.
- Typed consumer
- docs.example.org. / A / IN · result yok
- Resolver
- Selected authority example.org. · docs.example.org. / A / IN
- Authority + local RR data
- edge CNAME → notes.example.org. · path [docs,edge]
- Terminal A RRset local bulundu
Bilinen finite table’da notes A records terminal data’dır; RRset iki address içerir.
- Typed consumer
- docs.example.org. / A / IN · result yok
- Resolver
- Selected authority example.org. · docs.example.org. / A / IN
- Authority + local RR data
- CNAME docs→edge→notes + A [198.51.100.200,198.51.100.201]
- Typed result resolver’a ulaştı
Response/teaching outcome summary şimdi resolver’da; loop varyantı gerçek DNS packet/error representation değildir.
- Typed consumer
- docs.example.org. / A / IN · result yok
- Resolver
- Authority summary alındı · CNAME docs→edge→notes + A [198.51.100.200,198.51.100.201]
- Authority + local RR data
- CNAME docs→edge→notes + A [198.51.100.200,198.51.100.201]
- Result interpretation local
QTYPE’ya uygun data ile alias path ayrı tutulur. Records HTTP Location, user permission veya mail delivery result değildir.
- Typed consumer
- docs.example.org. / A / IN · result yok
- Resolver
- Question için final result hazır · A
- Authority + local RR data
- CNAME docs→edge→notes + A [198.51.100.200,198.51.100.201]
- Result client’a ulaştı
Delivery tamam; address/name data’sı sonraki application sonucu değildir.
- Typed consumer
- Typed result alındı · CNAME docs→edge→notes + A [198.51.100.200,198.51.100.201]
- Resolver
- Question için final result hazır · A
- Authority + local RR data
- CNAME docs→edge→notes + A [198.51.100.200,198.51.100.201]
Direct AAAA RRset
- Typed question hazır
Bu scene authority seçimini sağlanmış kabul eder; root/TLD path’ini tekrarlamaz. Loop case bilinçli invalid local varyanttır.
- Typed consumer
- notes.example.org. / AAAA / IN · result yok
- Resolver
- Authority/cache context seçildi
- Authority + local RR data
- Local record table · query yok
- Question resolver’a ulaştı
Name/type/class resolver context’inde. Her name-valued record aynı resolution action’ı değildir.
- Typed consumer
- notes.example.org. / AAAA / IN · result yok
- Resolver
- notes.example.org. / AAAA / IN · query alındı
- Authority + local RR data
- Local record table · query yok
- Authority selection local
Delegation/server address bilgisi başlangıç koşuludur; lookup network transfer değildir.
- Typed consumer
- notes.example.org. / AAAA / IN · result yok
- Resolver
- Selected authority example.org. · notes.example.org. / AAAA / IN
- Authority + local RR data
- Local record table · query yok
- Authority typed query aldı
Selected query authority’ye ulaştı. Şimdi local records type-aware olarak okunabilir.
- Typed consumer
- notes.example.org. / AAAA / IN · result yok
- Resolver
- Selected authority example.org. · notes.example.org. / AAAA / IN
- Authority + local RR data
- notes.example.org. / AAAA / IN · query alındı
- Typed records local bulundu
AAAA IPv6 address data’sıdır; DNS transport family’si ayrı. MX case’inde record set preferences’ı taşır, teslim edilmiş mail sonucu vermez.
- Typed consumer
- notes.example.org. / AAAA / IN · result yok
- Resolver
- Selected authority example.org. · notes.example.org. / AAAA / IN
- Authority + local RR data
- AAAA [2001:db8:2::20]
- Typed result resolver’a ulaştı
Response/teaching outcome summary şimdi resolver’da; loop varyantı gerçek DNS packet/error representation değildir.
- Typed consumer
- notes.example.org. / AAAA / IN · result yok
- Resolver
- Authority summary alındı · AAAA [2001:db8:2::20]
- Authority + local RR data
- AAAA [2001:db8:2::20]
- Result interpretation local
QTYPE’ya uygun data ile alias path ayrı tutulur. Records HTTP Location, user permission veya mail delivery result değildir.
- Typed consumer
- notes.example.org. / AAAA / IN · result yok
- Resolver
- Question için final result hazır · AAAA
- Authority + local RR data
- AAAA [2001:db8:2::20]
- Result client’a ulaştı
Delivery tamam; address/name data’sı sonraki application sonucu değildir.
- Typed consumer
- Typed result alındı · AAAA [2001:db8:2::20]
- Resolver
- Question için final result hazır · AAAA
- Authority + local RR data
- AAAA [2001:db8:2::20]
MX preferences
- Typed question hazır
Bu scene authority seçimini sağlanmış kabul eder; root/TLD path’ini tekrarlamaz. Loop case bilinçli invalid local varyanttır.
- Typed consumer
- example.org. / MX / IN · result yok
- Resolver
- Authority/cache context seçildi
- Authority + local RR data
- Local record table · query yok
- Question resolver’a ulaştı
Name/type/class resolver context’inde. Her name-valued record aynı resolution action’ı değildir.
- Typed consumer
- example.org. / MX / IN · result yok
- Resolver
- example.org. / MX / IN · query alındı
- Authority + local RR data
- Local record table · query yok
- Authority selection local
Delegation/server address bilgisi başlangıç koşuludur; lookup network transfer değildir.
- Typed consumer
- example.org. / MX / IN · result yok
- Resolver
- Selected authority example.org. · example.org. / MX / IN
- Authority + local RR data
- Local record table · query yok
- Authority typed query aldı
Selected query authority’ye ulaştı. Şimdi local records type-aware olarak okunabilir.
- Typed consumer
- example.org. / MX / IN · result yok
- Resolver
- Selected authority example.org. · example.org. / MX / IN
- Authority + local RR data
- example.org. / MX / IN · query alındı
- Typed records local bulundu
AAAA IPv6 address data’sıdır; DNS transport family’si ayrı. MX case’inde record set preferences’ı taşır, teslim edilmiş mail sonucu vermez.
- Typed consumer
- example.org. / MX / IN · result yok
- Resolver
- Selected authority example.org. · example.org. / MX / IN
- Authority + local RR data
- MX [10 mail1.example.org.,20 mail2.example.org.]
- Typed result resolver’a ulaştı
Response/teaching outcome summary şimdi resolver’da; loop varyantı gerçek DNS packet/error representation değildir.
- Typed consumer
- example.org. / MX / IN · result yok
- Resolver
- Authority summary alındı · MX [10 mail1.example.org.,20 mail2.example.org.]
- Authority + local RR data
- MX [10 mail1.example.org.,20 mail2.example.org.]
- Result interpretation local
QTYPE’ya uygun data ile alias path ayrı tutulur. Records HTTP Location, user permission veya mail delivery result değildir.
- Typed consumer
- example.org. / MX / IN · result yok
- Resolver
- Question için final result hazır · MX
- Authority + local RR data
- MX [10 mail1.example.org.,20 mail2.example.org.]
- Result client’a ulaştı
Delivery tamam; address/name data’sı sonraki application sonucu değildir.
- Typed consumer
- Typed result alındı · MX [10 mail1.example.org.,20 mail2.example.org.]
- Resolver
- Question için final result hazır · MX
- Authority + local RR data
- MX [10 mail1.example.org.,20 mail2.example.org.]
- Mail preference consumer’da yorumlanır
Daha düşük preference değeri önceliklidir. Bu, record’ın local yorumudur; SMTP connection veya mail gönderimi gösterilmez.
- Typed consumer
- Mail consumer preference: mail1(10) önce mail2(20)
- Resolver
- Question için final result hazır · MX
- Authority + local RR data
- MX [10 mail1.example.org.,20 mail2.example.org.]
Invalid local CNAME loop
- Typed question hazır
Bu scene authority seçimini sağlanmış kabul eder; root/TLD path’ini tekrarlamaz. Loop case bilinçli invalid local varyanttır.
- Typed consumer
- docs.example.org. / A / IN · result yok
- Resolver
- Authority/cache context seçildi
- Authority + local RR data
- Local record table · query yok
- Question resolver’a ulaştı
Name/type/class resolver context’inde. Her name-valued record aynı resolution action’ı değildir.
- Typed consumer
- docs.example.org. / A / IN · result yok
- Resolver
- docs.example.org. / A / IN · query alındı
- Authority + local RR data
- Local record table · query yok
- Authority selection local
Delegation/server address bilgisi başlangıç koşuludur; lookup network transfer değildir.
- Typed consumer
- docs.example.org. / A / IN · result yok
- Resolver
- Selected authority example.org. · docs.example.org. / A / IN
- Authority + local RR data
- Local record table · query yok
- Authority typed query aldı
Selected query authority’ye ulaştı. Şimdi local records type-aware olarak okunabilir.
- Typed consumer
- docs.example.org. / A / IN · result yok
- Resolver
- Selected authority example.org. · docs.example.org. / A / IN
- Authority + local RR data
- docs.example.org. / A / IN · query alındı
- İlk CNAME local lookup
docs owner alias’tır; RDATA edge target name’dir. Same-zone target lookup için yeni packet gerekmez.
- Typed consumer
- docs.example.org. / A / IN · result yok
- Resolver
- Selected authority example.org. · docs.example.org. / A / IN
- Authority + local RR data
- docs CNAME → edge.example.org. · path [docs]
- İkinci CNAME local lookup
Seçilen invalid varyant edge’i docs’a geri götürür. Network arrow çizilmez.
- Typed consumer
- docs.example.org. / A / IN · result yok
- Resolver
- Selected authority example.org. · docs.example.org. / A / IN
- Authority + local RR data
- edge CNAME → docs.example.org. · path [docs,edge]
- Cycle local bulunur
Sonlu table’da aynı owner tekrar görülür; bu bir cycle’dır. Terminal address bulunmaz, gerçek resolver RCODE’u üretilmez.
- Typed consumer
- docs.example.org. / A / IN · result yok
- Resolver
- Selected authority example.org. · docs.example.org. / A / IN
- Authority + local RR data
- Cycle detected · no terminal address
- Typed result resolver’a ulaştı
Response/teaching outcome summary şimdi resolver’da; loop varyantı gerçek DNS packet/error representation değildir.
- Typed consumer
- docs.example.org. / A / IN · result yok
- Resolver
- Authority summary alındı · Cycle detected · no terminal address
- Authority + local RR data
- Cycle detected · no terminal address
- Result interpretation local
QTYPE’ya uygun data ile alias path ayrı tutulur. Records HTTP Location, user permission veya mail delivery result değildir.
- Typed consumer
- docs.example.org. / A / IN · result yok
- Resolver
- Question için final result hazır · A
- Authority + local RR data
- Cycle detected · no terminal address
- Result client’a ulaştı
Delivery tamam; CNAME loop nedeniyle terminal address yok.
- Typed consumer
- Typed result alındı · Cycle detected · no terminal address
- Resolver
- Question için final result hazır · A
- Authority + local RR data
- Cycle detected · no terminal address
ROLLER · STATE · VERİ AKIŞI
Record’ın owner’ı ile data’sı aynı field değil
Resource Record, owner name’e ait type/class/TTL/RDATA bilgisini taşır. Owner “hangi name için?” sorusuna, type “nasıl data?” sorusuna cevap verir. Aynı owner, class ve type’a ait records bir RRset olarak ele alınır. notes.example.org. A RRset’inde iki IPv4 address bulunması bu iki kaydın iki ayrı domain olduğu anlamına gelmez.
Örnek kayıtlar, master-file configuration’ı yerine alanları ayrı bir JSON table’da gösterir. TTL 120 saniye bu kaydın cache sınırıdır; application timeout veya packet hop count değildir. RDATA her zaman text string değildir: A address, CNAME domain name, MX preference ve exchange, TXT ise string list taşır. Type’a bakmadan bütün RDATA’yı IP olarak okumak anlamı bozar.
A ve AAAA: address family, transport’tan ayrı
A RR, IN class’ında 32-bit IPv4 address; AAAA RR ise bir 128-bit IPv6 address taşır. Fixture notes.example.org için A 198.51.100.200 ve .201, AAAA 2001:db8:2::20 verir. A ve AAAA farklı RRsets’tir; yalnız A answer almak AAAA’nın var/yok olduğunu belirlemez.
AAAA query IPv4 transport ile, A query IPv6 transport ile taşınabilir: sorgunun data family’si DNS transport family’si değildir. Birden fazla answer’ın seçimi veya sırası application/client davranışını ayrıca gerektirir; fixture “ilk IP kesin kullanılır” kuralı koymaz. Bu records address data’sıdır; service listening, route ve TLS/user permission ayrı doğrulanır.
CNAME owner alias’tır, RDATA target name’dir
docs.example.org. CNAME edge.example.org. kaydında docs alias owner, edge target’tır. İkinci CNAME edge’i notes.example.org’a götürür. A sorusu için name server/resolver target’ı takip edip notes’un A RRset’ini elde edebilir; target aynı zone’da ise lookup local olabilir. Her alias link’i mutlaka yeni network exchange’i değildir.
Standard CNAME aynı owner’da normal A/AAAA/MX/TXT data’sıyla birlikte bulunmaz; ilgili DNSSEC metadata istisnaları bu temel table’ın kapsamı dışındadır. Zone apex’in required SOA/NS records’ını standard CNAME ile aynı owner’a koymak bu nedenle uygun değildir. Provider’ın ALIAS/flattening gibi ürüne özel davranışını wire CNAME diye adlandırmadan vendor contract’ıyla ayır.
Alias zincirinin sonucu ile HTTP action’ı ayrı
CNAME DNS name indirection’ıdır; URL scheme/path/port veya HTTP status/location field’ı taşımaz. docs name’i için address elde etmek browser’ın bir HTTP redirect response aldığı anlamına gelmez. Sonraki application request’in name/identity koşulları kendi katmanında devam eder.
Geçerli bir chain sonunda address data’sına ulaşır. Target yoksa alias owner mevcut olsa bile negative sonuç target name hakkında olabilir. Loop örneğinde docs→edge→docs zinciri başlangıçtaki name’e döner; aynı kayıtları sonsuza kadar izlemek çözüm üretmez. Sonlu local table’da bu tekrar saptanır. Buradan gerçek resolver’ın error code’u, retry davranışı veya canlı query sonucu çıkarılamaz.
NS, MX, TXT, PTR ve SOA farklı işleri gösterir
NS, zone/name authority için server name’i gösterir; server address’i ayrı A/AAAA data’sından bulunur. MX, mail exchange name’i ve preference taşır: 10, 20’den daha tercih edilir; bu uptime veya mail teslim garantisi değildir. MX ve NS target name’leri standard’a göre alias olmamalıdır. Fixture ns1/mail1/mail2 için direct A records verir.
TXT bir veya daha fazla character-string tutar; text’in anlamını onu tüketen protocol/application belirler. course=atlas verification secret veya security policy değildir. PTR reverse namespace’te name pointer’dır: 198.51.100.200 için owner 200.100.51.198.in-addr.arpa. olur; reverse result forward A ownership’i veya TLS identity’yi kanıtlamaz. SOA zone metadata taşır; eski RFC1035 MINIMUM anlamı RFC2308 ile negative-cache lifetime için güncellenmiştir.
2. Red · Güven ve etki
Hareket olmadan bütün senaryoları oku
Alias / yetki
- Record type, consumer seçer
docs.example.org. CNAME edge.example.org., edge CNAME notes.example.org. adres indirection’ı kurar. Bu zincir user veya tenant grant’i taşımaz.
- Record inventory
- docs → edge → notes
- Typed consumer
- Consumer kararı yok
- Permission boundary
- Grant yok
- Type-aware sözleşme uygulandı
CNAME chain notes owner’ındaki A RRset’ine ulaşır. Terminal A adresleri ile alias owners ayrı kaydedilir; alias adına A ekleyerek conflict çözülmez.
- Record inventory
- docs → edge → notes
- Typed consumer
- Terminal A: .200,.201
- Permission boundary
- Grant yok
- İzin conclusion’ı durduruldu
DNS record consumer için yönlendirme bilgisidir. NS naming authority, PTR reverse pointer, TXT consumer-specific metin taşır; hiçbirinin varlığı kendi başına application permission değildir.
- Record inventory
- docs → edge → notes
- Typed consumer
- Terminal A: .200,.201
- Permission boundary
- Name-valued record ≠ grant
- Reverse scope ayrı tutuldu
Ayrı PTR örneği, 200.100.51.198.in-addr.arpa. owner’ını notes.example.org. adına bağlar. Bu reverse pointer docs→edge→notes CNAME yolunun bir adımı değildir. Forward ve reverse yönetim kapsamları aynı olmak zorunda değildir; PTR service identity doğrulamaz.
- Record inventory
- docs → edge → notes
- Typed consumer
- Terminal A: .200,.201
- Permission boundary
- Name-valued record ≠ grant
- Chain termination şartı korundu
Bu seçilen normal zincir notes owner’ındaki iki A adresine ulaşır. Ayrı loopVariant docs→edge→docs ise terminal address üretmeden durur. İki sonucu birleştirme: normal case’te repeated owner yoktur ve elde edilen adresler resource erişim hakkı vermez.
- Record inventory
- docs → edge → notes
- Typed consumer
- Terminal A: .200,.201
- Permission boundary
- Name-valued record ≠ grant
- Control doğru katmanda bitti
Record type ve terminal scope uygun yorumlanır; application intended name, TLS identity ve resource policy’yi ayrıca doğrular. DNS indirection bir access token gibi taşınmaz.
- Record inventory
- docs → edge → notes
- Typed consumer
- Terminal A: .200,.201
- Permission boundary
- Terminal A var; resource hakkı ayrı
MX consumer
- Record type, consumer seçer
MX preference 10/mail1 ve 20/mail2 mail routing seçimine aittir. Name RDATA taşımaları onları CNAME yapmaz.
- Record inventory
- MX 10/mail1,20/mail2
- Typed consumer
- Consumer kararı yok
- Permission boundary
- Grant yok
- Type-aware sözleşme uygulandı
Lower preference önceliklidir: mxPriority mail1, mail2 sırasını verir. Bu seçim mail delivery’nin gerçekten başarılı olduğunu veya web IP’sini göstermiş olmaz.
- Record inventory
- MX 10/mail1,20/mail2
- Typed consumer
- mail1 önce / delivery unknown
- Permission boundary
- Grant yok
- İzin conclusion’ı durduruldu
DNS record consumer için yönlendirme bilgisidir. NS naming authority, PTR reverse pointer, TXT consumer-specific metin taşır; hiçbirinin varlığı kendi başına application permission değildir.
- Record inventory
- MX 10/mail1,20/mail2
- Typed consumer
- mail1 önce / delivery unknown
- Permission boundary
- Name-valued record ≠ grant
- MX hedefleri direct address taşır
mail1.example.org. ve mail2.example.org. için direct A records vardır; ikisi de CNAME owner değildir. MX’in exchange alanı mail consumer’ın hedefidir. PTR reverse pointer veya web alias zinciri bu MX seçiminin yerine kullanılmaz.
- Record inventory
- MX 10/mail1,20/mail2
- Typed consumer
- mail1 önce / delivery unknown
- Permission boundary
- Name-valued record ≠ grant
- Preference teslim garantisi değildir
mail1’in preference değeri 10, mail2’nin 20’dir; consumer daha düşük değeri önce tercih eder. Bu sıralama SMTP bağlantısının veya mail tesliminin başarılı olduğunu göstermez. Hedef seçimi ile gerçek teslim sonucu ayrı tutulur.
- Record inventory
- MX 10/mail1,20/mail2
- Typed consumer
- mail1 önce / delivery unknown
- Permission boundary
- Name-valued record ≠ grant
- Control doğru katmanda bitti
MX record’ları type-aware okununca mail1 önceliği açıklanır; bu bir CNAME çözümlemesi veya web resource grant’i değildir. Mail teslimi için SMTP katmanından ayrıca sonuç gerekir. Doğru preference sırasını, gözlenmeyen teslim sonucuyla birleştirme.
- Record inventory
- MX 10/mail1,20/mail2
- Typed consumer
- mail1 önce / delivery unknown
- Permission boundary
- mail1 öncelikli; teslim bilinmiyor
VARSAYIM · SINIR · KONTROL
Bozulan varsayım: alias access hakkı taşır
DNS alias name’i bir başka name’e bağlar; target resource için user veya tenant permission taşımaz. Benzer şekilde bir TXT string’in varlığı application’ın onu doğru consumer/policy ile işlediğini göstermediğinden “güvenli” sonucu için record dışında evidence gerekir.
Review’de naming indirection’ın application beklediği service identity ve lifecycle scope’uyla tutarlı olmasını iste. Operational takeover veya external target doğrulama akışı yerine inert table’daki hangi varsayımın desteklenmediğini açıkla.
Bozulan varsayım: her name-valued record aynı alias
CNAME, NS, MX ve PTR hepsi name RDATA içerebilir fakat aynı resolution action’ını tetiklemez. PTR bir pointer’dır; MX mail routing tercihi; NS naming authority rolüdür. Hepsini CNAME gibi takip eden consumer record type contract’ını kaybeder.
Necessary condition type-aware processing’dir: NS/MX target direct address’e sahip olmalı; MX preference order lower-is-preferred kuralını izlemeli. Bir wrong record interpretation’ın impact’ini gereken data/control scope’uyla sınırla; gerçek mail/DNS service üzerinde reproduction yapma.
Bozulan varsayım: her chain terminal address üretir
Target missing, requested address type missing veya loop farklı conditions’dır. Alias owner’a A ekleyerek standard conflict’i “fallback” diye çözmek doğru değildir. Table review, aynı owner’daki record set’i ve alias path’i birlikte görmelidir.
Fixture loop detection yalnız known finite data üzerinde local cycle reasoning’dir. Dış resolver davranışını fingerprint etmek veya domain discovery yapmak için kullanılmaz. Actual error reporting implementation’a ve complete response context’ine bağlıdır.
3. Blue · Güvenli geliştirme ve savunma
Hareket olmadan bütün senaryoları oku
RRset review
- Owner ve type birlikte seçildi
Alias query docs.example.org. için A/IN ister. notes.example.org. için AAAA query ise ayrı olarak 2001:db8:2::20 adresini bekler. A ve AAAA farklı family sonuçlarıdır; birbirinin yerine geçirilmez.
- Question evidence
- docs / A / IN
- Chain review
- Path okunmadı
- Lifecycle review
- Sonuç yok
- Path kayıtları tek tek okundu
expectedPath docs→edge→notes ve expectedAddresses [.200, .201] birlikte okunur. Alias steps ile terminal RRset iki farklı evidence parçasıdır.
- Question evidence
- docs / A / IN
- Chain review
- docs → edge → notes
- Lifecycle review
- Sonuç yok
- Termination kanıtı değerlendirildi
notes A RRset iki adres içerir; address sırası tek preferred service veya gerçek connection sonucu değildir.
- Question evidence
- docs / A / IN
- Chain review
- Terminal RRset: two A
- Lifecycle review
- Sonuç yok
- Scope değişikliği kaydedildi
Forward records ile ayrı reverse PTR illustration tek deployable zone file değildir. Owner/class/type/TTL/RDATA grouping bu farklı yönetim sınırlarını silmeden yapılır.
- Question evidence
- Forward zone / reverse ayrı
- Chain review
- Terminal RRset: two A
- Lifecycle review
- Sonuç yok
- Valid ve negative controls birlikte
Normal docs chain terminal A verir, loop cycle verir, notes AAAA farklı family verir. Local table değişikliği review’si valid path’i kapatarak yeşile çevrilmez.
- Question evidence
- Forward zone / reverse ayrı
- Chain review
- Terminal RRset: two A
- Lifecycle review
- Valid A + AAAA + cycle controls
- Kanıtın kapsamadığı işler açık
Bu inventory yalnız record ve chain semantics’ini destekler. Provider change, cache provenance, mail delivery veya browser TLS acceptance gözlemi yoktur; gerçek service outcome UNKNOWN kalır.
- Question evidence
- Forward zone / reverse ayrı
- Chain review
- Terminal RRset: two A
- Lifecycle review
- Record kapsamı açık; service bilinmiyor
Cycle review
- Owner ve type birlikte seçildi
Alias query docs.example.org. için A/IN ister. notes.example.org. için AAAA query ise ayrı olarak 2001:db8:2::20 adresini bekler. A ve AAAA farklı family sonuçlarıdır; birbirinin yerine geçirilmez.
- Question evidence
- docs / A / IN
- Chain review
- Path okunmadı
- Lifecycle review
- Sonuç yok
- Path kayıtları tek tek okundu
loopVariant records docs→edge→docs verir; deliberatelyInvalid=true yalnız verilmiş finite table kapsamındadır.
- Question evidence
- docs / A / IN
- Chain review
- docs → edge → docs
- Lifecycle review
- Sonuç yok
- Termination kanıtı değerlendirildi
docs owner ikinci kez görülür; terminal address üretilemez. expectedClassification değeri cycle-no-terminal-address olur. Bu classification, timeout veya gerçek DNS error ölçümü değildir.
- Question evidence
- docs / A / IN
- Chain review
- Cycle / no terminal
- Lifecycle review
- Sonuç yok
- Scope değişikliği kaydedildi
Forward records ile ayrı reverse PTR illustration tek deployable zone file değildir. Owner/class/type/TTL/RDATA grouping bu farklı yönetim sınırlarını silmeden yapılır.
- Question evidence
- Forward zone / reverse ayrı
- Chain review
- Cycle / no terminal
- Lifecycle review
- Sonuç yok
- Valid ve negative controls birlikte
Normal docs chain terminal A verir, loop cycle verir, notes AAAA farklı family verir. Local table değişikliği review’si valid path’i kapatarak yeşile çevrilmez.
- Question evidence
- Forward zone / reverse ayrı
- Chain review
- Cycle / no terminal
- Lifecycle review
- Valid A + AAAA + cycle controls
- Kanıtın kapsamadığı işler açık
Bu inventory yalnız record ve chain semantics’ini destekler. Provider change, cache provenance, mail delivery veya browser TLS acceptance gözlemi yoktur; gerçek service outcome UNKNOWN kalır.
- Question evidence
- Forward zone / reverse ayrı
- Chain review
- Cycle / no terminal
- Lifecycle review
- Record kapsamı açık; service bilinmiyor
UYGULAMA · GÜVENLİK KONTROLÜ · DOĞRULAMA
Record inventory’yi type ve scope’la kaydet
Owner/class/type/TTL/RDATA alanları ve authoritative zone scope’u beraber tutulmalıdır. Alias answer ile terminal address RRset’ini ayrı kaydetmek chain’in hangi name’leri geçtiğini görünür kılar. PTR’nin reverse zone’u forward example.org zone’uyla aynı yönetimde olmak zorunda değildir.
Bu table forward-zone rows ve ayrı reverse-zone illustration’ı birleştiren eğitim artifact’idir; tek deployable zone file değildir. Real provider export format’ını bu JSON’un field adlarına uydurma. Current answers, cache provenance ve change time ayrıca gözlenir.
Valid baseline ve conflict/loop negative checks
Normal alias path docs→edge→notes, terminal A RRset’ine ulaşır; AAAA query ayrı family sonucunu verir. MX case’inde mail1 preference 10 seçilmiş önceliktir. NS/MX target’ları alias owner listesinde değildir. Local duplicate owner/type grup kontrolü gerçek resolver availability testi değildir.
Negative loop variant’ı terminal address’e ulaşmadan durur. Standard conflict check aynı owner CNAME+ordinary data birlikteliğini işaretler; DNSSEC/provider extensions özellikle modellenmediği için bu checker bunlara dair verdict vermez.
Change review: consumers ve lifecycle
Bir alias değişimi terminal record, consumer’ın intended name’i, TLS/application identity koşulları ve cache/delegation lifecycle’ıyla beraber değerlendirilir. MX/TXT/NS değişiminin web endpoint adresiyle aynı işi yaptığı varsayılmaz.
Record’ın anlamını ve chain boyunca hangi owner’ın hangi değeri verdiğini birlikte incele. Bu artifact sentetik record’lar kullanır; DNS server, mail delivery veya provider control panel sonucu değildir. Örneğin doğru okunması, gerçek ortamda o chain’in aynı cevabı vereceğini kanıtlamaz.
ŞİMDİ VAKAYA UYGULA
CNAME, MX ve PTR’nin aynı isim biçimi hangi kararları paylaşmaz?
docs, edge üzerinden notes adına yönelir ve oradaki A RRset’ine ulaşır. MX kayıtları ise mail1 ve mail2 arasındaki önceliği belirler. Reverse PTR ayrı scope’tadır; docs ile edge arasında dönen cycle örneği terminal adres üretmez.
Bir DNS cevabı, vakadaki doğru kitap sonucunu tek başına kanıtlar mı? Name resolution bilgisinin nerede bittiğini, HTTP ve application gözlemlerinin nerede başladığını ayır.
Bağlı vaka dosyasını aç ↗ÖRNEĞİ BİRLİKTE OKUYALIM
Typed RR table ve alias graph
Bir alan seç; hangi sonucu desteklediğini ve nerede yetersiz kaldığını incele.
Ham kaydı ve alan açıklamalarını oku
{
"scope": "Original forward example.org illustration plus separately scoped reverse PTR; not a deployable zone or actual DNS answers.",
"records": [
{
"owner": "example.org.",
"class": "IN",
"type": "NS",
"ttl": 300,
"rdata": "ns1.example.org."
},
{
"owner": "example.org.",
"class": "IN",
"type": "MX",
"ttl": 300,
"rdata": {
"preference": 10,
"exchange": "mail1.example.org."
}
},
{
"owner": "example.org.",
"class": "IN",
"type": "MX",
"ttl": 300,
"rdata": {
"preference": 20,
"exchange": "mail2.example.org."
}
},
{
"owner": "example.org.",
"class": "IN",
"type": "TXT",
"ttl": 300,
"rdata": [
"course=atlas",
"purpose=synthetic"
]
},
{
"owner": "docs.example.org.",
"class": "IN",
"type": "CNAME",
"ttl": 120,
"rdata": "edge.example.org."
},
{
"owner": "edge.example.org.",
"class": "IN",
"type": "CNAME",
"ttl": 120,
"rdata": "notes.example.org."
},
{
"owner": "notes.example.org.",
"class": "IN",
"type": "A",
"ttl": 120,
"rdata": "198.51.100.200"
},
{
"owner": "notes.example.org.",
"class": "IN",
"type": "A",
"ttl": 120,
"rdata": "198.51.100.201"
},
{
"owner": "notes.example.org.",
"class": "IN",
"type": "AAAA",
"ttl": 120,
"rdata": "2001:db8:2::20"
},
{
"owner": "ns1.example.org.",
"class": "IN",
"type": "A",
"ttl": 300,
"rdata": "192.0.2.53"
},
{
"owner": "mail1.example.org.",
"class": "IN",
"type": "A",
"ttl": 300,
"rdata": "192.0.2.25"
},
{
"owner": "mail2.example.org.",
"class": "IN",
"type": "A",
"ttl": 300,
"rdata": "192.0.2.26"
},
{
"owner": "200.100.51.198.in-addr.arpa.",
"class": "IN",
"type": "PTR",
"ttl": 300,
"rdata": "notes.example.org."
}
],
"aliasQuery": {
"name": "docs.example.org.",
"type": "A",
"class": "IN",
"expectedPath": [
"docs.example.org.",
"edge.example.org.",
"notes.example.org."
],
"expectedAddresses": [
"198.51.100.200",
"198.51.100.201"
]
},
"aaaaQuery": {
"name": "notes.example.org.",
"type": "AAAA",
"class": "IN",
"expectedAddresses": [
"2001:db8:2::20"
]
},
"mxPriority": [
"mail1.example.org.",
"mail2.example.org."
],
"loopVariant": {
"deliberatelyInvalid": true,
"records": [
{
"owner": "docs.example.org.",
"type": "CNAME",
"rdata": "edge.example.org."
},
{
"owner": "edge.example.org.",
"type": "CNAME",
"rdata": "docs.example.org."
}
],
"expectedClassification": "cycle-no-terminal-address"
},
"soaSummary": {
"owner": "example.org.",
"mname": "ns1.example.org.",
"rname": "hostmaster.example.org.",
"serial": 2026100801,
"refresh": 3600,
"retry": 600,
"expire": 86400,
"minimum": 60,
"ttl": 300
}
}- records.owner / type / class
- RRset grouping ve type-specific data yorumunun anahtarı.
- records.rdata
- Type’a göre address, name, preference/exchange veya text list.
- aliasQuery.expectedPath
- İki CNAME indirection’dan sonra terminal owner.
- loopVariant
- Bilinçli invalid inert data; hiçbir live resolver’a verilmez.
- soaSummary.minimum
- RFC2308 negative cache semantics; zone-wide lower TTL bound değil.
Inert partial record inventory + ayrı reverse PTR. DNSSEC metadata, provider ALIAS/flattening, actual answers, wildcard, complete master-file syntax, transport, mail delivery ve HTTP redirects yok.
İki yanlış kanı
CNAME bir HTTP redirect’tir.
CNAME yalnız DNS name indirection’ıdır; HTTP status/Location veya URL path bilgisi taşımaz.
AAAA sorgusu yalnız IPv6 network üzerinden yapılır.
DNS transport family’si queried RR address family’sinden bağımsızdır; AAAA IPv4 üzerinden de sorulabilir.
SIRA SENDE
Bu hikâyeyi sen çöz.
Sonucu tahmin et, kanıtın sınırını bul ve nedenini kendi cümlenle anlat.
docs.example.org A sorgusu iki CNAME izliyor. Browser URL’si kendiliğinden notes.example.org olur mu?
- Hayır. Address resolution, URL değiştiren redirect değildir.
- Evet. Her CNAME browser location’ını değiştirir.
Gerekçeli cevabı oku
Hayır. Address resolution, URL değiştiren redirect değildir. — Alias yolu terminal A RRset’e ulaşır. Browser URL, HTTP Host ve service identity ayrı context’lerdir.
MX preference değerleri 10 ve 20 hangi sırayı tanımlar?
Dersten seçilen artifact alanları; öğretim örneği
- records[1]
- {"owner":"example.org.","class":"IN","type":"MX","ttl":300,"rdata":{"preference":10,"exchange":"mail1.example.org."}}
- records[2]
- {"owner":"example.org.","class":"IN","type":"MX","ttl":300,"rdata":{"preference":20,"exchange":"mail2.example.org."}}
- mxPriority
- ["mail1.example.org.","mail2.example.org."]
- mail1 önce; gerçek delivery sonucu ölçülmez.
- 20 daha yüksek olduğu için mail2 kesin teslim alır.
Gerekçeli cevabı oku
mail1 önce; gerçek delivery sonucu ölçülmez. — 10 daha düşük preference’tır. Mail exchanger seçimi başarılı SMTP delivery kanıtı değildir.
Loop branch’inde docs→edge→docs neden terminal address sonucu üretmiyor?
Gerekçeli cevabı oku
CNAME traversal docs’ten edge’e, ardından yeniden docs’e döner. Bilerek geçersiz kurulan bu örnek terminal A/AAAA record’a ulaşamaz; cycle-no-terminal-address olarak sınıflanır. Gerçek resolver’ın kesin error response’u veya HTTP davranışı burada gözlenmez.
□ Cycle ile terminal address sonucunu ayırdım.
□ Gerçek resolver hata çıktısı uydurmadım.
Uygulama konsolunu aç · request / response / browser
Request, URL, cookie ve DOM örneklerini ayrıca aç
Kaynaklar ve kapsam
- RFC 1035 — DNS specification3.3.1 CNAME · 3.3.9 MX · 3.3.11 NS · 3.3.12 PTR · 3.3.13 SOA · 3.3.14 TXT · 3.4.1 A · 3.5 IN-ADDR.ARPA · 4.1.1 Header · 4.1.2 Question · 4.1.3 Resource record
- RFC 1034 — DNS concepts2.2 DNS design goals · 3.1 Namespace specifications and terminology · 3.6.2 Aliases and canonical names · 4.2 How the database is divided into zones · 4.3.1 Queries and responses · 4.3.2 Algorithm · 5.3.1 Stub resolvers
- RFC 2181 — DNS clarifications5.1 RRsets · 8 Time to Live · 10.1 CNAME resource records · 10.2 PTR records · 10.3 MX and NS records
- RFC 3596 — DNS IPv6 extensions1 Introduction: transport independent of RR address family · 2.1 AAAA record type · 2.2 AAAA data format · 2.5 IP6.ARPA Domain · 3 Modifications to existing query types
- RFC 2308 — DNS negative caching2.1 Name Error · 2.2 No Data · 3 Negative Answers from Authoritative Servers · 4 SOA Minimum Field · 5 Caching Negative Answers
- RFC 2606 — Reserved example domains3 Reserved Example Second Level Domain Names
- RFC 5737 — Documentation IPv43 Documentation Address Blocks
- RFC 3849 — Documentation IPv62 Documentation IPv6 Address Prefix