*を取得しようとしています。。地元のvagrant-dnsでDNSサーバーを使用するには、ドメインを使用してください。動作させるために、dnsmasqがその前で実行されるように設定しました。
NetworkManagerがインストールされましたが、次のように設定されました。dns=none
解決.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は同じ問題を解決します。
$ 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
正確な住所です。 IPに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/テスト
答え1
答えを見つけました!したがって、ほとんどの人は、/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つの方法があります。最初は削除です[NOTFOUND=return]
。それが私がこれを選んだ方法で、とても素敵に動作します。 mdnsが見て.local
渡す前に探してみようとしているので、少し遅れていますdns
。
現在私のファイルは次のとおりです。
hosts: files myhostname mdns4_minimal dns
別のオプションは、実際にはmdnsを使用しないため、mdnsを完全に削除したり、別のtldを使用するように指示する方法があることです。.alocal
しかし、そうすればmdnsを効果的に無効にすることができると思います。
答え2
私の場合は、複数のネームサーバー行があり、/etc/resolv.conf
私が使用したい行は最初の行にありました。
私は指示を読んで、次のように言いました。
複数のサーバーがある場合、パーサーライブラリはリストされた順序で照会します。
しかし、私はそれが常に最後のネームサーバーを最初に選択することを発見しました。
だから路線を逆に変えました。/etc/resolv.conf
問題が解決しました。
答え3
RFCによると、ドメイン名にアンダースコアを使用することはできません。私が知る限り、これは問題です。名前を確認するために独自の方法を使用してもdig
大丈夫nslookup
です。 Pingはシステムライブラリを使用しますが、失敗します。実際、名前の一部が下線で始まるか終わる場合、pingは解析できません。
答え4
ユースケースの小さなサブセット(例:Fedora Core 31、長いアップグレード履歴)では、問題は、nss-mdns
avahi-daemonソケットへのパスがハードコーディングされているが別のソケットパスを指定したこと/var/run/avahi-daemon/socket
です。/usr/lib/systemd/system/avahi-daemon.socket
ListenStream=/run/avahi-daemon/socket
/var/run
そして、シンボリックリンク/run
(または/var/run/avahi-daemon
シンボリックリンク)しないと/run/avahi-daemon
接続されません。以下の返信を書いて偶然にこの内容を発見しました。Red Hat バグジラのバグそして走っている
strace -e open,openat,connect,read /usr/bin/getent hosts MY_PRINTER_NODE.local
開発者/メンテナンス者のための有用な情報を十分にデバッグし、準備中に接続が失敗することがわかりました。
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/avahi-daemon/socket"}, 110) = -1 ENOENT (No such file or directory)
好奇心にnsswitch.conf
次の行を使用しました。
hosts: files mdns4 [NOTFOUND=return] dns myhostname
/etc/mdns.allow
ファイルがあります。
.local
.local.
ここでは、他のフォーラムや質問に記載されている他のすべての方法を試してみましたが、何も機能しません。これを行った後:
ln -s /run/avahi-daemon /var/run/avahi-daemon
名前.local
解決は、サービスを再起動しなくても機能し、ping
機能します。getent
ListenStream
パスを変更してもかまいませんが、/usr/lib/systemd/system/avahi-daemon.socket
インストール時にこれがデフォルトです。これが私がしなければならない長期的な解決策であるかどうかはまだ決定していませんが、これが他の貧しい魂に役立つことを願っています。