这是设置:

> Windows 10 1803客户端
> Server 2012R2 RRAS服务器
>始终按照these instructions进行VPN设备隧道设置,使用分离隧道.
> Device VPN仅具有到1个DC / DNS服务器和配置管理器服务器的路由,因此可以对其进行管理,新用户可以在离开办公室时进行身份验证.当用户需要完全访问办公室网络时,他们可以连接到单独的用户VPN.这种方法很有效,但DNS除外.
> AD域名是example.local
>公共域名是example.com

问题:

>我们使用拆分DNS作为我们的公共域名 – 因此mail.example.com在使用我们的内部DNS服务器和外部世界的公共地址时解析为内部IP地址.
>我需要VPN客户端将其解析为公共地址.设备VPN不允许他们与mail.example.com的内部地址通信,因此他们无法收到他们的电子邮件.
>我也希望(但不是必须)DNS解析,以便其他位置的本地服务正常工作 – 例如.当我在其他公司的办公室时,DNS for othercorp.local即使连接了VPN也能工作.

我想要发生什么:

>查询例如.local通过VPN到我们的内部DNS服务器
>其他所有内容(包括example.com)都使用笔记本电脑连接的LAN / Wifi连接提供的DNS服务器.
>其他基于用户的VPN(通过VPN路由所有流量)继续使用我们的内部DNS服务器来处理所有事情.

我尝试过的:

> Setting Name Resolution Policy Table rule.local的规则指向我们的内部DNS服务器.这似乎工作,例如查询.local通过VPN …但其他一切.
>为example.com设置NRPT规则,使用空白DnsServers字段,这应该确保它们被排除在外.似乎没有效果.
>为example.com设置NRPT规则,使用DnsServer的公共解析器.这确实有效,但是在远程位置中断,除了他们自己的dns解析器(我的用户前往的许多站点)之外的任何东西都会阻塞,并且无法解决本地服务问题.
>在网络连接中的VPN连接上设置“使用以下DNS服务器地址”,并将其留空.没有效果,VPN连接仍设置为使用我们的内部服务器.
>设置“使用以下DNS服务器地址”,并放入公共DNS服务器,如8.8.8.8.连接后,我最终在该接口上有3个DNS服务器,我们的内部位于顶部,8.8.8.8位于列表底部.

我怀疑,如果我可以让VPN根本不列出任何DNS服务器,那么NRPT规则只会启动例如.local,一切都会正常工作.但我找不到让它不使用RRAS服务器提供的方法的方法.

您可以尝试的潜在解决方法是站起来使用Server 2016 DNS服务器并实施DNS策略来执行具有地理位置感知功能的split-dns.这将允许您告知来自Device VPN子网的DNS查询使用外部IP而不是内部IP.

powershell命令看起来如下所示.

设备VPN子网

Add-DnsServerClientsubnet -Name "DeviceVPNsubnet" -IPv4subnet "192.168.1.0/24"

设备VPN区域范围

Add-DnsServerZonescope -ZoneName "example.com" -Name "DeviceVPNZonescope"

默认A记录(应该已经存在)

Add-DnsServerResourceRecord -ZoneName "example.com" -A -Name "mail" -IPv4Address "192.168.0.5"

设备VPN A记录

Add-DnsServerResourceRecord -ZoneName "example.com" -A -Name "mail" -IPv4Address "203.0.113.5" -Zonescope "DeviceVPNZonescope"

设备VPN解析策略

Add-DnsServerQueryResolutionPolicy -Name "Device VPN Policy" -Action ALLOW -Clientsubnet "eq,DeviceVPNsubnet" -Zonescope "DeviceVPNZonescope,1" -ZoneName "example.com"

见:Use DNS Policy for Geo-Location Based Traffic Management with Primary Servers

Windows 10 Always On VPN,拆分DNS,NRPT以及如何配置使用的DNS服务器?的更多相关文章

  1. ios – 错误域= NSURLErrorDomain代码= -1003“找不到具有指定主机名的服务器

    当我尝试在设备上运行应用程序时出现此错误.当我在模拟器上运行它并且post请求正常工作时,我没有收到此错误.这是我的代码片段:任何帮助表示赞赏.谢谢解决方法此错误通常会提示DNS相关问题.检查设备上的DNS设置并确认您可以使用Safari或其他浏览器浏览互联网.如果有一个url,你可以在同一台服务器上获取,尝试直接在设备上的Safari中访问它.

  2. 将POD规范属性与其Xcode配置中的不同构建设置相关联(例如,发布,调试)

    我正在尝试为现有的库项目创建POD规范.在Xcode项目中,构建设置为不同的构建配置定义了不同的预处理器宏例如:对于“调试”配置:对于“发布”配置:如何将这些设置映射到相应的POD规范?

  3. 如何使用android的“openvpn connect”应用程序结合意图以编程方式连接和断开vpn连接?

    我正在开发一个Android应用程序,应该在需要时自动启动OpenVPNConnect会话.如何使用android的“openvpnconnect”应用程序结合意图以编程方式连接和断开vpn连接?

  4. Android VPNService路由排除

    我正在使用OpenVPN和ICS附带的新VpnServiceAPI有没有办法从VPN隧道中定义IP地址的排除?

  5. android – 在Mac上查看本地网络服务器,具有计算机名称,而不是IP

    解决方法简而言之,没有Android设备将无法通过.local地址默认访问您的Mac.OnMacs,“本地”通常会通过mDNS来解决.Android操作系统没有对mDNS的内置支持.Android通过标准DNS解析域名,除非您运行自己的本地DNS服务器,否则不会解析您的本地网络地址.Android设备要么使用ISP的DNS服务器,要么转发到ISP的路由器DNS服务器.

  6. Apache2中实现多网站域名绑定的实现方法

    Windows下Apache2不同域名解析不同目录实现方法 ,需要的朋友可以参考下

  7. 150行Node.js实现的dns代理工具

    这篇文章主要介绍了150行Node.js实现的dns代理工具,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

  8. node.js域名解析实现方法详解

    这篇文章主要介绍了node.js域名解析实现方法,结合实例形式详细分析了node.js使用dns.lookup()及dns.resolve4()进行域名解析的相关操作技巧与注意事项,需要的朋友可以参考下

  9. 浅析Node.js:DNS模块的使用

    本篇文章主要介绍了Node.js:DNS模块的使用,DNS模块包涵有关DNS查询和操作的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

  10. Python DNS查询放大攻击实现原理解析

    这篇文章主要介绍了Python DNS查询放大攻击实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

随机推荐

  1. static – 在页面之间共享数据的最佳实践

    我想知道在UWP的页面之间发送像’selectedItem’等变量的最佳做法是什么?创建一个每个页面都知道的静态全局变量类是一个好主意吗?

  2. .net – 为Windows窗体控件提供百分比宽度/高度

    WindowsForm开发的新手,但在Web开发方面经验丰富.有没有办法为Windows窗体控件指定百分比宽度/高度,以便在用户调整窗口大小时扩展/缩小?当窗口调整大小时,可以编写代码来改变控件的宽度/高度,但我希望有更好的方法,比如在HTML/CSS中.在那儿?

  3. 使用Windows Azure查询表存储数据

    我需要使用特定帐户吗?>将应用程序部署到Azure服务后,如何查询数据?GoogleAppEngine有一个数据查看器/查询工具,Azure有类似的东西吗?>您可以看到的sqlExpressintance仅在开发结构中,并且一旦您表示没有等效,所以请小心使用它.>您可以尝试使用Linqpad查询表格.看看JamieThomson的thispost.

  4. windows – SetupDiGetClassDevs是否与文档中的设备实例ID一起使用?

    有没有更好的方法可以使用DBT_DEVICEARRIVAL事件中的数据获取设备的更多信息?您似乎必须指定DIGCF_ALLCLASSES标志以查找与给定设备实例ID匹配的所有类,或者指定ClassGuid并使用DIGCF_DEFAULT标志.这对我有用:带输出:

  5. Windows Live ID是OpenID提供商吗?

    不,WindowsLiveID不是OpenID提供商.他们使用专有协议.自从他们的“测试版”期结束以来,他们从未宣布计划继续它.

  6. 如果我在代码中进行了更改,是否需要重新安装Windows服务?

    我写了一个Windows服务并安装它.现在我对代码进行了一些更改并重新构建了解决方案.我还应该重新安装服务吗?不,只需停止它,替换文件,然后重新启动它.

  7. 带有双引号的字符串回显使用Windows批处理输出文件

    我正在尝试使用Windows批处理文件重写配置文件.我循环遍历文件的行并查找我想要用指定的新行替换的行.我有一个’函数’将行写入文件问题是%Text%是一个嵌入双引号的字符串.然后失败了.可能还有其他角色也会导致失败.如何才能使用配置文件中的所有文本?尝试将所有“在文本中替换为^”.^是转义字符,因此“将被视为常规字符你可以尝试以下方法:其他可能导致错误的字符是:

  8. .net – 将控制台应用程序转换为服务?

    我正在寻找不同的优势/劣势,将我们长期使用的控制台应用程序转换为Windows服务.我们为ActiveMQ使用了一个叫做java服务包装器的东西,我相信人们告诉我你可以用它包装任何东西.这并不是说你应该用它包装任何东西;我们遇到了这个问题.控制台应用程序是一个.NET控制台应用程序,默认情况下会将大量信息记录到控制台,尽管这是可配置的.任何推荐?我们应该在VisualStudio中将其重建为服务吗?我使用“-install”/“-uninstall”开关执行此操作.例如,seehere.

  9. windows – 捕获外部程序的STDOUT和STDERR *同时*它正在执行(Ruby)

    哦,我在Windows上:-(实际上,它比我想象的要简单,这看起来很完美:…是的,它适用于Windows!

  10. windows – 当我试图批量打印变量时,为什么我得到“Echo is on”

    我想要执行一个简单的批处理文件脚本:当我在XP中运行时,它给了我预期的输出,但是当我在Vista或Windows7中运行它时,我在尝试打印值时得到“EchoisOn”.以下是程序的输出:摆脱集合表达式中的空格.等号(=)的两侧可以并且应该没有空格BTW:我通常在@echo关闭的情况下启动所有批处理文件,并以@echo结束它们,所以我可以避免将代码与批处理文件的输出混合.它只是使您的批处理文件输出更好,更清洁.

返回
顶部