如何通過前綴轉發域解析?
有時我必須通過 VPNC 連接到我的工作網路。該網路有DNS伺服器。我無權從中提取區域文件。我有本地綁定伺服器,它轉發到 8.8.8.8 並解析我的 KVM 的一些內部名稱。我的 resolve.conf 指向 127.0.0.1。
工作網路中的所有名稱都具有相同的子域 (company.com)。
我很高興找到一個帶有正則表達式的配置選項,將匹配正則表達式 /company.com$/ 的解析域名轉發到另一個 DNS 伺服器,而不是預設值。
是的,這個解決方案在技術上看起來並不完美,但它很簡單。
感謝有關 dnsmasq 的想法。現在它可以讓它工作了。
現在我只在 veth 上執行 bind9。/etc/resolve.conf 保持不變。dnsmasq 綁定到 rest 介面並預設轉發到 bind9,否則轉發到公司伺服器。
如果之前建立了 vpn 網路,一切正常。但是,如果您啟動 vpnc-connect,它會在掛起一段時間後失敗,並抱怨 vpn.company.com 無法解決。
我試圖禁用負記憶體並將最大記憶體大小設置為零。沒有任何幫助。
如果 /etc/resolve.conf 指向 8.8.8.8 或我的 bind9,則不會發生這種循環。
dnsmasq
會為你做這件事。在您的機器上本地執行它並將您/etc/resolv.conf
的指向設置為127.0.0.1
.我手頭沒有完整的配置,但您可能想要調查的參數是
# Do not read resolv.conf no-resolv # Send queries for contoso.com to nameserver 10.1.2.3 server=/contoso.com/10.1.2.3 # Set your local default domain and add it to simple names in /etc/hosts domain=fabrikam.com expand-hosts # DNS "A" records are like this host-record=vpn.contoso.com,203.0.113.77
您可以包含主
/etc/dnsmasq.conf
文件中的其他文件,因此當您聯機或離線時可以根據需要更新其中一個文件,以便vpnc
轉發器僅在 vpn 啟動時可用。如果您需要解析
vpn.contoso.com
無法直接執行的名稱,因為該contoso.com
域被發送到僅在 vpn 啟動時可用的名稱伺服器。因為我們不想涉及雞和蛋$$ * $$這裡的解決方案是使用dnsmasq
將其定義為眾所周知的名稱。這可以添加到/etc/hosts
或設置dnsmasq.conf
為host-record
.隨著時間的推移,您可能需要考慮替換
bind
為dnsmasq
; 對於內部網路,它幾乎可以完成所有bind
工作。