Jak korzystać z .local nazw hostów w Arch Linux?


18

Jeśli używam Ubuntu lub Linux Mint (jedyne dwa smaki, które wypróbowałem i na pewno działają), mogę uruchomić coś takiego:

wayne@myhost$ ssh wayne@otherhost.local

I nazwa jest automatycznie tłumaczona na dowolny adres IP innego hosta w mojej sieci lokalnej.

Postanowiłem zacząć rozgałęziać się na inne dystrybucje i Arch działa na moim laptopie - ale jeśli spróbuję użyć poprzedniego polecenia, otrzymam Could not resolve hostname otherhost.local: Name or service not known

Co trzeba zrobić, aby tego rodzaju automatyczne rozpoznawanie nazw (?) Miało miejsce?


5
Musisz zainstalować, avahia także nss-mdns- aby uzyskać więcej informacji, zajrzyj na arch wiki
Ulrich Dangel

Odpowiedzi:


15

Odpowiedź Wayne'a jest już dość stara. Od tego czasu Arch przeszedł na używanie systemd zamiast skryptów init. Strona Avahi Arch wiki została zaktualizowana i zawiera szczegółowe informacje o tym, dlaczego potrzebne są poniższe kroki. W skrócie: Avahi to narzędzie zeroconf, co oznacza, że ​​samo nie wymaga konfiguracji, aby działać po zainstalowaniu na wszystkich komputerach w sieci LAN, ale musisz skonfigurować resztę oprogramowania, aby właściwie poprosiło Avahi o informacje.

Uruchom je jako root lub dodaj w sudorazie potrzeby w terminalu i zamień na nanowybrany edytor.

  1. pacman -S avahi nss-mdns Instaluje demona usług Avahi i program rozpoznawania nazw multiemisji.
  2. nano /etc/nsswitch.conf Ten plik informuje bibliotekę C, jak uzyskać informacje o usłudze nazw.
  3. Zmień linię hosts: files dns myhostnamena hosts: files mdns_minimal [NOTFOUND=return] dns myhostname, zapisz i wyjdź.
  4. systemctl start avahi-daemon Uruchamia usługę Avahi ręcznie, ponieważ jesteśmy już uruchomieni. Szukaj błędów)
  5. systemctl enable avahi-daemon Włącza usługę Avahi podczas rozruchu.

Właśnie wykonałem te kroki na laptopie Arch i nie było potrzeby restartowania innych usług lub interfejsu Wi-Fi, aby moje inne maszyny mogły je wykryć w ciągu kilku sekund, a mój laptop odkrył swoje usługi.

Ponieważ nie mogę jeszcze skomentować odpowiedzi ggg, chciałbym tutaj wskazać, że nie trzeba tego robić w skrypcie startowym - po to służy włączanie usługi w systemd. Zrób to raz i zapomnij o tym.


3
Można nawet połączyć kroki 4 i 5: systemctl enable avahi-daemon --now. Uruchamia się i włącza usługę natychmiast, zamiast czekać na kolejne uruchomienie.
Jonathan Komar

11

Dzięki wskaźnikowi do artykułu Arch Wiki na temat Avahi z Ulrich Dangel, to właśnie zrobiłem:

  1. Zainstaluj avahi i nss-mdns $ sudo pacman -S avahi nss-mdns
  2. Dodaj /etc/rc.d/avahi-daemon startna końcurc.local
  3. Ponieważ biegam dhcpcd, /etc/dhcpcd.confskomentowałem noipv4lllinię.
  4. Ja także pobiegłem $ sudo /usr/sbin/avahi-autopid -D wlan0. Ponieważ nie lubię ponownego uruchamiania, nie jestem pewien, czy krok 3 był konieczny.
  5. W /etc/nsswitch.confUstawiłem wiersz do odczytu hosts: files mdns4_minimal dns mdns4.
  6. Potem pobiegłem, $ sudo /etc/rc.d/dbus restartaby zrestartować dbus.

Po prostu po ssh wayne@other.localprostu działało.


1
Jeśli chodzi o twój drugi punkt: równie dobrze możesz po prostu dodać „avahi-daemon” do linii DAEMONS w /etc/rc.conf
Wieland

Myślałem o tym, ale wiki wskazało, że niektórzy ludzie mieli problemy z tym, że zaczynało się zbyt szybko w rc.conf i kończyło się niepowodzeniem, a umieszczenie go tam, gdzie to zrobiłem, było naprawą.
Wayne Werner

2

Nie sądzę, że musimy avahi-daemonbiegać, aby z niego korzystać .local. Oto, co mam w skrypcie uruchamiania. Jest to o wiele prostsze w porównaniu do metody Arch Wiki.

systemctl enable avahi-daemon
avahi-set-host-name $(hostname)
systemctl disable avahi-daemon
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.