Come posso usare i nomi host .local con Arch Linux?


18

Se sto usando Ubuntu o Linux Mint (le uniche due versioni che ho provato e conosco sicuramente), posso eseguire qualcosa del genere:

wayne@myhost$ ssh wayne@otherhost.local

E il nome viene automaticamente risolto in qualunque indirizzo IP dell'altro host sia sulla mia rete locale.

Ho deciso di iniziare a diramarmi in altre distro e ho Arch in esecuzione sul mio laptop, ma se provo a utilizzare il comando precedente ottengo Could not resolve hostname otherhost.local: Name or service not known

Cosa serve per ottenere questo tipo di risoluzione automatica dei nomi (?)?


5
Devi installare avahioltre che nss-mdns- per maggiori dettagli dai un'occhiata all'arco wiki
Ulrich Dangel

Risposte:


15

La risposta di Wayne è ormai piuttosto vecchia. Da allora Arch è passato all'utilizzo di systemd anziché di script init. La pagina Avahi della wiki di Arch è stata aggiornata e contiene dettagli sul perché sono necessari i passaggi seguenti. In breve: Avahi è uno strumento di zeroconf, il che significa che non ha bisogno di alcuna configurazione per funzionare una volta installata su tutte le macchine della LAN, ma è necessario configurare il resto del software in modo tale da richiedere tutte le informazioni ad Avahi.

Esegui questi come root o anteponi, sudose del caso, in un terminale e sostituiscili nanocon l'editor di tua scelta.

  1. pacman -S avahi nss-mdns Installa il demone dei servizi Avahi e il resolver DNS Multicast.
  2. nano /etc/nsswitch.conf Questo file indica alla libreria C come ottenere informazioni sul servizio dei nomi.
  3. Cambia la linea hosts: files dns myhostnamein hosts: files mdns_minimal [NOTFOUND=return] dns myhostname, salva ed esci.
  4. systemctl start avahi-daemon Avvia il servizio Avahi manualmente poiché siamo già booted.look per errori)
  5. systemctl enable avahi-daemon Abilita il servizio Avahi all'avvio.

Ho appena eseguito questi passaggi su un laptop Arch e non è stato necessario riavviare altri servizi o l'interfaccia wifi per fare in modo che le altre mie macchine lo scoprissero in pochi secondi e che il mio laptop scoprisse i loro servizi.

Dal momento che non posso ancora commentare la risposta di ggg, vorrei solo sottolineare che non è necessario farlo in uno script di avvio: ecco a cosa serve abilitare il servizio in systemd. Fallo una volta e dimenticalo.


3
È anche possibile combinare i punti 4 e 5: systemctl enable avahi-daemon --now. Si avvia e abilita immediatamente il servizio invece di attendere l'avvio successivo.
Jonathan Komar,

11

Grazie al puntatore dell'articolo Arch Wiki su Avahi di Ulrich Dangel, questo è quello che ho fatto:

  1. Installa avahi e nss-mdns $ sudo pacman -S avahi nss-mdns
  2. Aggiungi /etc/rc.d/avahi-daemon startalla fine dirc.local
  3. Dal momento che sto correndo dhcpcd, /etc/dhcpcd.confho commentato la noipv4llriga.
  4. Ho anche corso $ sudo /usr/sbin/avahi-autopid -D wlan0. Dal momento che non mi piace riavviare, non sono sicuro se il passaggio 3 fosse necessario.
  5. In /etc/nsswitch.confho impostato la riga da leggere hosts: files mdns4_minimal dns mdns4.
  6. Quindi ho corso $ sudo /etc/rc.d/dbus restartper riavviare dbus.

Dopo di ciò, semplicemente facendo ha ssh wayne@other.localfunzionato.


1
Per quanto riguarda il tuo secondo punto: potresti anche aggiungere "avahi-daemon" alla linea DAEMONS in /etc/rc.conf
Wieland il

Ci ho pensato, ma il wiki ha indicato che alcune persone hanno avuto problemi con l'avvio troppo veloce in rc.conf e il conseguente fallimento, e che posizionarlo dove l'ho fatto era una soluzione.
Wayne Werner,

2

Non penso che abbiamo bisogno di avahi-daemoncorrere per usare .local. Ecco cosa ho nel mio script di avvio. Questo è molto più semplice rispetto al metodo di Arch Wiki.

systemctl enable avahi-daemon
avahi-set-host-name $(hostname)
systemctl disable avahi-daemon
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.