具有多個 VPN 連接的客戶端 DNS
我有一個場景,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伺服器對.com
10.0.0.0/16
一無所知DomainB.com
,網路中的DNS伺服器對.com10.20.0.0/16
也一無所知DomainA
。並且網際網路 DNS 不知道任何一個域的正確地址。在這種情況下,您將如何讓 DNS 解析為
DomainA.com
和DomainB.com
Internet 工作?我覺得我應該能夠告訴 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 組件與這些規則完美配合。