で終わるすべての名前の検索を解決するために、マシンでDNSサーバーを使用したい.dev
。
これ/etc/resolver/dev
を行うために作成し、Aレコードで機能することを確認しました。
› dscacheutil -q host -a name blah.blah.dev
name: blah.blah.dev
ip_address: 127.0.0.1
これまでのところ、グレービー。
ただし、本当に必要なのは、ローカルDNSサーバーを使用してSRVクエリを解決することです。
RubyをローカルDNSサーバーに直接向けると、クエリを解決できます。
>> Resolv::DNS.new(
nameserver: '127.0.0.1',
search: 'dev',
ndots: 1
).getresources(
'_http._tcp.demo-service-foo.dev',
Resolv::DNS::Resource::IN::SRV
)
=> [#<Resolv::DNS::Resource::IN::SRV:0x007faa192fc720 @priority=0, @weight=0, @port=5200, @target=#<Resolv::DNS::Name: 127.0.0.1.>, @ttl=0>]
ただし、OS Xのデフォルトを使用すると、名前は解決されません。
>> Resolv::DNS.new.getresources(
'_http._tcp.demo-service-foo.dev',
Resolv::DNS::Resource::IN::SRV
)
=> []
tcpdumpを使用すると、前の状況では、ループバックインターフェイスを介して解決が行われる(そして成功する)ことがわかります。
› sudo tcpdump -i lo0 -s 0 -B 524288 -w ~/Desktop/DumpFile-with-nameserver.pcap
› tcpdump -s 0 -r DumpFile-with-nameserver.pcap
reading from file DumpFile-with-nameserver.pcap, link-type NULL (BSD loopback)
14:11:18.532418 IP localhost.mphlpdmc > localhost.domain: 10530+ SRV? _http._tcp.demo-service-foo.dev. (55)
14:11:18.532575 IP localhost.domain > localhost.mphlpdmc: 10530* 1/0/0 SRV 127.0.0.1.:5200 0 0 (84)
後者の場合(ネームサーバーを手動で指定せずに)、解決クエリはネットワークを介して送信され、予想どおりに失敗します。
› sudo tcpdump -i en0 -s 0 -B 524288 -w ~/Desktop/DumpFile-default.pcap
› tcpdump -s 0 -r DumpFile-default.pcap
reading from file DumpFile-default.pcap, link-type EN10MB (Ethernet)
14:09:35.567565 IP 192.168.3.21.netview-aix-6 > o2.mobilewifi.domain: 21300+ SRV? _http._tcp.demo-service-foo.dev. (55)
14:09:35.643653 IP o2.mobilewifi.domain > 192.168.3.21.netview-aix-6: 21300 NXDomain 0/1/0 (130)
だから、私には/etc/resolver/*
システムがAタイプのクエリに使用されているように見えますが、SRVには使用されていませんか?
しかし、どのドキュメントにもこれの確認が見つかりません…
/etc/resolver
SRVルックアップに使用できる方法はありますか?
これについて何か進展はありましたか?私はまったく同じことをする必要があります。
—
リード