Soru CNAME Alt Alanlar İçin Kullanılmalı mı?


Şu anda aşağıdaki DNS yapılandırmasına sahip olan birden çok web sitesini yönetiyorum:

example.com      - A Record - Production Server IP
test.example.com - A Record - Test Server IP
www.example.com  - CNAME    - example.com
beta.example.com - CNAME    - test.example.com
dev.example.com  - CNAME    - test.example.com

Bu CNAME kayıtlarının uygun bir kullanımı mı? İnternette baktım ve net bir cevap bulamadım. Bazı insanlar CNAME kayıtlarının kötü olduğunu iddia ediyorlar (bunun nedenleri açık değiller) ve aşağıdaki ayarları önerdiler:

example.com      - A Record - Production Server IP
test.example.com - A Record - Test Server IP
www.example.com  - A Record - Production Server IP
beta.example.com - A Record - Test Server IP
dev.example.com  - A Record - Test Server IP

Bunlardan hangisi daha iyi bir yaklaşımdır (ve neden)?

Not: Alt alanlar kendi MX kayıtlarını gerektirmez, bu yüzden burada bir sorun olmaz.


76
2017-09-16 17:55


Menşei


Bunun bir wiki cevabı olması gerektiğini düşünüyorum. DNS haklı olmak için çok zor ve bu cevap 6 yıl sonra hala iyi mi? - the0ther
@ the0ther Evet, bugün bile doğrulanmış cevap, Jesper Mortensen, hala geçerli (bir şeylerin isimlendirilmesi ya da kullanmak için doğru TTL değerleri hakkında tartışma olsa bile, ancak bunlar CNAME kayıtlarının kullanılması sorunundan ayrı noktalardır). DNS 30 eski bir protokoldür, CNAME kayıtları gibi temel şeyler zamanla değişmez. - Patrick Mevzek


Cevaplar:


Evet, bu CNAME'lerin uygun bir kullanımı. Bir parçası olduğum tartışmalarda, argümanlar böyle gitmeye eğilimlidir:

CNAME'lere karşı:

  • Aşağı yönündeki DNS önbelleklerinin, biri CNAME için bir tane ve CNAME'nin kaydettiği A-Kaydı için olmak üzere 2 DNS araması gerçekleştirmesi gerektiğinden (küçük) bir performans cezası söz konusudur.
  • VAGue, CNAME'lerle ilgili daha az "yetkili" veya uyumluluk sorunlarına sahip sahte argümanlar.

CNAME'ler lehine:

  • Donanım (fiziksel sunucular) ve hizmetler arasında temiz bir soyutlama sağlarlar.
  • DNS yönetimini basitleştirirler - bir sunucu hareket ettiğinde, yalnızca bir rekoru değiştirmeniz gerekir.

Birkaç farklı yol denedikten sonra Bunu yapmak için şimdi kişisel bir favori tarzım var. Bu:

  • Her fiziksel sunucu için bir A Kayıt; oldukça düşük bir TTL ile (belki 30 dakika); sunucuya bir insan dostu isim.
  • Her hizmet için bir CNAME; yüksek bir TTL ile (belki 24 saat); Yukarıdaki sunucu adlarına işaret eder.
  • Yukarıdaki kuralların tek istisnası olarak, alan kökü, web sunucusu / web yük dengeleyicisini işaret eden bir A-Kaydıdır. (@ Bir A-kaydı olmak zorundadır.)

Bu kurulumun iyi çalıştığını görüyorum. CNAMES için ekstra DNS aramaları tutar; ve bir sunucu çökerse hala genel DNS'yi oldukça hızlı bir şekilde değiştirebilirim.

İşte bir (doğaçlama) örnek BIND sözdiziminde:

;name     ttl   class rr     value 
server01  30m   IN    A      192.168.0.3
server02  30m   IN    A      192.168.0.4

webmail   24h   IN    CNAME  server01
extranet  24h   IN    CNAME  server02
ftp       24h   IN    CNAME  server02

80
2017-09-16 19:45



Teşekkürler, nihayet açıkça ve kısaca ortaya koyduğu CNAME'ler hakkında makul bir görüş. - Tyler
@Jesper Mortensen: Küçük bir örnekle cevabınızı biraz güncellemeniz mümkün olabilir, özellikle de 3üncü noktanızı anlayamadım. "Yukarıdaki kurallara tek istisna olarak, alan kökü bir A-Record'tur," 1. noktada, her bir fiziksel katman sunucusu için bir A Kaydı kullandığınızı söyledi. (BTW bağlantıları gitti) - Marco Demaio
@Marco Demaio: "domain root A-Record" hakkında: İkinci seviye alan adı gibi company.combir bölge apeksidir. Bir SOA kaydına ihtiyacı var. Bu yüzden bir A Kayıt olmalı ve bir CNAME değil - bkz. serverfault.com/questions/170194/... - Jesper Mortensen
@ A kaydına sahip olmak gerekli değildir; daha doğrusu, bir CNAME yasaklandı. - Michael Hampton♦
Sadece sunucularınız IPv6 adreslerini de destekliyorsa, CNAME'lerin özellikle yararlı olduğunu eklemek istedim, çünkü sunucu başına en az iki girişe (her birinde bir A ve AAAA kaydı) ihtiyaç duyacaksınız, böylece alt alanlar için bir CNAME kullanmalısınız. Bu durumda çok daha basit. Jesper'ın TTL için önerilerini kullanırsanız (veya DNS sağlayıcınız iyi otomatik işleme sahipse), gerçek bir performans cezası olmamalıdır. - Haravikk


Evet, uygun.

Pek çok kişinin paylaştığı En İyi Uygulamalarım, her sunucu IP'si için 1 A kayıt oluşturmak; ve başka bir şey için CNAMES kullanın.

Ortak bir örnek şöyle olurdu:

server1.example.com.      IN A      192.168.0.1
server2.example.com.      IN A      192.168.5.2
www                       IN CNAME  server1
ftp                       IN CNAME  server1
beta                      IN CNAME  server2

12
2017-09-16 18:03



Bu soruda, postaların burada bir sorun olmadığını söylediler, ancak postaları da kullandığınızı varsayalım, MX kayıtları ile nasıl gidersiniz? Teşekkürler! - Marco Demaio
MX kaydı, sunucu adına da işaret eder. IN MX server1 ve kolaylık sağlamak için de tavsiye ederim imap veya pop ve smtp CNAME'ler, muhtemelen mailBirçok e-posta programı bunu tahmin ediyor. Doğru SRV kayıtlarını ayarlamak da iyi bir fikirdir, ancak bu nispeten basit bir soru olduğundan, SRV kayıtları basit bir yapılandırma için biraz fazla olabilir. - Chris S
Hızlı bir yorum, MXkayıtları CNAME olmamalıdır, bkz. serverfault.com/a/232243/2874  Muhtemelen pratikte iyi çalışır - ama yine de bunu yapmamak daha iyidir. - Jesper Mortensen
BIND, bir MX veya SRV kaydını bir CNAME'ye yönlendirirseniz bölgeyi yüklemeyi reddeder ... Muhtemelen MX kaydının A kaydına işaret etmesi gerektiğini açıkça belirtmiş olmalıydım. Teşekkür ederim. - Chris S
@ChrisS, cevabınızı düzenlemeye ve bir MX kaydının bir CNAME girişine işaret edemeyeceğinden açıkça bahsediyorsunuz? - Alexis Wilke