Windows

具有多個 VPN 連接的客戶端 DNS

  • February 2, 2021

我有一個場景,Windows 客戶端設備將連接到兩個不同的 VPN 網路。每個遠端網路都有單獨的地址空間,10.0.0.0/16並且10.20.0.0/16分別。IP 路由在客戶端電腦上建立,以便這些 IP 範圍的流量通過正確的 VPN 連接發送,所有其他流量通過 Internet 正常發送。

這就是我們的樂趣開始的地方。每個網路還託管它自己的 Active Directory 域,我將其DomainA.com稱為DomainB.com. 理想情況下,我希望使用者能夠通過 FQDN 訪問任一域中的資源,而不僅僅是 IP 地址。因此,例如,server.DomainA.com將解析到10.0.0.50並通過第一個 VPN 連接進行聯繫,server.DomainB.com並將解析到10.20.0.50並通過第二個 VPN 進行聯繫。

當然,網路中的DNS伺服器對.com10.0.0.0/16一無所知DomainB.com,網路中的DNS伺服器對.com10.20.0.0/16也一無所知DomainA。並且網際網路 DNS 不知道任何一個域的正確地址。

在這種情況下,您將如何讓 DNS 解析為DomainA.comDomainB.comInternet 工作?我覺得我應該能夠告訴 Windows“使用 X DNS 伺服器DomainA.com”和“使用 Y DNS 伺服器DomainB.com”。有沒有辦法做到這一點?如果沒有,我可以對客戶端設備或遠端網路進行其他更改嗎?

我找到了答案。您可以使用 Windows名稱解析策略表 (NPRT)。本質上,這正是問題中所要求的:一種告訴 Windows 為特定域使用特定 DNS 伺服器的方法。您可以使用組策略配置 NRPT,但在我的情況下,我使用 PowerShell 配置它,特別是Add-DnsClientNrptRule

下面是我用於管理給定 NRPT 規則的最終 PowerShell 腳本:

$Domain = ".DomainA.com"
[string[]]$NameServers = "10.0.0.4", "10.0.0.5"

Get-DnsClientNrptRule | Where Namespace -eq $Domain | ForEach-Object {Remove-DnsClientNrptRule -Name $_.Name -Force}
Add-DnsClientNrptRule -Namespace $Domain -NameServers $NameServers

(注意.域名字元串開頭的。)

我首先刪除該域的所有現有規則,因為 NRPT 規則不會相互覆蓋。相反,衝突導致不應用任何規則。

作為另一個旁注,我讀過它nslookup不尊重 NRPT 規則。因此,如果您正在對此進行測試,請不要被此愚弄。在我的測試ping中,mstsc其他 Windows 組件與這些規則完美配合。

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