@ Sven'in cevabı, düzenleme ile zaten doğru ama sadece şeyleri doğrudan ifade etmek için.
TL; DR evet alt çizgi CNAME
her iki taraftaki bir kayıtta geçerlidir, nedenini aşağıda okuyunuz.
RFC 1034 ve diğerleri, dahil herhangi bir karaktere sahip etiketler olan "alan adlarına" dayalı kayıtları tanımlar _
.
Ancak bazı kayıtlar, sahip adı ve / veya kaynak verileri (RDATA) için daha katı kurallara sahiptir. Orada sadece bir ana bilgisayar adı kabul edilecek ve aslında kurallar şimdi (bir ana bilgisayar adının bir rakamla başlayamadığı yerlerde rahatlamışlardı) herhangi bir ASCII harfini (büyük / küçük harf duyarlılığı yok), herhangi bir ASCII rakamını ve kısa çizgiyi kullanabilirsiniz , artı bazı ekstra konum kuralları: başlangıç veya bitişte tire yok ve konum 3 ve 4'te çift tire yok ( xn--
yalnızca duruma izin verilen formdaki IDN'ler için "rezervasyon" nedeniyle ).
Örneğin, bir A
veya AAAA
kaydın sahip adı bir alan adı değil, bir ana bilgisayar adıdır. Yani
test.example.com A 192.0.2.1
tüm bunlar değil neden geçerlidir:
_test.example.com A 192.0.2.1
-test.example.com A 192.0.2.1
test-.example.com A 192.0.2.1
named-checkzone
Programla işleri test etmek kolaydır ( bind
ad sunucusu yazılımının bir parçasıdır, ancak ayrı olarak kullanılabilir ve yüklenebilir ve diğer ad sunucuları benzer kontrol araçlarına sahip olabilir ve muhtemelen bunun için çevrimiçi arabirimler de vardır), sadece bir dosyaya kayıt yerleştirin ve çalıştırın üstünde:
$ cat z1.txt
test.example.com. 1 IN A 192.0.2.1
_test.example.com. 1 IN A 192.0.2.1
-test.example.com. 1 IN A 192.0.2.1
test-.example.com. 1 IN A 192.0.2.1
$ /usr/local/sbin/named-checkzone example.com z1.txt
z1.txt:2: _test.example.com: bad owner name (check-names)
z1.txt:3: -test.example.com: bad owner name (check-names)
z1.txt:4: test-.example.com: bad owner name (check-names)
(önceki sayı IN
TTL'dir, buradaki sorunumuzla ilgili değildir, ancak yalnızca bir kaydın sözdizimi doğrulamasını geçmek için gereklidir).
Diğer kayıtlar için NS
bunun tersi geçerlidir: çünkü sahip üzerinde herhangi bir kısıtlama yoktur, ancak veriler olan "hedef" üzerinde kısıtlamalar vardır. DNS sorgularına yanıt veren fiziksel ana makineler olan yetkili ad sunucularına işaret etmeniz gerektiğinden, veriler yalnızca bir etki alanı adı değil, bir etki alanı adı olabilir.
Şimdi CNAME
, RFC 1034, bölüm 3.6'daki ilgili alıntılar:
"owner: RR'nin bulunduğu alan adıdır." yani varsayılan olarak yalnızca bir ana bilgisayar adı değil, herhangi bir ad (CNAME kaydının kaynağı olarak)
"RDATA: kaynağı tanımlayan tür ve bazen sınıfa bağlı veriler:"
"CNAME bir alan adı."
Yani hem a'nın CNAME
(solda ne var) sahibi, hem de ona bağlı olan kaynak verileri, hedefi / hedefi (sağda ne var) sadece ana makine adları değil, alan adlarıdır. Temelde herhangi bir karakter, böylece _
her iki tarafta da izin verilir.
Yine, test etmek kolaydır named-checkzone
:
$ cat z2.txt
_foo 1 CNAME _bar
$ /usr/local/sbin/named-checkzone example.com z2.txt
zone example.com/IN: has 0 SOA records
zone example.com/IN: has no NS records
zone example.com/IN: not loaded due to errors.
Hakkında hiçbir hata yok CNAME
(diğer hatalar bekleniyor, çünkü sahte bölgemde herhangi bir şey koymadım SOA
veya NS
gerçek bir bölge gibi kayıtlar olurdu)