Posso ter pontos em um nome de host?

23

Estou usando nomes como a.alpha para o nome do host da minha caixa Linux, mas parece que esses nomes não são completamente utilizáveis. A resposta de um comando shell do nome do host está correta (a.alpha). Mas o nome impresso após a minha conta de usuário é "usuário @ a" em vez de "usuá[email protected]". Quando uso o avahi, posso acessar (pelo nome do host) a.alpha, mas não b.alpha. Isso é normal?

benzen
fonte

Respostas:

23

Chopper está certo. Devido ao funcionamento do DNS, o componente "alfa" de "a.alpha" é considerado um 'rótulo' discreto no DNS. O uso de um nome de host com um ponto causará resultados inconsistentes em qualquer sistema que consome DNS.

O Avahi interage com nomes DNS e, especificamente, a <host-name>diretiva precisa ter o FQDN DNS do serviço, por isso também está sujeita à inconsistência do DNS com nomes pontilhados.

Não use o nome pontilhado.

sysadmin1138
fonte
Isso está correto, mas precisa de referências para ser considerado uma resposta confiável. Alguém dizendo 'Devido a como o DNS funciona' no Stack Overflow não prova nada.
Mikemaccana
É regra rígida que o nome do host não possa conter '.' ?
Dinesh Kumar P
1
@DineshKumarP Sim. Os RFCs DNS descrevem o caractere de ponto como o delimitador entre os rótulos DNS. Embora serviços não DNS, como Avahi ou SLP possam permitir, o próprio DNS não.
sysadmin1138
Isso não está certo. O DNS está perfeitamente feliz em permitir pontos nos rótulos, embora sugira conformidade com uma sintaxe restrita (a "regra LDH"; consulte tools.ietf.org/html/rfc1035#section-2.3.1 ). Os aplicativos de DNS - como o armazenamento de nomes de host no DNS - são onde as restrições na sintaxe de rótulo do DNS entram em jogo.
Tony Garnock-Jones
17

Você está solicitando problemas com esse esquema de nomeação devido ao DNS, considere a-alpha.

Chopper3
fonte
Fiz a mesma pergunta no askubuntu e ninguém pode me responder. Então eu vou usar este método
benzeno
1

Como outras pessoas mencionaram, você definitivamente deseja evitar pontos nos nomes de host devido ao DNS, e também descobri que isso pode causar um problema se você estiver usando certificados curinga para executar SSL, pois os certificados curinga somente curinga para um nível de subdomínio. Portanto, se o seu certificado curinga for para * .mycompany.com, mas você tiver um nome de host que seja a.alpha, o certificado curinga poderá não funcionar se tratar "alpha" como um subdomínio.

Mitchell Tracy
fonte
1

O nome completo do host é tipicamente o FQDN (nome de domínio totalmente qualificado) equipado com domínio, e no linux deve acabar sendo a saída de host --fqdn, com a parte antes do primeiro ponto sendo considerada o apelido do host. No entanto, diferentes sistemas (Linux, SunOS, qualquer que seja) implementaram o conceito de "hostnick" de várias maneiras. Tal como:

  • / etc / hostname contém apenas o hostnick e o restante está em / etc / domainname
  • / etc / hostname contém o FQDN inteiro e o domínio também está em / etc / domainname
  • O nome de domínio existe apenas na configuração YP / NIS
  • O nome de domínio existe apenas em determinados subsistemas, em vez de ser um sistema global
  • (outras abordagens geralmente mais estranhas)

Além disso, a ideia de um hostnick é uma pequena variável:

  • A parte do FQDN antes do primeiro ponto
  • Parte do lado esquerdo do FQDN, expressa exclusivamente sem um ponto final
  • A parte do FQDN antes do nome do domínio real (conforme definido em algum lugar)

E, para complicar ainda mais, o hostcomando do bind9-host viola os padrões de DNS ao ter uma -N <int>opção para controlar se os domínios de pesquisa são ou não usados. Isso interrompe as pesquisas de DNS de várias maneiras, dependendo do cenário. O DNS deve procurar qualquer nome com um ponto à direita como sendo literalmente o que procurar e, para outros nomes, procurá-los com domínios anexos /etc/resolv.confaté que uma correspondência seja encontrada ou todos falhem (esses domínios implicitamente têm um ponto à direita). [Isso é da memória, por favor, comente se o processo geral foi alterado em uma RFC que eu perdi]

Como tal, se você usar pontos em seu hostnick, o hostcomando provavelmente falhará, quebrando scripts que o usam para pesquisas. Pessoalmente, acho que hosté insondável que está quebrado, e parece até hoje estar quebrando uma pesquisa em um sistema na minha rede doméstica, pois tenho IPv4 e -v6 em casa e tenho nomes como .v4. como formulários curtos extras específicos da versão, que hostnão são pesquisados, embora os pingencontrem perfeitamente.

Era extremamente raro tentar colocar pontos nos hostnicks de qualquer maneira, portanto, mesmo sem hosto dano de brainstorming, eu recomendaria manter os hostnicks sem pontos, mesmo de uma perspectiva semântica simples.

Alex North-Keys
fonte
0

A resposta correta definitivamente "não faça isso", como afirmado acima.

Para algumas leituras possivelmente úteis e definitivamente tangenciais, continue:

Você está falando sobre resolução de DNS ou seu prompt de linha de comando? Se você deseja corrigir seu prompt de linha de comando, basta mexer com $ PS1 (ou equivalente não bash / sh semelhante, quando aplicável).

Se você realmente deseja que a.alpha seja um nome de host que resolva para um endereço IP nas interwebs, você pode fazê-lo, mas isso pode envolver um subdomínio para cada sufixo de nome de host (EG alfa, beta etc.).

É até possível que você possa configurar seu servidor DNS para funcionar sem criar subdomínios. Você pode servir o endereço IP dos servidores de nomes de um subdomínio nos arquivos de zona do domínio pai, para que "funcione". Isso ocorre porque quando alguém solicita ao servidor DNS o endereço IP de a.alpha.examaple.com, ele solicita ao servidor DNS o exemplo.com e, se esse servidor DNS já tiver o endereço por aí, ele responderá com a resposta , em vez de tentar entregá-lo ao servidor autoritário do subdomínio. Pode ficar sobrecarregado com o SOA ausente ... portanto, talvez você adicione um registro A para cada prefixo do host e um SOA para cada sufixo do host. Sim, esse é o bilhete ...

Tudo na internet continuará pensando que seu nome de host é 'a' e seu domínio é alpha.example.com.

Dylan Martin
fonte