Domain-Name-System
未使用 /etc/hosts 解析的未綁定存根主機選項
我有 unbound 作為驗證、記憶體、遞歸 dns 伺服器執行,nsd3 作為權威名稱伺服器執行。在我嘗試解析應該轉發到 nsd3 的地址之前,似乎兩者的每個方面都可以正常工作。我已將問題縮小到從未綁定轉發到 nsd3 的存根區域,看起來它沒有解析“存根主機”名稱。根據日誌,unbound 正在嘗試使用外部 dns 而不是 /etc/hosts 解析“存根主機”(儘管這可能是因為它在查找過程中以某種方式失敗)。我已經測試了對 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
這是 unbound 的輸出,日誌級別為 3。我
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
附帶說明一下,我在它們自己的 docker 容器中從 debian 基本映像執行 unbound 和 nsd3,並將它們連結在一起。我可以
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
我已經沒有關於如何從這裡繼續前進的想法了。一些幫助將不勝感激。
未綁定不使用*/etc/hosts*。Unbound 只能
unsd_nsd3
通過上游轉發來解析 stub-name。您將需要設置local-zone
並local-data
反映*/hosts*的內容,或為存根使用 IP。為了便於遷移,源 tarball有一個 perl 腳本,
contrib/build-unbound-localzone-from-hosts.pl
它會生成一個包含文件。本地區域名稱需要在 exec 之前在腳本中設置