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も設定するため、逐語的ではありません)
私はこれが2011年からであることを知っていますが、それでもまだ受け入れられた答えがないので:
今日、私は同様の問題を抱えていました。 Curlは、それぞれのヘッダーを持つhaproxy lxcから期待される応答を取得するように機能しましたが、ローカルdnsmasqがcontainer.test
の解決策を提供しませんでした(nslookupで確認)。
Googleが私を見つけた この投稿 Hugo Hedenによる、これは/etc/hosts
のフォーマットに問題がある可能性があると述べた。
私にとって問題を解決したのは:
no-hosts
の/etc/dnsmasq.conf
のコメントを解除123.123.123.12 container.test
を新しいファイルに入れます。 /etc/dnsmasq.hosts
addn-hosts=/etc/dnsmasq.hosts
を/etc/dnsmasq.conf
に追加して、dnsmasqが新しいファイルを指すようにしました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に入力している引数。
/etc/resolv.confはどのように見えますか?ドメインまたは検索要素を探します。
Dnsmasqの.localドメインをセットアップし、それをresolv.confに追加すると、機能するはずです。
Dig Sun.local @localhostを試してください。
Dig、Host、およびnslookupは、dnsサーバーを照会するために特別に作成されています。/etc/hostsを調べず、実際には/etc/nsswitch.confを無視します
ただし、gethostbyname呼び出しを使用するものはすべて/etc/nsswitch.confを使用します。
たとえば、pingは/ etc/hostsが提供するファイルを/etc/nsswitch.confのdnsの前に使用する必要があります。