Os subdomínios (nome de domínio) podem ter um sublinhado "_"?


212

Os subdomínios (nomes de domínio) podem ter sublinhado _neles?


12
Fiz sua pergunta com seriedade: você realmente quis dizer Nomes de Domínio. Se, em vez disso, você quis dizer nomes de host, edite sua pergunta, porque a resposta será diferente.
precisa saber é o seguinte

Respostas:


362

A maioria das respostas dadas aqui são falsas . É perfeitamente legal ter um sublinhado em um nome de domínio. Deixe-me citar o padrão, RFC 2181, seção 11, "Sintaxe de nome" :

O próprio DNS coloca apenas uma restrição nos rótulos específicos que podem ser usados ​​para identificar registros de recursos. Essa restrição está relacionada ao comprimento do rótulo e ao nome completo. [...] As implementações dos protocolos DNS não devem colocar restrições nos rótulos que podem ser usados. Em particular, os servidores DNS não devem se recusar a atender a uma zona, pois ela contém rótulos que podem não ser aceitáveis ​​para alguns programas clientes DNS.

Consulte também a especificação DNS original, RFC 1034 , seção 3.5 "Sintaxe de nome preferencial", mas leia-a com atenção.

Domínios com sublinhados são muito comuns na natureza. Marque _jabber._tcp.gmail.comou _sip._udp.apnic.net.

Outras RFC mencionadas aqui lidam com coisas diferentes. A pergunta original era para nomes de domínio . Se a pergunta for para nomes de host (ou URLs, que incluem um nome de host), então isso é diferente, o padrão relevante é a RFC 1123 , seção 2.1 "Nomes e números de host ", que limita os nomes de host a letras-dígitos-hífen.


73
+1 para a diferença entre "nomes de domínio" e "nomes de host"
Alnitak

3
A questão (a menos que tenha sido editada) é sobre subdomínios, ou seja. nomes de host. Você não está errado sobre suas declarações factuais, exceto apontando que as respostas são falsas, com base em como a pergunta está atualmente redigida.
Redreinard

4
Estou confuso, 1034 diz "Os rótulos devem seguir as regras dos nomes de host da ARPANET. Eles devem começar com uma letra, terminar com uma letra ou um dígito e ter como caracteres internos apenas letras, dígitos e hífen". Qual parte disso permite um sublinhado?
claudekennilol 16/09

2
A redação é confusa. URLs não podem ter sublinhados. Uma URL é sempre um FQDN, não é um nome de host. Um FQDN pode ter um nome de host vazio, neste caso FQDN = domínio. _jabber._tcp.gmail.comnão é um domínio, é um FQDN. Como os URLs não podem ter sublinhado, você provavelmente nunca poderá comprar um domínio com um sublinhado. Portanto, mesmo esses domínios também podem ter sublinhados do ponto de vista da sintaxe DNS, você nunca encontrará nenhum, a menos que seja local.
Capsule

1
Não consigo ver a citação no 2.1 do rfc1123 que menciona qualquer coisa sobre hífens sendo permitidos. Eu posso ver no rfc952 que um nome pode ser <let-or-digit-or-hyphen>. É a isso que você estava se referindo?
AJP

93

Uma nota sobre terminologia, em apoio à resposta de Bortzmeyer

Deve-se ter clareza sobre as definições. Como usado aqui:

  • nome de domínio é o identificador de um recurso em um banco de dados DNS
  • label é a parte de um nome de domínio entre pontos
  • hostname é um tipo especial de nome de domínio que identifica hosts da Internet

O nome do host está sujeito às restrições da RFC 952 e ao leve relaxamento da RFC 1123

O RFC 2181 deixa claro que há uma diferença entre um nome de domínio e um nome de host:

... [o fato de] qualquer rótulo binário poder ter um registro MX não implica que qualquer nome binário possa ser usado como parte do host de um endereço de email ...

Portanto, sublinhados em nomes de host são um não-não, sublinhados em nomes de domínio são ok.

Na prática, é possível ver nomes de host com sublinhados. Como o Princípio da robustez diz: "Seja conservador no que envia, liberal no que aceita".

Uma observação sobre codificação

No século 21, acontece que nomes de host e nomes de domínio podem ser internacionalizados! Isso significa recorrer a codificações no caso de etiquetas que contenham caracteres que estão fora do conjunto permitido.

Em particular, ela permite codificar o _em nomes de host (Atualização 2017-07:. Este é duvidosa, ver os comentários A _.. Ainda não pode ser usado em nomes de host Na verdade, ele não pode ser usado até mesmo em rótulos internacionalizados)

A primeira RFC para internacionalização foi a RFC 3490 de março de 2003, "Internacionalizando nomes de domínio em aplicativos (IDNA)". Hoje nós temos:

  • RFC 5890 "IDNA: Definições e Estrutura de Documentos"
  • RFC 5891 "IDNA: Protocolo"
  • RFC 5892 "Os pontos de código Unicode e IDNA"
  • RFC 5893 "Scripts da direita para a esquerda para IDNA"
  • RFC 5894 "IDNA: Antecedentes, Explicação e Justificativa"
  • RFC 5895 "Caracteres de mapeamento para o IDNA 2008"

Você também pode verificar a entrada da Wikipedia

A RFC 5890 introduz o termo rótulo LDH (Letter-Digit-Hypen) para rótulos usados ​​em nomes de host e diz:

Essa é a forma clássica de etiqueta usada, embora com algumas restrições adicionais, nos nomes de host (RFC 952). Sua sintaxe é idêntica à descrita como a "sintaxe do nome preferido" na Seção 3.5 da RFC 1034, modificada pela RFC 1123. Resumidamente, é uma string que consiste em letras, dígitos e hífen ASCII, com a restrição adicional de que o hífen não pode aparecem no início ou no final da string. Como todos os rótulos de DNS, seu comprimento total não deve exceder 63 octetos.

Voltando aos tempos mais simples, este projecto de Internet é uma proposta cedo para hostname internacionalização. Nomes de host com caracteres internacionais podem ser codificados usando, por exemplo, a codificação 'RACE' .

O autor da proposta 'codificação RACE' observa:

De acordo com a RFC 1035, as partes do host devem diferenciar maiúsculas de minúsculas, iniciar e terminar com uma letra ou dígito e conter apenas letras, dígitos e o caractere hífen ("-"). Isso, é claro, exclui caracteres internacionalizados, bem como muitos outros caracteres no repertório de caracteres ASCII. Além disso, as partes de nomes de domínio devem ter 63 octetos ou menos. Todas as partes de nomes pós-convertidas que contêm caracteres internacionalizados começam com a cadeia "bq--". (...) A string "bq--" foi escolhida porque é extremamente improvável que exista nas partes do host antes que essa especificação seja produzida.


Além disso, "Sistemas como DomainKeys e registros de serviço usam o sublinhado como um meio de garantir que seu caractere especial não seja confundido com nomes de host. Por exemplo, _http._sctp.www.example.com especifica um ponteiro de serviço para um SCTP servidor de web compatível (www) no domínio example.com. " ( link )
x-yuri

Ignore as partes de codificação RACE, o IDN já define o conversão de caracteres internacionalitonlized para ASCII usando o prefixo 'xn--'.
mootmoot

2
@ Nelda.techspiress Já faz algum tempo, mas de acordo com a RFC 1034: Nomes de Domínio - Conceitos e Recursos , que é chamado de "subdomínio" de um domínio bar.baz.(por exemplo) é apenas uma coleção de nomes de domínio que são hierarquicamente por baixo bar.baz., por exemplo a.bar.baz., f.g.bar.baz., h.bar.baz., etc. Este "subdomínio" pode ou não incluir nomes de host reais .
David Tonhofer 06/06/19

2
No uso diário, uma pessoa pode tender a chamar incorretamente a string a.bar.baz(um nome de domínio) "um subdomínio" da string bar.baz(outro nome de domínio). Os nomes de domínio (recursos do banco de dados DNS) a.bar.baze bar.bazpodem ou não ser nomes de host .
David Tonhofer 06/06/19

1
Na página 8 da RFC 1034 , lemos: Um domínio é identificado por um nome de domínio e consiste na parte do espaço de nome de domínio igual ou inferior ao nome de domínio que especifica o domínio. Um domínio é um subdomínio de outro domínio, se estiver contido nesse domínio. Esse relacionamento pode ser testado verificando se o nome do subdomínio termina com o nome do domínio que o contém. Por exemplo, ABCD é um subdomínio de BCD, CD, D e "".
David Tonhofer 06/06/19

47

Há uma coisa adicional que você precisa saber: se a parte do host ou subdomínio da URL contiver um sublinhado, o IE9 (não testou outras versões) não poderá escrever cookies.

Portanto, tenha cuidado com isso. :-)



3
Nós tínhamos isso em um projeto - e eu estava prestes a enlouquecer com os estranhos problemas do IE lá. Até descobrirmos o sublinhado no subdomínio. ; o)
Kai Mattern

3
Ainda é um problema no IE10. A MS sabe disso?
Piotr Kula

15
Mais relevante: A EM se preocupa com isso?
Ajax


11

O esclarecimento de bortzmeyer e David Tonhofer , rótulos de nome de domínio e nome de subdomínio pode conter sublinhados principais, mas em nenhum outro lugar.

Como escreveu David Tonhofer , os rótulos são as partes entre os períodos e devem seguir a regra LDH, exceto ao especificar rótulos de serviço e rótulos de portas para diferenciá-los dos rótulos regulares. Em seguida, eles devem ocorrer no início do rótulo, que deve ser o "Nomes abreviados" do Registro de nome e número de porta do serviço , o número da porta sem 0s iniciais ou o protocolo (por exemplo, tcp, udp). Essas etiquetas de serviço estão ainda mais limitadas a 15 caracteres.

  • RFC2782 especifica prefixo de subdomínios de registro de serviço com sublinhados.
  • RFC6698 especifica prefixo de números de porta com sublinhados nos registros de certificado TLSA.

Ao contrário da resposta de David Tonhofer , o IDN não permite a codificação de sublinhado ('_' U + 005F LOW LINE) ou qualquer outro caractere ASCII inválido.

From RFC5890

[..] dois novos subconjuntos de rótulos LDH são criados pela introdução do IDNA. Eles são chamados de rótulos LDH reservados (rótulos R-LDH) e rótulos LDH não reservados (rótulos NR-LDH). Os rótulos LDH reservados, conhecidos como "nomes de domínio marcados" em alguns outros contextos, têm a propriedade que eles contêm "-" no terceiro e quarto caracteres, mas que, de outra forma, estão em conformidade com as regras de rótulo LDH .

O Punycode codifica todos os pontos de código ASCII como ASCII diretamente, incluindo sublinhado. O R-LDH resultante não está em conformidade com as regras do rótulo LDH. Por exemplo, Σ_.comseria codificado como o xn--_-zmb.comque viola as regras. Pode haver um ponto de código homográfico que se parece com um sublinhado que pode ser codificado legalmente (talvez a linha baixa de largura total U + FF3F), mas esses tipos de pontos de código seriam categorizados como DISALLOWED by RFC5892 em 2.3 IgnorableProperties como Noncharacter_Code_Point.

O RACE (o outro esquema de codificação IDN proposto) não foi aceito como padrão pelo IETF e não deve ser usado.


1
Finalmente. Não posso acreditar que este é o único post em toda a página que fala sobre punycode.
Pacerier 13/01

6

Eu segui o link para RFC1034 e li a maioria e fiquei surpreso ao ver isso:

Os rótulos devem seguir as regras para os nomes de host da ARPANET. Eles devem começar com uma letra, terminar com uma letra ou um dígito e ter como caracteres internos apenas letras, dígitos e hífen. Existem também algumas restrições no comprimento. Os rótulos devem ter 63 caracteres ou menos.

Para esclarecimento, os nomes de domínio são compostos de etiquetas separadas por pontos ".". Essa especificação deve estar desatualizada porque não menciona o uso de sublinhados. Eu posso entender a confusão se alguém tropeçar nessa especificação sem saber que ela é obsoleta. É obsoleto, não é?

Eu segui o link para RFC2181 e li alguns deles. Especialmente no que diz respeito à questão do que é um nome autoritário ou canônico e à questão do que torna um rótulo DNS válido.

Como publicado anteriormente, ele afirma que há apenas uma restrição de comprimento e, para resumir, ele lê:

(sobre nomes e rótulos válidos)

Eles já estão especificados adequadamente, no entanto, as especificações parecem às vezes ignoradas. Procuramos reforçar as especificações existentes.

Meio que me deixa pensando se "uma restrição de comprimento único" é "adequada". Vamos começar a ver nomes de domínio como @ # $% !! em breve? A internet não está estragada o suficiente?


3
Não, não é obsoleto. RFC1034 é uma especificação sobre nomes de host , um caso especial de nomes de domínio , que são identificadores genéricos de recursos no banco de dados DNS. Por exemplo, a parte "host" dos URIs é definida de maneira bastante simples ( tools.ietf.org/html/rfc3986#section-3.2.2 ), mas a RFC adverte: "Um host identificado por um nome registrado é uma sequência de caracteres geralmente destinado à pesquisa em um registro de nome de host ou serviço definido localmente ... um nome registrado destinado à pesquisa no DNS usa a sintaxe definida na Seção 3.5 de [RFC1034] e na Seção 2.1 de [RFC1123]. "
David Tonhofer

3

Recentemente, o fórum do CAB (*) decidiu que

Todos os certificados contendo um caractere de sublinhado em qualquer entrada dNSName e com um período de validade de mais de 30 dias DEVEM ser revogados antes de 15 de janeiro de 2019. https://cabforum.org/2018/11/12/ballot-sc-12- sunset-of-underscores-in-dnsnames /

Isso significa que você não tem mais permissão para usar sublinhados em domínios que terão um certificado ssl / tls.

(*) O Fórum do navegador da autoridade de certificação (CA / Forum do navegador) é uma reunião voluntária dos principais emissores de certificados (conforme definido na seção 2.1 (a) (1) e (2) abaixo) e fornecedores de software de navegador da Internet e outros aplicativos que use certificados (Consumidores de certificado, conforme definido na Seção 2.1 (a) (3) abaixo).


1

Os DPNs individuais podem colocar suas próprias regras e restrições nos nomes de domínios, conforme entenderem, como para acomodar os idiomas locais.

Por exemplo, de acordo com o CIRA , os .canomes de domínio do Canadá são permitidos:

  • Letras aatravés z, e os seguintes caracteres acentuados: é ë ê è â à æ ô œ ù û ü ç î ï ÿ. Observe que os nomes de domínio não diferenciam maiúsculas de minúsculas. Isso significa que não haverá distinção entre maiúsculas e minúsculas ( A= a);

  • Os números 0123456789e

  • O caractere hífen (" -) (embora não possa ser usado para iniciar ou encerrar um nome de domínio).

O tamanho máximo é de 63 caracteres, exceto que cada caractere acentuado reduz esse limite em 4 caracteres.

( Fonte )


Aliás, isso permite cerca de 4 quadragintilhões de possibilidades de nomes de domínio (sem contar subdomínios) para domínios dot-ca.


0

Aqui estão meus 2 centavos do mundo Java:

Em um console Spark Scala, com Java 8:

scala> new java.net.URI("spark://spark_master").getHost
res10: String = null

scala> new java.net.URI("spark://spark-master").getHost
res11: String = spark-master

scala> new java.net.URI("spark://spark_master.google.fr").getHost
res12: String = null

scala> new java.net.URI("spark://spark.master.google.fr").getHost
res13: String = spark.master.google.fr

scala> new java.net.URI("spark://spark-master.google.fr:3434").getHost
res14: String = spark-master.google.fr

scala> new java.net.URI("spark://spark-master.goo_gle.fr:3434").getHost
res15: String = null

É definitivamente uma má ideia ^^


0

Acabei de criar projeto local (com vagrant) e estava funcionando perfeitamente quando acessado pelo endereço IP. Em seguida, adicionei some_name.test ao arquivo hosts e tentei acessá-lo dessa maneira, mas estava recebendo "bad request - 400" o tempo todo. Perdi horas até descobrir que apenas mudar o nome do domínio para some-name.test resolve o problema. Portanto, pelo menos localmente no Mac OS, não está funcionando.


0

Não, você não pode usar sublinhado no subdomínio, mas hífen (traço). ou seja, meu_dominio.agahost.com é aceitável e meu_dominio.agahost.com não seria aceitável.


-2

Não se você quiser resolver na Internet.

Você não pode ter: http://my_subdomain.example.com é inválido.

Você pode ter: http://my-subdomain.example.com com um hífen.


É após 15 de janeiro de 2019 - seu exemplo de contador não funciona.
Joe Inwap

@JoeInwap Você pode me indicar uma fonte para o seu comentário?
Ankshah 16/10/19

Eu estava no cabforum.org/2018/11/12/… e o fato de o_o.lgms.nl apresentar um certificado que não é válido para esse nome de host. O nome, no entanto, resolve.
91319 Joe Inwap
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.