Wie kann ich .local-Hostnamen mit Arch Linux verwenden?


18

Wenn ich Ubuntu oder Linux Mint verwende (die einzigen zwei Varianten, die ich ausprobiert habe und die mit Sicherheit funktionieren), kann ich Folgendes ausführen:

wayne@myhost$ ssh wayne@otherhost.local

Der Name wird automatisch in die IP des anderen Hosts in meinem lokalen Netzwerk aufgelöst.

Ich habe beschlossen, in andere Distributionen zu verzweigen, und Arch läuft auf meinem Laptop - aber wenn ich versuche, den vorherigen Befehl zu verwenden, erhalte ich Could not resolve hostname otherhost.local: Name or service not known

Was braucht es, um eine solche automatische Namensauflösung (?) Zu erreichen?


5
Sie müssen installieren avahisowie nss-mdns- für weitere Details schauen Sie sich das Arch-Wiki an
Ulrich Dangel

Antworten:


15

Waynes eigene Antwort ist mittlerweile ziemlich alt. Arch hat seitdem auf die Verwendung von systemd anstelle von Init-Skripten umgestellt. Die Avahi- Seite des Arch-Wikis wurde aktualisiert und enthält Details dazu, warum die folgenden Schritte erforderlich sind. Kurz gesagt: Avahi ist ein Zeroconf-Tool, das heißt, es muss nicht konfiguriert werden, sobald es auf allen Computern in Ihrem LAN installiert ist. Sie müssen jedoch den Rest Ihrer Software so konfigurieren, dass Avahi zur Eingabe von Informationen aufgefordert wird.

Führen Sie diese als root aus oder stellen Sie sie sudogegebenenfalls in einem Terminal voran und ersetzen Sie sie nanodurch den Editor Ihrer Wahl.

  1. pacman -S avahi nss-mdns Installiert den Avahi-Dienstedämon und den Multicast-DNS-Resolver.
  2. nano /etc/nsswitch.conf Diese Datei teilt der C-Bibliothek mit, wie Name-Service-Informationen abgerufen werden.
  3. Ändern Sie die Zeile hosts: files dns myhostnameauf hosts: files mdns_minimal [NOTFOUND=return] dns myhostname, speichern und beenden Sie sie.
  4. systemctl start avahi-daemon Startet den Avahi-Dienst manuell, da wir bereits gebootet sind.
  5. systemctl enable avahi-daemon Aktiviert den Avahi-Dienst beim Booten.

Ich habe diese Schritte gerade auf einem Arch-Laptop ausgeführt, und es war nicht erforderlich, andere Dienste oder die WLAN-Schnittstelle neu zu starten, damit meine anderen Computer sie innerhalb weniger Sekunden erkennen und mein Laptop ihre Dienste erkennen kann.

Da ich die Antwort von ggg noch nicht kommentieren kann, möchte ich hier nur darauf hinweisen, dass dies in einem Startskript nicht erforderlich ist - dafür ist das Aktivieren des Dienstes in systemd vorgesehen. Tu es einmal und vergiss es.


3
Sie können sogar die Schritte 4 und 5 verbinden: systemctl enable avahi-daemon --now. Der Dienst wird sofort gestartet und aktiviert, anstatt auf den nächsten Start zu warten.
Jonathan Komar

11

Dank des Verweises auf den Arch Wiki- Artikel über Avahi von Ulrich Dangel habe ich Folgendes getan:

  1. Installieren Sie avahi und nss-mdns $ sudo pacman -S avahi nss-mdns
  2. /etc/rc.d/avahi-daemon startZum Ende von hinzufügenrc.local
  3. Da ich laufe dhcpcd, habe /etc/dhcpcd.confich die noipv4llZeile auskommentiert.
  4. Ich bin auch gelaufen $ sudo /usr/sbin/avahi-autopid -D wlan0. Da ich keinen Neustart mag, bin ich mir nicht sicher, ob Schritt 3 notwendig war.
  5. In /etc/nsswitch.confsetze ich die Zeile zum Lesen hosts: files mdns4_minimal dns mdns4.
  6. Dann lief ich $ sudo /etc/rc.d/dbus restartdbus neu zu starten.

Danach hat es einfach geklappt ssh wayne@other.local.


1
Zum zweiten Punkt: Sie können auch "avahi-daemon" in die DAEMONS-Zeile in /etc/rc.conf
Wieland,

Ich habe darüber nachgedacht, aber das Wiki zeigte an, dass einige Leute Probleme damit hatten, zu schnell in rc.conf zu starten und dies zu Fehlern zu führen.
Wayne Werner

2

Ich glaube nicht, dass wir avahi-daemonlaufen müssen , um es zu benutzen .local. Hier ist, was ich in meinem Startskript habe. Dies ist viel einfacher als die Methode von Arch Wiki.

systemctl enable avahi-daemon
avahi-set-host-name $(hostname)
systemctl disable avahi-daemon
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.