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


84

Şu anda aşağıdaki DNS yapılandırmasına sahip birden fazla 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ı? Çevrimiçi baktım ve net bir cevap bulamadım. Bazı insanlar CNAME kayıtlarının kötü olduğunu iddia ediyor (bunun neden böyle olduğu konusunda net değiller) ve aşağıdaki kurulumu öneriyorlar:

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 yaklaşımdır (ve neden)?

Not: Alt alanlar kendi MX kayıtlarını gerektirmez, bu nedenle bu bir sorun değildir.


1
Bunun bir wiki cevabı olması gerektiğini düşünüyorum. DNS haklı olmak çok zor ve bu kabul edilen cevap 6 yıl sonra hala iyi mi?
44’de

1
@ Evet, bugün bile, Jesper Mortensen'den gelen doğrulanmış cevap hala geçerlidir (eğer bir kişinin ismini ya da kullanılacak doğru TTL değerlerini tartışıp tartışmasa da, bunlar CNAME kayıtlarını kullanma konusundan ayrı noktalardır.) ). DNS 30 eski bir protokoldür, bu yüzden CNAME kayıtları gibi temel şeyler zamanla değişmez.
Patrick Mevzek

Yanıtlar:


85

Evet, bu CNAME'lerin uygun bir kullanımı. Bir parçası olduğum tartışmalarda, tartışmalar şöyle devam etme eğilimindedir:

CNAME'lere karşı:

  • Akış aşağı DNS önbelleklerinin biri CNAME ve biri CNAME'nin işaret ettiği A-Record için 2 DNS araması yapması gerektiğinden (küçük) bir performans cezası vardır.
  • Belirsiz, CNAME'ler hakkında daha az "yetki" veya uyumluluk sorunları olan sahte tartışmalar.

CNAME'lerin lehine:

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

Bunu yapmanın birkaç farklı yolunu denedikten sonra şimdi kişisel favori tarzım var. Bu:

  • Her fiziksel sunucu için bir A Kaydı; oldukça düşük bir TTL ile (belki 30 dakika); sunucuya insan dostu bir isim vermek .
  • Her hizmet için bir CNAME; yüksek bir TTL ile (belki 24 saat); yukarıdaki sunucu adlarına işaret eder.
  • Tek yukarıdaki kurallara göre, etki alanı kökü bir A-Record, web sunucusu / web yük dengeleyici işaret. (@, A kaydı olmalıdır.)

Bu kurulumun iyi çalıştığını biliyorum. CNAMES için ekstra DNS araması yapar; ve eğer bir sunucu çökerse, genel DNS'i hala oldukça hızlı bir şekilde değiştirebilirim.

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

;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

1
Teşekkürler, nihayet açık ve net bir şekilde ortaya konan CNAME'ler hakkında makul bir görüş.
Tyler,

@Jesper Mortensen: Cevabı küçük bir örnekle biraz güncelleyebilir misiniz, özellikle "Yukarıdaki kuralların tek istisnası olarak, etki alanı kökü bir A Kaydı" derken 3. noktanızı anlamadım. 1. noktada, her fiziksel katman sunucusu için bir A Kaydı kullandığınızı söyledi. (Bağlantılar BTW gitti)
Marco Demaio

2
@Marco Demaio: "Etki alanı kök A-Kaydı" Hakkında: Gibi ikinci bir etki alanı company.com, bir bölge tepe noktasıdır. SOA kaydına ihtiyacı var. Bu nedenle, bir CNAME değil bir A Kaydı olmalı - bkz. Serverfault.com/questions/170194/…
Jesper Mortensen

4
@ A kaydına sahip olmak zorunda değildir; bunun yerine, bir CNAME yasaktır.
Michael Hampton

1
Sadece, sunucularınız IPv6 adreslerini de destekliyorsa, sunucu başına en az iki girişe ihtiyaç duyacağınız (her biri bir A ve AAAA kaydı olan) bu nedenle alt alanlar için bir CNAME kullanmak istediğinizde, CNAME'lerin özellikle yararlı olduğunu eklemek istedim. Bu durumda, çok, çok daha basittir. Jesper'in TTL önerilerini kullanırsanız (veya DNS sağlayıcınız otomatik işlemeyi iyi yapıyorsa), gerçek performans cezası olmamalıdır.
Haravikk

13

Evet uygun.

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

Ortak bir örnek şöyle olabilir:

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

Bu soruda, postaların burada bir sorun olmadığını söylediklerini biliyorum, ancak diyelim ki posta da kullanıyorsunuz, MX kayıtlarına nasıl giderdiniz? Teşekkürler!
Marco Demaio

1
MX kaydı, sunucu adına da işaret edecektir. IN MX server1ve rahatlık için ben de kurma öneriyoruz imapveya popve smtpCNAME'ler, muhtemelen de mail, birçok e-posta programları bu sanırım. Doğru SRV kayıtlarını ayarlamak da iyi bir fikirdir, ancak bu nispeten temel bir soru olduğundan, SRV kayıtları basit bir yapılandırma için biraz fazla olabilir.
Chris S,

1
Hızlı bir yorum, MXkayıtlar, bkz CNAME'ler olmamalıdır serverfault.com/a/232243/2874 ama yine de daha iyi bunu yapmak için değil - Muhtemelen pratikte çalışıyor.
Jesper Mortensen,

Bir CNAME'de bir MX veya SRV kaydını işaret ederseniz BIND, bölgeyi yüklemeyi reddeder ... MX kaydının A kaydına işaret etmesi gerektiğini açıkça söylemeliydim. Teşekkür ederim.
Chris S,

@ChrisS, cevabınızı düzenlemeye ve bir MX kaydının CNAME girişine işaret edemediğini açıkça belirtmeye ne dersiniz?
Alexis Wilke,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.