macOS Sierra (10.12.6) comando hostname não anexando “.local”

0

Para ser breve:

Pelo que entendi, o comando hostname tem uma opção -f . Na página do manual:

-f Include domain information in the printed name. This is the default behavior.

Como é o comportamento padrão, fiquei surpreso quando meu nome impresso não incluiu informações de domínio, mas simplesmente MY-COMPUTER-NAME .

Algumas informações adicionais:

Não consigo alterar o "Nome do computador" nas preferências "Compartilhamento" (está desativado como mostrado aqui):

compartilhamentoPreferênciasmostrandoonomedocomputadordefinidocomoHippotigriseumamensagemquediz:"Os computadores em sua rede local podem acessar seu computador em: LM-SJN-21001464

Originalmente, meu "Nome do host local" também estava definido como "Hippotigris", mas quando notei esse problema, mudei para o que estava recebendo do comando hostname :

compartilhamentoPreferênciascomumcampodeentradaparaoNomedoHostLocaldefinidocomoLM-SJN-21001464terminandoem".local" acinzentado

Encontrei este artigo intitulado" Definir o nome do host do Mac ou o nome do computador do terminal ", mas não tenho certeza se isso resolveria meu problema ou o agravaria.

O que estou tentando realizar :

Estou usando a função dns.lookup integrada do NodeJS em combinação com a função os.hostname incorporada. Eu presumo que a função hostname retorna a mesma coisa que o comando hostname imprime (que é o que está fazendo atualmente). Quando eu corro:

node -e "require('dns').lookup(require('os').hostname() + '.local', console.log)"

Funciona bem e imprime o endereço IP da minha máquina na rede local, mas quando eu corro

node -e "require('dns').lookup(require('os').hostname(), console.log)"

Registra o erro: getaddrinfo ENOTFOUND LM-SJN-21001464

Eu perguntei por aí e aparece este script sem o .local funciona para a maioria das pessoas, então eu ' acho que tem algo a ver com a configuração da minha máquina.

    
por kentcdodds 04.08.2018 / 06:47

2 respostas

1

Graças a algumas ajuda no twitter , adicionei ".local" aos meus domínios de pesquisa nas minhas configurações de DNS e que foram corrigidas meu problema principal, embora hostname (e os.hostname ) ainda retornem um nome de host sem o ".local" anexado.

Portanto, esta é uma resposta para o problema que eu estava tendo, mas não a pergunta que publiquei e ainda adoraria entender o que está acontecendo e se devo me preocupar.

redePreferênciasnaguiaDNSmostrando"Domínios de pesquisa" inclui ".local"

    
por 04.08.2018 / 06:58
0

O hostname é o nome da própria máquina. A parte que vem depois do nome do host, ou seja, .local in hippotigris.local ou .kentcdodds.com in hippotrigris.kentcdodds.com é o chamado nome de domínio .

Você nunca deve adicionar o nome do domínio ao próprio nome do host.

Como já mencionado nos comentários, .local é especial: é o domínio para mDNS , que faz o nome multicast resolução no seu segmento de LAN local. Isso funciona de maneira diferente para a resolução de nomes DNS normal e é amplamente usado pela Apple.

Portanto, quando você executar require('dns').lookup() no nó, ele procurará usando o mecanismo DNS normal. No entanto, o seu nome de host não está registrado no que você usa como servidor DNS normal (o do seu roteador doméstico ou do servidor DNS do seu provedor). Portanto, você não recebe uma resposta.

Se você anexar .local , o nó (ou as bibliotecas MacOS subjacentes) usará mDNS, o que significa que eles podem encontrar seu nome de host.

É por isso que você precisa anexar .local em algum lugar, seja diretamente ou automaticamente no caminho de pesquisa ou por qualquer outro meio (por exemplo, no Linux, você pode configurar a pesquisa de nomes para usar DNS e mDNS). qualquer ordem).

Quanto ao motivo pelo qual o nome do host digitado na janela da GUI que você mostrou (Hippotigrisis) é diferente do nome anunciado via mDNS (LM-SJN-21001464), não tenho certeza (porque a interface do usuário do Mac não dá nenhuma dica do que realmente está acontecendo) - seria necessário descobrir quais informações esse diálogo define exatamente e onde o outro nome (que se parece com um número de série) é definido. Ferramentas de linha de comando podem ajudar na busca por isso.

    
por 04.08.2018 / 22:05