Як я можу використовувати .local імена хостів із Arch Linux?


18

Якщо я використовую Ubuntu або Linux Mint (єдині два аромати, які я пробував і знаю, працюють точно), я можу запустити щось подібне:

wayne@myhost$ ssh wayne@otherhost.local

І назва автоматично вирішується на будь-яку IP-адресу іншого хосту в моїй локальній мережі.

Я вирішив почати розгалуження на інші дистрибутиви, і в мене Арк працює на своєму ноутбуці - але якщо я спробую використовувати попередню команду, я отримаю Could not resolve hostname otherhost.local: Name or service not known

Що потрібно, щоб відбутися таке автоматичне вирішення імен (?)?


5
Вам доведеться встановити avahi, а також nss-mdns- для більш детальної інформації перегляньте арку wiki
Ulrich Dangel

Відповіді:


15

Власна відповідь Уейна на сьогодні вже досить стара. Arch з тих пір перейшов на використання systemd замість init-скриптів. Сторінку Avahi вікі Arch оновлено та містить детальну інформацію про те, чому необхідні кроки нижче. Коротше кажучи: Avahi - це інструмент zeroconf, тобто сам по собі не потребує конфігурації для роботи після встановлення на всіх комп'ютерах вашої локальної мережі, але ви повинні налаштувати решту свого програмного забезпечення, щоб він активував запит у Avahi інформацію.

Запустіть їх як root або додайте, sudoде це доречно, у терміналі та замініть nanoредактором на ваш вибір.

  1. pacman -S avahi nss-mdns Встановлює демон-сервіс Avahi та роздільну здатність Multicast DNS.
  2. nano /etc/nsswitch.conf Цей файл розповідає бібліотеці C, як отримати інформацію про службу імен.
  3. Змініть рядок hosts: files dns myhostnameна hosts: files mdns_minimal [NOTFOUND=return] dns myhostname, збережіть та вийдіть.
  4. systemctl start avahi-daemon Запускає службу Avahi вручну, оскільки ми вже завантажилися.виглядаємо за помилки)
  5. systemctl enable avahi-daemon Вмикає службу Avahi під час завантаження.

Я щойно виконував ці дії на ноутбуці Arch, і не потрібно було перезапускати будь-які інші сервіси чи інтерфейс Wi-Fi, щоб інші мої машини відкрили його протягом декількох секунд, і щоб мій ноутбук відкрив їхні послуги.

Оскільки я ще не можу коментувати відповідь ggg, я просто хотів би зазначити тут, що немає необхідності робити це в сценарії запуску - саме для цього потрібно сервіс у systemd. Зробіть це один раз і забудьте про це.


3
Ви навіть можете об'єднати пункти 4 і 5: systemctl enable avahi-daemon --now. Він запускається та вмикає послугу негайно, а не чекати наступного запуску.
Джонатан Комар

11

Завдяки вказівнику на статтю Arch Wiki про Авахі від Ульріха Дангеля, я це зробив:

  1. Встановіть avahi та nss-mdns $ sudo pacman -S avahi nss-mdns
  2. Додати /etc/rc.d/avahi-daemon startв кінціrc.local
  3. Оскільки я бігаю dhcpcd, /etc/dhcpcd.confя прокоментував noipv4llрядок.
  4. Я також бігав $ sudo /usr/sbin/avahi-autopid -D wlan0. Оскільки мені не подобається перезапуск, я не впевнений, чи був необхідний крок 3.
  5. В /etc/nsswitch.confя встановив рядок для читання hosts: files mdns4_minimal dns mdns4.
  6. Потім я побіг $ sudo /etc/rc.d/dbus restartперезапустити dbus.

Після цього просто ssh wayne@other.localпрацював просто працював.


1
Стосовно вашого другого пункту: Ви також можете просто додати "avahi-daemon" до рядка DAEMONS в /etc/rc.conf
Wieland

Я подумав про це, але у вікі було вказано, що у деяких людей проблеми з цим починаються занадто швидко в rc.conf і не вдається, і що розміщення його там, де я це робило, було виправленням.
Уейн Вернер

2

Я не думаю, що нам потрібно avahi-daemonбігти, щоб використовувати .local. Ось що я маю в своєму запуску сценарію. Це набагато простіше порівняно з методом Arch Wiki.

systemctl enable avahi-daemon
avahi-set-host-name $(hostname)
systemctl disable avahi-daemon
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.