Hacker DirectoryHacker Directory
Öğrenmeye devam et
ENHTML kaydet ↓

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.

CORE · RED · BLUE · ARTIFACT · PRACTICE

1. Core · Mekanizma

Hareket olmadan bütün senaryoları oku

A via two CNAMEs

  1. 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
  2. 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
  3. 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
  4. 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ı
  5. İ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]
  6. İ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]
  7. 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]
  8. 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]
  9. 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]
  10. 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

  1. 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
  2. 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
  3. 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
  4. 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ı
  5. 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]
  6. 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]
  7. 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]
  8. 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

  1. 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
  2. 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
  3. 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
  4. 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ı
  5. 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.]
  6. 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.]
  7. 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.]
  8. 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.]
  9. 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

  1. 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
  2. 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
  3. 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
  4. 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ı
  5. İ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]
  6. İ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]
  7. 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
  8. 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
  9. 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
  10. 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

  1. 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
  2. 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
  3. İ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
  4. 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
  5. 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
  6. 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

  1. 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
  2. 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
  3. İ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
  4. 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
  5. 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
  6. 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

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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?

  1. Hayır. Address resolution, URL değiştiren redirect değildir.
  2. 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."]
  1. mail1 önce; gerçek delivery sonucu ölçülmez.
  2. 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