* .localドメインがvagrant-dnsでDNSサーバーを使用できるようにしようとしています。これが機能するために、dnsmasqをその前で実行するように設定しました。
NetworkManagerはインストールされていますが、dns=none
に設定されています
resolve.conf:
nameserver 127.0.0.1 #this points to dnsmasq
テストは解決します:
$ nslookup domain.local
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: domain.local
Address: 10.222.222.22
ディグは同じを解決します:
$ Dig domain.local
; <<>> Dig 9.10.3-P4-Debian <<>> domain.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18052
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;domain.local. IN A
;; ANSWER SECTION:
domain.local. 86400 IN A 10.222.222.22
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Jan 29 19:18:52 CST 2017
;; MSG SIZE rcvd: 49
それが正しいアドレスです。私はアドレスにpingできます:
ping 10.222.222.22
PING 10.222.222.22 (10.222.222.22) 56(84) bytes of data.
64 bytes from 10.222.222.22: icmp_seq=1 ttl=64 time=0.185 ms
しかし、アドレスにpingすることはできません。
$ ping domain.local
ping: domain.local: Name or service not known
また、ブラウザでホストされているページを読み込もうとしましたが、DNSエラーが発生します。奇妙なことに、他のすべてのサイトは正常に動作しているように見えますが、localhost DNSサーバーを使用しているかどうかはわかりません。
Debian 8 Jessieの使用/テスト
答えを見つけた!したがって、ほとんどの人は、/ etc/hostsファイルがDNSサーバーのようにドメインを解決することを知っています。しかし、システムはそのファイルを調べることをどのように知っていますか?そして、どのように見て、そのファイルまたはDNSサーバーをチェックするかをどのようにして知るのでしょうか。
ファイルがあります:/etc/nsswitch.conf
私は行を持っていました:
hosts: files myhostname mdns4_minimal [NOTFOUND=return] dns
これは、最初に/ etc/hostsなどのファイルを確認することを意味します。次に、システムのホスト名を確認します。次に、mdns4があります。これは、ローカルネットワーク上の他のマシンを見つけるためのプロトコルだと思います。
Mdns4の後は私を阻んでいたものです。 [NOTFOUND=return]
。 mdnsは、.local
で終わる名前を探します。見つからない場合は、次の最後の検索メソッドdns
に渡るだけでなく、実際に停止して、ドメインが存在しないことをシステムに通知します。 dnsmasqで設定したドメインは.local
ドメインだったので、そこに到達することはありませんでした。
したがって、これを修正するには2つの方法があります。 1つ目は、[NOTFOUND=return]
を削除することです。これが私が選んだ方法で、うまくいきます。 mdnsが.local
を見つけてdns
に渡す前にそれを検索しようとするため、少し遅延があります。
これは私のファイルが今どのように見えるかです:
hosts: files myhostname mdns4_minimal dns
私が実際にmdnsを使用していないので、別のオプションは、それを完全に削除するか、代わりに.alocal
のような別のtldを使用するように指示する方法がありました。 。
私の場合、/etc/resolv.conf
に複数のネームサーバー行があり、使用したいのは最初の行です。
私はマニュアルを読みます、それは言います:
複数のサーバーが存在する場合、リゾルバーライブラリーは、リストされている順序でそれらを照会します。
しかし、私は常に最後のネームサーバーを最初に選択することを発見しました。
それで、/etc/resolv.conf
の行を逆にしました
質問は解決しました。
RFCによると、ドメイン名ではアンダースコアは使用できません。私の場合、これは問題でした。 Dig
およびnslookup
は独自の方法で名前を解決し、これで問題ありません。 pingはシステムライブラリを使用して失敗します。実際には、名前の一部がアンダースコアで始まっているか終了している場合、pingは解決に失敗します。