web-dev-qa-db-ja.com

dnsmasqは/ etc / hostsを読み取るが、使用しない

Dnsmasqのデフォルトインストールを実行しました。 Digを実行すると、dnsmasq(127.0.0.1)を使用しているようですが、結果には/ etc/hostsに含まれているホスト名が含まれていません。

/ etc/hosts:

192.168.1.13 Sun

ターミナルで:

$ Dig Sun

; <<>> Dig 9.6-ESV-R4 <<>> Sun
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 32131
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;Sun.               IN  A

;; AUTHORITY SECTION:
.           9699    IN  SOA a.root-servers.net. nstld.verisign-grs.com. 2011041100 1800 900 604800 86400

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Apr 12 05:20:56 2011
;; MSG SIZE  rcvd: 96

ターミナルで:

$ Dig @localhost Sun

; <<>> Dig 9.6-ESV-R4 <<>> @localhost Sun
; (2 servers found)
;; global options: +cmd
;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 43763
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;Sun.               IN  A

;; AUTHORITY SECTION:
.           10800   IN  SOA a.root-servers.net. nstld.verisign-grs.com. 2011041800 1800 900 604800 86400

;; Query time: 40 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Apr 18 17:15:23 2011
;; MSG SIZE  rcvd: 96

Localとexpand-hosts/domainを使用してみましたが、どちらも機能していないようです。私の主な目標は、LAN DNSをホストするために1台のマシンを使用できるようにすることです。

これが私の/etc/resolv.confです

nameserver 127.0.0.1
domain members.linode.com
search members.linode.com
nameserver 72.14.188.5
nameserver 72.14.179.5

および/etc/dnsmasq.conf

domain-needed
bogus-priv

それは違いを生むなら、これはすべてubuntu 10.04マシン上にあります。私はこのガイドに従っています: http://www.mythicalbeast.co.uk/linux/dnsmasq_howto.html (それはDHCPも設定するため、逐語的ではありません)

6
Zach Dwiel

私はこれが2011年からであることを知っていますが、それでもまだ受け入れられた答えがないので:

今日、私は同様の問題を抱えていました。 Curlは、それぞれのヘッダーを持つhaproxy lxcから期待される応答を取得するように機能しましたが、ローカルdnsmasqがcontainer.testの解決策を提供しませんでした(nslookupで確認)。

Googleが私を見つけた この投稿 Hugo Hedenによる、これは/etc/hostsのフォーマットに問題がある可能性があると述べた。

私にとって問題を解決したのは:

  1. no-hosts/etc/dnsmasq.confのコメントを解除
  2. 123.123.123.12 container.testを新しいファイルに入れます。 /etc/dnsmasq.hosts
  3. addn-hosts=/etc/dnsmasq.hosts/etc/dnsmasq.confに追加して、dnsmasqが新しいファイルを指すようにしました
3
Jan Alleman

dnsmaq FAQ からのこのスニペットは関連があるようです:

Q:インターネット上の名前は正常に機能していますが、/ etc/hostsまたはDHCPからローカル名を検索しても機能しないようです。

A:リゾルバーコードは、ドットを含まない名前を指定すると、奇妙な動作をすることがあります。Win2kおよびWinXPは、DNSをまったく使用せず、WINSを使用して名前を検索する場合があります。 UNIXの場合、このトピックの詳細については、「man resolv.conf」の「options ndots:」を参照してください。 「nslookup」または「Dig」を使用してルックアップをテストすると機能しますが、「ping」を実行しようとするとルックアップが失敗し、ホスト名の末尾にドットを追加すると問題が解決します。 (つまり、「ping myhost」は失敗しますが、「ping myhost。」は機能します。解決策は、すべてのホストにドメインセットがあることを確認することです(resolv.confで「ドメイン」、またはDHCPサーバーでドメインを設定します。以下を参照してください) fr Windows XP and Mac OS X)。どのドメインでも可能ですが、「localnet」は従来のものです。「myhost」を解決すると、リゾルバは「myhost.localnet」を検索しようとします。そのためには、dnsmasqにその名前に応答させる必要があります。これを行うには、/ etc/hostsの各名前にドメインを含めるか、-expand-hostsオプションと--domainオプションを使用します。

だからあなたの/etc/resolv.conf、および開始時にdnsmasqに入力している引数。

2
Phil Hollenback

/etc/resolv.confはどのように見えますか?ドメインまたは検索要素を探します。

Dnsmasqの.localドメインをセットアップし、それをresolv.confに追加すると、機能するはずです。

Dig Sun.local @localhostを試してください。

1
dmourati

Dig、Host、およびnslookupは、dnsサーバーを照会するために特別に作成されています。/etc/hostsを調べず、実際には/etc/nsswitch.confを無視します

ただし、gethostbyname呼び出しを使用するものはすべて/etc/nsswitch.confを使用します。

たとえば、pingは/ etc/hostsが提供するファイルを/etc/nsswitch.confのdnsの前に使用する必要があります。

0
rfelsburg