Como uso nomes de host .local no Arch Linux?

18

Se eu estiver usando o Ubuntu ou Linux Mint (os dois únicos sabores que tentei e sei que funcionam com certeza), posso executar algo assim:

wayne@myhost$ ssh [email protected]

E o nome é resolvido automaticamente para qualquer que seja o IP do otherhost na minha rede local.

Decidi começar a ramificar-me para outras distros e tenho o Arch em execução no meu laptop - mas se tentar usar o comando anterior, recebo Could not resolve hostname otherhost.local: Name or service not known

O que é necessário para obter esse tipo de resolução automática de nomes (?)?

Wayne Werner
fonte
5
Você precisa instalar avahie também nss-mdns- para mais detalhes, dê uma olhada no wiki
Ulrich Dangel

Respostas:

15

A resposta de Wayne já é bastante antiga. Desde então, o Arch passou a usar systemd em vez de scripts init. A página Avahi do wiki do Arch foi atualizada e contém detalhes sobre por que as etapas abaixo são necessárias. Resumindo: o Avahi é uma ferramenta zeroconf, o que significa que ele próprio não precisa de nenhuma configuração para funcionar uma vez instalado em todas as máquinas da sua LAN, mas você deve configurar o restante do software para solicitar informações à Avahi.

Execute-os como root ou preencha com, sudoquando apropriado, em um terminal e substitua nanopelo editor de sua escolha.

  1. pacman -S avahi nss-mdns Instala o daemon de serviços Avahi e o resolvedor de DNS de difusão seletiva.
  2. nano /etc/nsswitch.conf Este arquivo informa à biblioteca C como obter informações sobre o serviço de nomes.
  3. Mude a linha hosts: files dns myhostnamepara hosts: files mdns_minimal [NOTFOUND=return] dns myhostname, salve e saia.
  4. systemctl start avahi-daemon Inicia o serviço Avahi manualmente, já que já iniciamos. Procure erros)
  5. systemctl enable avahi-daemon Ativa o serviço Avahi na inicialização.

Acabei de executar essas etapas em um laptop Arch e não havia necessidade de reiniciar outros serviços ou a interface wifi para que minhas outras máquinas o descobrissem em alguns segundos e meu laptop descobrisse seus serviços.

Como ainda não posso comentar a resposta do ggg, gostaria de salientar aqui que não há necessidade de fazer isso em um script de inicialização - é para isso que serve o serviço no systemd. Faça isso uma vez e esqueça.

TwoD
fonte
3
Você pode até combinar os passos 4 e 5: systemctl enable avahi-daemon --now. Ele inicia e ativa o serviço imediatamente, em vez de aguardar a próxima inicialização.
23917 Jonathan Komar
11

Graças ao ponteiro do artigo do Arch Wiki sobre Avahi de Ulrich Dangel, foi o que eu fiz:

  1. Instale avahi e nss-mdns $ sudo pacman -S avahi nss-mdns
  2. Adicione /etc/rc.d/avahi-daemon startno final derc.local
  3. Desde que estou correndo dhcpcd, /etc/dhcpcd.confcomentei a noipv4lllinha.
  4. Eu também corri $ sudo /usr/sbin/avahi-autopid -D wlan0. Como não gosto de reiniciar, não tenho certeza se a etapa 3 foi necessária.
  5. Em /etc/nsswitch.confeu defino a linha para ler hosts: files mdns4_minimal dns mdns4.
  6. Então eu corri $ sudo /etc/rc.d/dbus restartpara reiniciar o dbus.

Depois disso, basta fazer ssh [email protected]apenas funcionou.

Wayne Werner
fonte
11
Quanto à sua segunda questão: Você pode muito bem adicionar "avahi-daemon" para a linha DAEMONS no /etc/rc.conf
Wieland
Pensei sobre isso, mas o wiki indicou que algumas pessoas tiveram problemas com o início rápido do rc.conf e com o resultado falhado, e colocá-lo onde eu fiz foi uma correção.
Wayne Werner
2

Eu não acho que precisamos avahi-daemoncorrer para usar .local. Aqui está o que eu tenho no meu script de inicialização. Isso é muito mais simples comparado ao método do Arch Wiki.

systemctl enable avahi-daemon
avahi-set-host-name $(hostname)
systemctl disable avahi-daemon
ggg
fonte