CNAME kaydında _ (alt çizgi) yasa dışı mı?


9

Barındırıcımızdaki web arayüzünde DKIM anahtarı için uzun TXT kaydı oluşturmada sorun yaşıyoruz.

Her satır yalnızca 256 karakter kabul edebilir.

Birden fazla satır denedik, sonra bazılarının önerdiği gibi ("ilk ve ")son olarak eklemeyi denedik . İkisi de işe yaramıyor.

Sonra DKIM TXT kayıtlarını yapabileceğimiz başka bir kaydediciye kayıt için bir cname yapmayı denedik .

Ama şimdi web arayüzü kayıttaki yasadışı isimden şikayet ediyor CNAME.

mail._domainkey.example.com TXTTamam tamam
mail._domainkey.example.com CNAMEdeğil Tamam
mail.domainkey.example.com CNAME, ama istediğimiz değil.

Web arayüzü bizi çılgına çevirmeye kararlı mı yoksa alt çizgilere sahip olmak gerçekten "yasadışı" CNAMEmı?


1
Bunu yazarken sağlayıcı web arayüzünü düzeltiyor!
Lenne

Yanıtlar:


18

Evet, DNS adları (bu A / AAAA'yı da içerir) yalnızca içerebilir [0-9], [a-z], -, bu nedenle alt çizgi geçerli değildir. Bir TXT kaydının ana bilgisayar adı olmadığını ve bu kısıtlamanın bu kayıt için geçerli olmadığını unutmayın. Ve son bir düzenleme: -ilk karakter olarak da kullanılamaz, bu yüzden mail.-domainkey.our.domgeçerli olmaz.

https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_hostnames


Son düzenleme: Kısmen yanılmışım. Ana bilgisayar adı olarak CNAME kullanıldığında, yukarıdaki kısıtlamalar uygulanır. Bir CNAME, DKIM bağlamında bir ana bilgisayar adı olarak kabul edilmez ve bu durumda _bir CNAME girişinin geçerli bir parçası olmalıdır. Bkz. Https://stackoverflow.com/questions/13650233/underscore-in-cname-required-by-ses-not-allowed-by-registrar/26692491#26692491


Ancak CNAME bir ana bilgisayar adı mıdır? Bazı belgeler, bir cname'de alt çizgi kullandığını gösterir, bu nedenle görünür. kb.mailchimp.com/accounts/email-authentication/…
Lenne

Ayrıca, alt etki alanları, en azından Microsoft'un DNS yönetim aracında, Windows Etki Alanları'nın altında bulunan MS Windows Active Directory ile tümleşik bölgelerde DNS girdilerinde görünür, ancak bu alt çizgilerin aslında adın bir parçası olup olmadığından ve Windows'un DNS'deki alt çizgileri destekleyip desteklemediğinden emin değilim alt çizgiler yalnızca DNS yönetimi ek bileşeninde görünüyorsa ve aslında adların bir parçası değilse.
Todd Wilcox

Belirtilen Wikipedia girişinin DNS değil internet adları ile ilgisi olduğunu unutmayın.
Jim B

@ Lenne: CNAME geçerli bir ana bilgisayar adıdır çünkü bir ana bilgisayar için diğer addır. @ToddWilcox: evet, bu biliniyor ve bu, diğer sistemlere neden olan, yasal olmamasına rağmen DNS, DHCP, ... paketlerinde göründükleri gibi hiçbir sıkıntıya neden olmayan MS tarafından (kasıtlı?) Bir spesifikasyon ihlalidir.
mirabilos

2
@mirabilos "CNAME geçerli bir ana bilgisayar adıdır" hayır, CNAME'nin hedefi (RDATA) bir ana bilgisayar adı değil, bir alan adıdır (alan adı, olası tüm ana bilgisayar adlarının üst kümesidir). _foo CNAME _bartamamen yasaldır, ile test edebilirsiniz named-checkzone.
Patrick Mevzek

2

DNS'de geçerli tüm karakterlere izin verilir. Bkz. Https://tools.ietf.org/html/rfc2181#section-11

"DNS, kaynak kayıtlarını tanımlamak için kullanılabilecek belirli etiketlere yalnızca bir kısıtlama koyuyor. Bu kısıtlama, etiketin uzunluğu ve tam adıyla ilgilidir. Herhangi bir etiketin uzunluğu 1 ile 63 sekizli arasında sınırlıdır. "

İstemci ad değerlerini doğrulamalıdır EG bir MX kaydı "Alice" değerini içerebilir, ancak aramadan sonra "Alice" geçerli bir e-posta adresi olmadığından bu değerin reddedilmesi gerekir.

Bu durumda, barındırıcınız girişinizi "doğrular" gibi görünüyor ve sizin için manuel olarak girebilmeleri gerekir.


"DNS'de geçerli herhangi bir karaktere izin verilir" bundan biraz daha karmaşıktır. Etki alanı adları ve ana bilgisayar adları vardır. Aksi söylenmedikçe, her yerde alan adı olan ve gerçekten de herhangi bir karakter anlamına gelen etiketleriniz vardır _. Ancak, bazı kayıtlar için alan adlarını değil, yalnızca ana bilgisayar adlarını kullanabilirsiniz. Ana bilgisayar adları yalnızca harf basamakları ve kısa çizgilerdir, başka bir şey değildir. Örneğin, Aveya AAAAkaydın sahibi bir alan adı değil, bir ana bilgisayar adıdır. Bir kaydın RDATA (hedefi) NSbir etki alanı adı değil, bir ana bilgisayar adıdır.
Patrick Mevzek

1
"MX kaydı" Alice "değerini içerebilir, ancak aramadan sonra" Alice "geçerli bir e-posta adresi olmadığı için bu değerin reddedilmesi gerekir." MX RR'ler ne zamandan beri e-posta adreslerine başvuruyor?
CVn

0

RFC 1034: Etiketler ARPANET ana bilgisayar adları için kurallara uymalıdır. Bir harfle başlamalı, harf veya rakamla bitmeli ve iç karakter olarak yalnızca harf, rakam ve kısa çizgi içermelidirler. Uzunluğunda bazı kısıtlamalar da vardır. Etiketler 63 karakter veya daha az olmalıdır.


Ayrıca bazı kütüphanelerin ESP_245537 gibi bir ana bilgisayar adı verdiği Arduino ile ilgili sorun yaşıyorum, DHCPserver DNS'yi güncellemeye çalıştığında bu ad reddediliyor.
Lenne

Bu yanlış. CNAME etiketi mutlaka bir ana bilgisayar adı değildir, bu nedenle _.
Patrick Mevzek

1
Ve bu olmadan bile, bunlar eski kurallar. Ana bilgisayar adlarını bir rakamla başlayarak yasaklıyorlardı, ancak 3com.comörneğin bu kuralı rahatlatmak için, bkz. Tools.ietf.org/html/rfc1123#page-13 "Ana bilgisayar adı sözdiziminin bir yönü değiştirildi: ilk karakterdeki kısıtlama bir harfe veya rakama izin vermek için rahat. "
Patrick Mevzek

@ Ana esp_245537bilgisayar adı olarak kullanılırsa DNS güncellemesi, geçerli bir ana bilgisayar adı olmadığı için reddedilmelidir. Bu etki alanı adı olarak kullanılırsa, geçerli bir DNS etiketi olduğu için DNS güncellemesi başarılı olmalıdır (aksi takdirde bir hatadır).
Patrick Mevzek

Geçersiz karakterleri DHCP'den DNS'ye çevirmenin mümkün olduğuna dair ipuçları gördüm, ancak hiç işe yaramadı.
Lenne

0

@ Sven'in cevabı, düzenleme ile zaten doğru ama sadece şeyleri doğrudan ifade etmek için.

TL; DR evet alt çizgi CNAMEher 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 Aveya AAAAkaydın sahip adı bir alan adı değil, bir ana bilgisayar adıdır. Yani test.example.com A 192.0.2.1tü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-checkzoneProgramla işleri test etmek kolaydır ( bindad 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ı INTTL'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 NSbunun 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 SOAveya NSgerçek bir bölge gibi kayıtlar olurdu)

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.