web-dev-qa-db-ja.com

ドメインを解決してIPにpingできるが、ドメインにpingできない

* .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の使用/テスト

6
DAB

答えを見つけた!したがって、ほとんどの人は、/ 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を使用するように指示する方法がありました。 。

9
DAB

私の場合、/etc/resolv.confに複数のネームサーバー行があり、使用したいのは最初の行です。

私はマニュアルを読みます、それは言います:

複数のサーバーが存在する場合、リゾルバーライブラリーは、リストされている順序でそれらを照会します。

しかし、私は常に最後のネームサーバーを最初に選択することを発見しました。

それで、/etc/resolv.confの行を逆にしました

質問は解決しました。

1
kasora

RFCによると、ドメイン名ではアンダースコアは使用できません。私の場合、これは問題でした。 Digおよびnslookupは独自の方法で名前を解決し、これで問題ありません。 pingはシステムライブラリを使用して失敗します。実際には、名前の一部がアンダースコアで始まっているか終了している場合、pingは解決に失敗します。

0
user3132194