Bagaimana saya bisa menggunakan nama host .local dengan Arch Linux?

18

Jika saya menggunakan Ubuntu atau Linux Mint (satu-satunya dua rasa yang saya coba dan tahu pasti berhasil), saya dapat menjalankan sesuatu seperti ini:

wayne@myhost$ ssh [email protected]

Dan namanya secara otomatis diselesaikan untuk apa pun IP dari host lain di jaringan lokal saya.

Saya telah memutuskan untuk mulai bercabang ke distro lain, dan Arch dijalankan pada laptop saya - tetapi jika saya mencoba menggunakan perintah sebelumnya saya mendapatkan Could not resolve hostname otherhost.local: Name or service not known

Apa yang diperlukan untuk mendapatkan resolusi nama otomatis semacam ini (?)?

Wayne Werner
sumber
5
Anda harus menginstal avahijuga nss-mdns- untuk lebih jelasnya lihat di arch wiki
Ulrich Dangel

Jawaban:

15

Jawaban Wayne sendiri sudah sangat tua sekarang. Arch sejak itu beralih ke menggunakan systemd bukan skrip init. Halaman Avahi Arch wiki telah diperbarui dan berisi detail mengapa langkah-langkah di bawah ini diperlukan. Singkatnya: Avahi adalah alat zeroconf, artinya itu sendiri tidak memerlukan konfigurasi untuk bekerja setelah diinstal pada semua mesin LAN Anda, tetapi Anda harus mengonfigurasi sisa perangkat lunak Anda sehingga benar-benar meminta informasi kepada Avahi.

Jalankan ini sebagai root, atau tambahkan dengan yang sudosesuai, di terminal dan ganti nanodengan editor pilihan Anda.

  1. pacman -S avahi nss-mdns Menginstal daemon layanan Avahi dan penyelesai Multicast DNS.
  2. nano /etc/nsswitch.conf File ini memberi tahu perpustakaan C cara mendapatkan informasi layanan nama.
  3. Ubah jalur hosts: files dns myhostnameke hosts: files mdns_minimal [NOTFOUND=return] dns myhostname, simpan dan keluar.
  4. systemctl start avahi-daemon Mulai layanan Avahi secara manual karena kami sudah di-boot. Cari kesalahan)
  5. systemctl enable avahi-daemon Mengaktifkan layanan Avahi saat boot.

Saya baru saja melakukan langkah-langkah ini pada laptop Arch dan tidak perlu me-restart layanan lain atau antarmuka wifi untuk memiliki mesin lain menemukannya dalam beberapa detik, dan laptop saya menemukan layanan mereka.

Karena saya belum dapat mengomentari jawaban ggg, saya hanya ingin menunjukkan di sini bahwa tidak perlu melakukan ini dalam skrip startup - itulah gunanya mengaktifkan layanan di systemd. Lakukan sekali dan lupakan.

TwoD
sumber
3
Anda bahkan dapat menggabungkan langkah 4 dan 5: systemctl enable avahi-daemon --now. Itu mulai dan mengaktifkan layanan segera alih-alih menunggu startup berikutnya.
Jonathan Komar
11

Berkat penunjuk ke artikel Arch Wiki di Avahi dari Ulrich Dangel, inilah yang saya lakukan:

  1. Instal avahi dan nss-mdns $ sudo pacman -S avahi nss-mdns
  2. Tambahkan /etc/rc.d/avahi-daemon startke akhirrc.local
  3. Karena saya sedang berlari dhcpcd, /etc/dhcpcd.confsaya berkomentar di luar noipv4llgaris.
  4. Saya juga berlari $ sudo /usr/sbin/avahi-autopid -D wlan0. Karena saya tidak suka memulai kembali, saya tidak yakin apakah langkah 3 diperlukan.
  5. Di /etc/nsswitch.confsaya mengatur baris untuk membaca hosts: files mdns4_minimal dns mdns4.
  6. Lalu aku berlari $ sudo /etc/rc.d/dbus restartuntuk me-restart dbus.

Setelah itu, cukup melakukan ssh [email protected]saja bekerja.

Wayne Werner
sumber
1
Mengenai poin kedua Anda: Anda sebaiknya menambahkan "avahi-daemon" ke baris DAEMONS di /etc/rc.conf
Wieland
Saya berpikir tentang itu, tetapi wiki menunjukkan bahwa beberapa orang memiliki masalah dengan itu mulai terlalu cepat di rc.conf dan gagal sebagai hasilnya, dan menempatkannya di tempat yang saya lakukan adalah perbaikan.
Wayne Werner
2

Saya tidak berpikir kita perlu avahi-daemonberlari untuk menggunakan .local. Inilah yang saya miliki dalam skrip startup saya. Ini jauh lebih sederhana dibandingkan dengan metode Arch Wiki.

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