Der Befehl host (1) verwendet nur den ersten Nameserver.


3

Nach der Manpage, host sollte den Server oder die Server abfragen, die in aufgeführt sind /etc/resolv.conf", aber es wird nur der erste Eintrag in dieser Datei verwendet:

thefourthtower:$cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 192.168.1.254
domain gateway.2wire.net
search gateway.2wire.net
thefourthtower:$host thefourthtower
Host thefourthtower not found: 3(NXDOMAIN)
thefourthtower:$host thefourthtower 192.186.1.254
thefourthtower.gateway.2wire.net has address 192.168.1.74

Das 2wire Bit kommt von einem 2Wire-Modem / Router. AT & amp; T (oder 2Wire?) Haben das Ding mit einer sehr schlechten Firmware ausgestattet und sein DNS-Server (Cache) ist im Allgemeinen langsamer als Google Public DNS, ein Problem, das durch AT & amp; Ts eigene flockige DNS-Server verursacht wird (keine Option für alternative Server).

Kann ich bekommen host oder nslookup weiter verwenden /etc/resolv.conf Einträge (und vermeiden Sie es, Server manuell anzugeben)?

Oder ist die einzige Lösung, um Hosts manuell zuzuordnen /etc/hostsgegeben die gewünschte Reihenfolge der resolv.conf Einträge?

AKTUALISIEREN

Nichts in den obigen Ausführungen impliziert, dass der Nameserver von Google meiner Meinung nach über meine lokalen Hosts Bescheid wissen sollte.

Ich frage: Kann man einen bestimmten Nameserver nur für lokale Namen verwenden (da ein Name wie 'thefourthtower' lokal sein muss)?

Es sieht aus wie die Antwort ist NEIN , und ich muss einen Nameserver auf meinem Computer ausführen, da der vorhandene lokale Nameserver so schlecht ist.

Antworten:


3

Das host Der Befehl verwendet die Resolver-Bibliothek, und diese Bibliothek verwendet die Nameserver-Einträge in /etc/resolv.conf in der angegebenen Reihenfolge, jedoch nur bei Fehlern. Der Zweck mehrerer Einträge besteht in der Redundanz, falls der Primärserver aus irgendeinem Grund ausfällt. Wenn der primäre Server jedoch eine positive oder negative Antwort liefert (z. B. NXDOMAIN), werden die anderen Nameserver-Einträge nicht verwendet. Sie können bis zu drei für dreifache Redundanz haben.

Externe Nameserver wie Googles kennen Ihre lokalen Hostnamen nicht. Sie sollten diese in Ihre Datei / etc / hosts einfügen oder einen lokalen Nameserver ausführen. Der Betrieb eines lokalen Nameservers hat den Vorteil, dass DNS-Suchvorgänge zwischengespeichert werden, wodurch zukünftige oder wiederholte Suchvorgänge erheblich beschleunigt werden.

ich benutze dnsmasq als lokaler DNS und Cache. Das hilft wirklich sehr. Stellen Sie einfach Ihre /etc/resolv.conf benutzen 127.0.0.1 erster (oder einziger) Nameserver, und konfigurieren Sie dnsmasq so, dass die ISP-Upstream-Server verwendet werden. Selbst wenn Ihr ISP langsam ist, wird Ihr lokaler Cache die meiste Zeit kompensieren.


1

Entfernen Sie die ersten beiden Nameserver-Einträge von /etc/resolv.conf wenn sie keine Informationen über Hosts in Ihrem LAN oder über die lokal verwendete Domäne haben.

Die NXDOMAIN-Antwort kann folgende Ursachen haben: gateway.2wire.net ist kein registrierter Domainname, der im Internet verwendet werden kann.

$ dig gateway.2wire.net any

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_5.3 <<>> gateway.2wire.net any
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 7984
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;gateway.2wire.net.             IN      ANY

;; AUTHORITY SECTION:
2wire.net.              1200    IN      SOA     ns1.2wire.com. hostmaster.2wire.com. 2007041700 3600 600 604800 1200

;; Query time: 209 msec
;; SERVER: 10.0.0.9#53(10.0.0.9)
;; WHEN: Tue Aug 30 13:29:23 2011
;; MSG SIZE  rcvd: 95

Beachten Sie, dass der autorisierende Nameserver für 2wire.net Sagen wir, es gibt keine Domain wie gateway.2wire.net. Ich denke, es ist eine Annehmlichkeit, die von 2wire-Produkten nur auf LAN-Ebene verwendet wird.

8.8.8.8 ist ein Google-Nameserver und sollte nicht über Hosts in Ihrem privaten LAN und die etwas seltsamen Konfigurationsoptionen Ihres 2wire-Routers informiert werden.

Der Name des Computers, auf dem sich der vierte Turm befindet, sollte in einem eigenen Namen erscheinen /etc/hosts Tabelle (die Sie vor dem DNS konsultieren sollten) und die dem DNS-Nameserver in Ihrem LAN (d. h. Ihrem 2wire-Router) wirklich bekannt sein sollte.

Tut Ihr /etc/nsswitch.conf enthalten hosts: files dns ?


Ich glaube nicht nsswitch.conf wird respektiert von host seit dem eintrag in /etc/hosts existiert.
reve_etrange

@reve: true "host ist ein einfaches Dienstprogramm zum Durchführen von DNS-Lookups", aber ich gehe davon aus, dass Sie nur verwenden host zur Diagnose eines Namensauflösungsproblems mit einer Anwendung. Anwendungen, die verwenden gethostbyname() wird beeinflusst von nsswitch.conf.
RedGrittyBrick

0

Sie können den folgenden Code zum Abfragen verwenden alles Nameserver in Ihrer /etc/resolv.conf:

grep '^nameserver' /etc/resolv.conf | cut -c 12- | xargs -i host [HOSTNAME] {}

Oder wenn Sie es vorziehen dig(1):

grep '^nameserver' /etc/resolv.conf | cut -c 12- | xargs -i dig @{} [HOSTNAME]
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.