検証、キャッシュ、再帰DNSサーバーとしてアンバウンドを実行し、権威ネームサーバーとしてnsd3を実行しています。 nsd3に転送する必要のあるアドレスを解決しようとするまで、両方のすべての側面が正しく機能しているようです。アンバウンドからnsd3に転送するスタブゾーンに問題を絞り込みましたが、「stub-Host」名が解決されていないようです。ログによると、unboundは/ etc/hostsの代わりに外部DNSを使用して「stub-Host」を解決しようとしています(ただし、これはルックアップ中に何らかの理由で失敗していることが原因である可能性があります)。完全に機能しているように見えるnsd3サーバーのIPをハードコーディングしてテストしました。
これが私のアンバウンド構成の関連部分です(完全な構成は ここ ):
private-domain: "test.lan"
local-zone: "0.0.10.in-addr.arpa." nodefault
stub-zone:
name: "test.lan"
stub-Host: unsd_nsd3
forward-zone:
name: "."
forward-addr: 8.8.8.8 # Google Public DNS
forward-addr: 74.82.42.42 # Hurricane Electric
forward-addr: 4.2.2.4 # Level3 Verizon
これは、ログレベルが3のunboundからの出力です。テストとしてDig mithril.test.lan @localhost
を実行しました(nsd3が直接照会されると正しく解決されます)。
[1448909203] unbound[1:0] debug: validator[module 0] operate: extstate:module_state_initial event:module_event_moddone
[1448909203] unbound[1:0] info: validator operate: query unsd_nsd3. A IN
[1448909203] unbound[1:0] debug: iterator[module 1] operate: extstate:module_wait_subquery event:module_event_pass
[1448909203] unbound[1:0] info: iterator operate: query mithril.test.lan. A IN
[1448909203] unbound[1:0] info: processQueryTargets: mithril.test.lan. A IN
[1448909203] unbound[1:0] info: new pside target unsd_nsd3. A IN
[1448909203] unbound[1:0] debug: iterator[module 1] operate: extstate:module_state_initial event:module_event_pass
[1448909203] unbound[1:0] info: iterator operate: query unsd_nsd3. A IN
[1448909203] unbound[1:0] info: resolving unsd_nsd3. A IN
[1448909203] unbound[1:0] info: processQueryTargets: unsd_nsd3. A IN
[1448909203] unbound[1:0] info: sending query: unsd_nsd3. A IN
[1448909203] unbound[1:0] debug: sending to target: <.> 74.82.42.42#53
[1448909203] unbound[1:0] debug: cache memory msg=132347 rrset=132399 infra=5449 val=132392
[1448909203] unbound[1:0] debug: iterator[module 1] operate: extstate:module_wait_reply event:module_event_reply
[1448909203] unbound[1:0] info: iterator operate: query unsd_nsd3. A IN
[1448909203] unbound[1:0] info: response for unsd_nsd3. A IN
[1448909203] unbound[1:0] info: reply from <.> 74.82.42.42#53
[1448909203] unbound[1:0] info: query response was NXDOMAIN ANSWER
[1448909203] unbound[1:0] info: finishing processing for unsd_nsd3. A IN
[1448909203] unbound[1:0] debug: validator[module 0] operate: extstate:module_state_initial event:module_event_moddone
[1448909203] unbound[1:0] info: validator operate: query unsd_nsd3. A IN
[1448909203] unbound[1:0] debug: iterator[module 1] operate: extstate:module_wait_subquery event:module_event_pass
[1448909203] unbound[1:0] info: iterator operate: query mithril.test.lan. A IN
[1448909203] unbound[1:0] info: processQueryTargets: mithril.test.lan. A IN
[1448909203] unbound[1:0] debug: out of query targets -- returning SERVFAIL
[1448909203] unbound[1:0] debug: return error response SERVFAIL
[1448909203] unbound[1:0] debug: validator[module 0] operate: extstate:module_wait_module event:module_event_moddone
[1448909203] unbound[1:0] info: validator operate: query mithril.test.lan. A IN
[1448909203] unbound[1:0] debug: cache memory msg=132557 rrset=132624 infra=5449 val=132392
ちなみに、私はUnboundとnsd3の両方を、Debianベースイメージから独自のDockerコンテナーで実行し、それらをリンクしています。バインドされていないコンテナ内でunsd_nsd3
を問題なく解決できます。バインドされていないコンテナ内の/ etc/hostsは次のとおりです。
172.17.0.6 a79a91df9ec5
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.5 docker_nsd3 89a74b365c88 unsd_nsd3
172.17.0.5 unsd_nsd3 89a74b365c88
ここから先に進む方法についてのアイデアが不足しています。いくつかの助けをいただければ幸いです。
Unboundは/ etc/hostsを使用しません。 Unboundは、アップストリームに転送することによってのみスタブ名unsd_nsd3
を解決できます。 / hostsの内容を反映するようにlocal-zone
とlocal-data
を設定するか、スタブにIPを使用する必要があります。
移行を容易にするために、 source tarball には、インクルードファイルを生成するPerlスクリプトcontrib/build-unbound-localzone-from-hosts.pl
があります。 execの前に、スクリプト内でローカルゾーン名を設定する必要があります