Linux

如何通過前綴轉發域解析?

  • April 2, 2015

有時我必須通過 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.confhost-record.

隨著時間的推移,您可能需要考慮替換binddnsmasq; 對於內部網路,它幾乎可以完成所有bind工作。

引用自:https://serverfault.com/questions/680143