So machen Sie einen Computer über den Hostnamen vom LAN aus zugänglich

120

Hier sind Details des Rechners, auf den ich mit seinem Hostnamen zugreifen möchte:

$ hostname
hostname
$ cat /etc/hosts
127.0.0.1   localhost
127.0.1.1   hostname.company.local  hostname

Es ist eine Standardinstallation von Debian 6 (Squeeze), also habe ich noch nichts gespielt.

Das bekomme ich von einer Maschine (die Debian Unstable ausführt), die versucht, auf die obige Maschine zuzugreifen:

$ ping hostname
ping: unknown host hostname
$ ping hostname.company.local
ping: unknown host hostname.company.local
$ cat /etc/resolv.conf
nameserver 192.168.2.21
nameserver 192.168.2.51
search company.local
Tshepang
quelle
Sie müssen auf dem Client (dem Computer, auf dem Sie ausgeführt werden ping) oder auf einem Computer, den der Client konsultiert, etwas tun . Was ist das Betriebssystem auf dem Client? Wie ist die DNS-Konfiguration?
Gilles
Was ist eine DNS-Konfiguration? Siehe auch den aktualisierten Beitrag.
Tshepang
1
Ist meine Antwort die Art von Dingen, nach denen Sie gesucht haben? Wenn ja, muss die Frage vereinfacht werden - wer kennt sich mit DNS aus pingund wer /etc/hostsnicht?
Gilles
Danke vielmals. Werde mal schauen. Oh, und es ist mehr ein Artikel als eine Antwort :)
Tshepang
3
Die Antwort lautet "install and configure dnsmasq". Getan. :)
Warren Young

Antworten:

145

Im Internet, einschließlich lokaler Netzwerke, rufen sich Computer über IP-Adressen gegenseitig an . Um von Maschine A aus unter Verwendung des Namens von Maschine B auf Maschine B zuzugreifen, muss Maschine A eine Möglichkeit haben, den Namen von B seiner IP-Adresse zuzuordnen. Es gibt drei Möglichkeiten, Maschinennamen in A zu deklarieren:

  • eine hosts-Datei . Dies ist eine einfache Textdatei, die Namen Adressen zuordnet.
  • das Domain Name System (DNS) . Dies ist die im globalen Internet verwendete Methode. Wenn Sie diese Seite beispielsweise in einen Browser laden, sendet Ihr Computer zunächst eine DNS-Anfrage, um die Adresse von zu erfahren unix.stackexchange.com.
  • andere Namensdatenbanken wie NIS , LDAP oder Active Directory . Diese werden in einigen Unternehmensnetzwerken verwendet, jedoch nicht sehr häufig (viele Netzwerke, die NIS, LDAP oder AD für Benutzerdatenbanken verwenden, verwenden DNS für Computernamen). Wenn Ihr Netzwerk eine dieser Funktionen verwendet, haben Sie einen professionellen Netzwerkadministrator und sollten ihn fragen, was zu tun ist.

Es gibt viele Möglichkeiten, wie diese in der Praxis funktionieren können. es ist unmöglich, sie alle abzudecken. In dieser Antwort beschreibe ich einige häufige Situationen.

Hosts-Datei

Die hosts-Dateimethode hat den Vorteil, dass keine spezielle Methode erforderlich ist. Es kann umständlich sein, wenn Sie über mehrere Computer verfügen, da Sie jeden Computer aktualisieren müssen, wenn sich der Name eines Computers ändert. Es ist nicht geeignet, wenn die IP-Adresse von B dynamisch zugewiesen wird (sodass Sie bei jeder Verbindung mit dem Netzwerk eine andere erhalten).

Eine Hosts-Datei ist eine einfache Liste von Zeilen, die Namen zu IP-Adressen zuordnen. Es sieht aus wie das:

127.0.0.1       localhost localhost.localdomain
198.51.100.42   darkstar darkstar.bands

Auf Unix-Systemen lautet die Hosts-Datei /etc/hosts. Unter Windows ist es c:\windows\system32\drivers\etc\hosts. Nahezu jedes Betriebssystem, mit dem Sie eine Verbindung zum Internet herstellen können, verfügt über eine ähnliche Datei. Wikipedia hat eine Liste .

So fügen Sie einen Eintrag für B in die Hosts-Datei von A ein:

  1. Bestimmen Sie die IP-Adresse von B. Führen Sie auf B den Befehl aus ifconfig(wenn der Befehl nicht gefunden wird, versuchen Sie es /sbin/ifconfig). Die Ausgabe enthält folgende Zeilen:

    eth1      Link encap:Ethernet  HWaddr 01:23:45:67:89:ab
              inet addr:10.3.1.42  Bcast:10.3.1.255  Mask:255.255.255.0
    

    In diesem Beispiel lautet die IP-Adresse von B 10.3.1.42. Wenn mehrere inet addr:Zeilen vorhanden sind , wählen Sie die Zeile aus, die Ihrer Netzwerkkarte entspricht, niemals den loEintrag oder einen Tunnel oder virtuellen Eintrag.

  2. Bearbeiten Sie die Hosts-Datei auf A. Wenn A ein Unix-System ausführt, müssen Sie sie als Superuser bearbeiten /etc/hosts. Siehe Wie führe ich einen Befehl als Systemadministrator (root) aus ?

DHCP + DNS in Heim- oder kleinen Büronetzwerken

Diese Methode ist mit Abstand die einfachste, wenn Sie über die erforderliche Ausrüstung verfügen. Sie müssen nur ein Gerät konfigurieren, und alle Ihre Computer kennen die Namen der anderen. Bei dieser Methode wird davon ausgegangen , dass Ihre Computer ihre IP-Adressen über DHCP beziehen. Hierbei handelt es sich um eine Methode, mit der Computer automatisch eine IP-Adresse abrufen, wenn sie eine Verbindung zum Netzwerk herstellen. Wenn Sie nicht wissen, was DHCP ist, ist dies wahrscheinlich der Fall.

Wenn Ihr Netzwerk über einen Heimrouter verfügt , ist dies der beste Ort, um Namen für Computer zu konfigurieren, die an diesen Router angeschlossen sind. Zunächst müssen Sie die MAC-Adresse von B ermitteln. Jedes Netzwerkgerät verfügt über eine eindeutige MAC-Adresse. Führen Sie auf B den Befehl aus ifconfig -a(wenn der Befehl nicht gefunden wird, versuchen Sie es /sbin/ifconfig -a). Die Ausgabe enthält folgende Zeilen:

    eth1      Link encap:Ethernet  HWaddr 01:23:45:67:89:ab

In diesem Beispiel lautet die MAC-Adresse 01:23:45:67:89:ab. Sie müssen die HWaddr-Leitung auswählen, die dem Netzwerkanschluss entspricht, der über ein Kabel mit dem Router verbunden ist (oder die WLAN-Karte, wenn Sie über WLAN verbunden sind). Wenn Sie mehrere Einträge haben und nicht wissen, um welche es sich handelt, schließen Sie das Kabel an und überprüfen Sie, welches Netzwerkgerät eine IP-Adresse erhält ( inet addrZeile direkt darunter).

Suchen Sie nun auf der Weboberfläche Ihres Routers nach einer Einstellung wie „DHCP“. Name und Ort der Einstellung hängen vollständig vom Router-Modell ab, die meisten verfügen jedoch über ähnliche Grundeinstellungen. So sieht es auf einer Tomato-Firmware aus :

Tomaten-Screenshot

Geben Sie die MAC-Adresse, eine IP-Adresse und den gewünschten Namen ein. Sie können eine beliebige IP-Adresse im Adressbereich Ihres lokalen Netzwerks auswählen. Die meisten Heimrouter sind für einen Adressbereich der Form 192.168 vorkonfiguriert. x . y oder 10. x . y . z . Auf dem oben gezeigten Tomato-Router gibt es beispielsweise auf der Registerkarte "Netzwerk" eine Einstellung für "Router-IP-Adresse" mit dem Wert 10.3.0.1 und eine Einstellung für "Subnetzmaske" mit dem Wert 255.255.255.0, was bedeutet, dass Computer eingeschaltet sind Das lokale Netzwerk muss eine Adresse der Form 10.3.0 haben. z . Es gibt auch einen Adressbereich für automatisch zugewiesene DHCP-Adressen (10.3.0.129–10.3.0.254). Wählen Sie für Ihre manuell zugewiesene DHCP-Adresse eine aus, die nicht in diesem Bereich liegt.

Verbinden Sie nun B mit dem Netzwerk. Es sollte die von Ihnen angegebene IP-Adresse erhalten und über den angegebenen Namen von jedem Computer im Netzwerk erreichbar sein.

Machen Sie Ihren eigenen DNS-Server mit Dnsmasq

Wenn Sie keinen fähigen Heimrouter haben, können Sie dieselbe Funktionalität auf jedem Linux-Computer einrichten. Ich werde erklären, wie Sie mit Dnsmasq DNS einrichten . Es gibt viele ähnliche Programme. Ich habe mich für Dnsmasq entschieden, weil es einfach zu konfigurieren und leicht zu handhaben ist (wie es beispielsweise der oben abgebildete Tomato-Router verwendet). Dnsmasq ist auf den meisten Linux- und BSD-Distributionen für PCs, Server und Netzwerkgeräte verfügbar.

Wählen Sie einen Computer, der immer eingeschaltet ist, eine statische IP-Adresse hat und auf dem eine Art Linux oder BSD ausgeführt wird. Nennen wir es S (für Server). Installieren Sie auf S das dnsmasqPaket (sofern es nicht bereits vorhanden ist). Im Folgenden gehe ich davon aus, dass die Konfigurationsdatei ist /etc/dnsmasq.conf; Der Speicherort kann bei einigen Distributionen variieren. Jetzt müssen Sie einige Dinge tun.

  • Weisen Sie Dnsmasq an, Ihre Hostnamen zusätzlich zu denen aus dem Internet bereitzustellen. Am einfachsten ist es, die Namen und IP-Adressen einzugeben /etc/hosts(siehe Abschnitt „Hosts-Datei“ oben) und sicherzustellen, dass /etc/dnsmasq.confdie no-hostsDirektive nicht unkommentiert ist. (Zeilen, die mit einem beginnen, #sind auskommentiert.) Sie können die Namen in eine andere Datei einfügen. Wenn Sie dies tun, fügen Sie eine Zeile addn-hosts=/path/to/hosts/fileein /etc/dnsmasq.conf.
  • Teilen Sie Dnsmasq mit, wie IP-Adressen für Computernamen im Internet abgerufen werden sollen.

    • Wenn Sie Debian, Ubuntu oder ein Derivat verwenden, installieren Sie das resolvconfPaket. In den meisten Fällen funktioniert alles sofort.
    • Wenn Ihnen Ihr Netzwerkadministrator oder Ihr Internetdienstanbieter die Adressen von DNS-Servern mitgeteilt hat, geben Sie diese ein /etc/dnsmasq.conf, zum Beispiel:

      server=8.8.8.8
      server=8.8.4.4
      
    • Wenn Sie Ihre aktuellen DNS-Einstellungen nicht kennen, schauen Sie in die Datei /etc/resolv.conf. Wenn Sie eine Zeile wie sehen nameserver 8.8.8.8, fügen Sie eine Zeile server=8.8.8.8ein /etc/dnsmasq.conf. Nachdem Sie geändert haben /etc/dnsmasq.conf, starten Sie Dnsmasq neu. Der Befehl dazu hängt von der Verteilung ab. Typische Möglichkeiten sind restart dnsmasqoder /etc/init.d/dnsmasq restart.

  • Weisen Sie S an, den Dnsmasq-Dienst für alle Hostnamenanforderungen zu verwenden. Bearbeiten Sie die Datei /etc/resolv.conf(als root), entfernen Sie jede nameserverZeile und setzen Sie nameserver 127.0.0.1stattdessen.
    • Wenn Sie resolvconf unter Debian oder Ubuntu verwenden, ist das /etc/resolv.confmöglicherweise nicht optimal, wenn Sie das resolvconfPaket mit laufendem Netzwerk installiert haben . Stellen Sie sicher , dass die Dateien base, headund tailin dem /etc/resolvconf/resolv.conf.d/Verzeichnis keine enthalten nameserverEinträge, dann führen Sie resolvconf -u(als root).
  • Weisen Sie die anderen Computer an, S als DNS-Server zu verwenden. Bearbeiten /etc/resolv.confund ersetzen Sie alle nameserverZeilen durch eine einzige, nameserver 10.3.0.2wobei 10.3.0.2 die IP-Adresse von S ist (siehe oben, um die IP-Adresse von S herauszufinden).

Sie können Dnsmasq auch als DHCP- Server verwenden, damit Computer automatisch die Adresse erhalten, die ihrem Namen entspricht. Dies würde den Rahmen dieser Antwort sprengen. Konsultieren Sie die Dnsmasq-Dokumentation (es ist nicht schwierig). Beachten Sie, dass in einem bestimmten lokalen Netzwerk nur ein einziger DHCP-Server vorhanden sein kann (die genaue Definition des lokalen Netzwerks würde den Rahmen dieser Antwort sprengen).

Namen im globalen Internet

Bisher habe ich ein lokales Netzwerk angenommen. Was ist, wenn Sie einer Maschine, die sich in einem anderen Winkel der Welt befindet, einen Namen geben möchten? Sie können weiterhin eine der oben genannten Techniken anwenden, mit der Ausnahme, dass die Teile, die DHCP betreffen, nur in einem lokalen Netzwerk anwendbar sind. Wenn Ihre Computer über öffentliche IP-Adressen verfügen, können Sie alternativ Ihren eigenen öffentlichen Namen für sie registrieren. (Sie können einem öffentlichen Namen auch eine private IP-Adresse zuweisen. Dies ist weniger verbreitet und weniger nützlich, es gibt jedoch keine technischen Schwierigkeiten.)

Erhalten Sie Ihren eigenen Domainnamen

Sie können Ihren eigenen Domainnamen erhalten und Hostnamen innerhalb dieser Domain IP-Adressen zuweisen. Sie müssen den Domainnamen bei einem Domainnamenanbieter registrieren. Dies kostet in der Regel 10 bis 15 US-Dollar pro Jahr (für die günstigsten Domains). Verwenden Sie die Webschnittstelle Ihres Domain Name Providers, um Hostnamen Adressen zuzuweisen.

Dynamisches DNS

Wenn Ihre Computer über eine dynamische IP-Adresse verfügen, können Sie das dynamische DNS- Protokoll verwenden, um die IP-Adresse zu aktualisieren, die dem Computernamen zugeordnet ist, wenn sich die Adresse ändert. Nicht alle Domain-Namen-Anbieter unterstützen dynamisches DNS. Kaufen Sie also vor dem Kauf ein. Für den persönlichen Gebrauch stellt No-IP einen kostenlosen dynamischen DNS-Dienst zur Verfügung, wenn Sie eigene Domains verwenden (z example.ddns.net. B. ).

Gilles
quelle
Erstellen Sie Ihren eigenen DNS-Server mit Dnsmasq: Wie kann ich einem anderen Computer mitteilen, S zu verwenden, wenn auf dem anderen Computer Windows installiert ist
Radu Rădeanu
@Radu Sie können die einer Verbindung zugeordneten DNS-Server über die Systemsteuerung ändern. Ich denke, Sie müssen die Verbindungseigenschaften der Netzwerkschnittstelle aufrufen.
Gilles
Ich habe c: \ windows \ system32 \ drivers \ etc \ hosts hinzugefügt und es funktioniert. Vielen Dank!
Radu Rădeanu
Ich zog mir die Haare heraus und fand sie im Router, wie Sie es vorgeschlagen haben. Danke für die ausführlichen Informationen!
Jason Turan
Wenn es sich um ein Unternehmensnetzwerk handelt, muss ich die Infrastrukturabteilung informieren. füge ich meinen Linux Mac der DNS Server Liste hinzu?
WesternGun
24

Verwenden Sie Multicast-DNS (mDNS). Dies ist ein Null-Konfigurationsprotokoll, das in LAN-Subnetzen funktioniert. Kein Server erforderlich. Verwendet die .localTLD (die Sie bereits verwenden).

Weil Sie fragen, scheint alles andere übertrieben. Wenn nicht, würden Sie wahrscheinlich nicht fragen.

tne
quelle
1
mDNS scheint unter Windows nicht unterstützt zu werden, ohne auf jeder Windows-Box etwas zu installieren.
Zitrax
1
@ Zitrax Guter Punkt (dies ist allerdings eine * nix-Site). Relevante Informationen für das Windows-Setup finden Sie dort - relativ unkompliziert.
Tne
3
Aka Zeroconf oder Bonjour. Bereitgestellt von avahiPaket (en). Sie können Ihr Netzwerk beispielsweise über abfragen avahi-browse -alr.
DanMan
4
vi /etc/dhcp3/dhclient.conf

send host-name "ubuntu-laptop";

und

/etc/init.d/networking restart
LanceBaynes
quelle
Sollte ich dies auf dem Client oder Host ausführen?
Tshepang
Das erste Bit wird auf dem DHCP-Server ausgeführt (und Sie möchten es ausführen service restart dhcpd). Der zweite Teil würde auf dem Client ausgeführt, und auf den meisten Distributionen sollte jetzt als ausgeführt werden service networking restart.
Caleb
Soweit ich mich erinnere, muss ich dies nur auf der Client-Seite
ausführen
3

Computer wissen nicht nur auf magische Weise, welche Hostnamen zu welchen IP-Adressen gehören. Sogar auf localhost ist eine Art Nachschlag beteiligt.

Sie müssen Ihre anderen Systeme so konfigurieren, dass sie einen Namenssuchdienst verwenden. Dies können /etc/hostsClient-, LDAP-, NSSwitch- oder normale DNS-Server sein. Ich verwende bindund gebe alle lokalen Maschinen innerhalb einer lokalen Domain ein und lasse sie dann DNS für diese Site bereitstellen.

Caleb
quelle