我正在寻找一种在Windows 7上自定义DNS解析策略的方法,如下所示:
1)对于某些私有域,请求应转发到我选择的安全服务器(可能是VPN连接的)。 2)对于所有其他请求,它们应该正常通过Windows DNS解析系统(即来自DHCP的DNS服务器,绑定顺序等)传播。
主要推动力是保护这个私有域免受欺骗(例如,如果我连接到一个友好的免费WiFi热点,它将所有主机名转发到某个代理,导致我的私人连接请求被定向到星巴克'网关服务器,方便地在非私有IP块中 - 因此也通过我的防火墙。)
我已经研究了几个解决方案;最有希望的似乎是在我的系统上运行个人可配置的DNS转发器,在绑定列表的顶部有一个带有127.0.0.1的kludge虚拟适配器作为静态DNS条目;这应该强制所有DNS请求通过我的转发器,然后可以根据需要过滤和处理私有域请求。问题在于处理剩余的请求;将它们传递回Windows DNS堆栈似乎只会产生无限转发循环,并且没有实现(据我所知)具有特殊功能,例如从Windows DHCP(虚拟条目除外)收集DNS服务器条目并尝试他们一个接一个。
让本地转发器保持沉默似乎可能是部分解决方案,因为Windows将继续尝试其他DNS服务器;令人担心的是,Windows在“聪明”时可能会决定在未来的请求中跳过本地转发器;此外,还存在每次新的DNS请求都会产生~2秒超时的问题,这是不幸的。 NXDOMAIN响应不起作用,因为这将是绑定(即Windows不会继续尝试其余的服务器)。
作为旁注,不幸的是,在链的末端使用公共DNS服务器(如OpenDNS等)也不会真正起作用 - 因为它发生了,我的笔记本电脑也连接到其他私有网络,拥有自己的私有DNS服务器和内部主机名,当然是由DHCP提供 - 我希望尽可能避免为此设置手动配置。
还尝试为我的域设置DNSSEC,直到我意识到Windows 7很好地包含DNSSEC支持,但不是验证者;因为它只是遵循其本地友好DNS服务器设置的“身份验证”位,所以它显然不会对欺骗者做太多。
TLDR:我想插入一些自定义处理来将我个人域的DNS转发到个人服务器,但是将所有其他DNS处理保留为Windows的默认行为。有人有提示吗?
编辑:作为附录,请注意我正在寻找一个系统范围的解决方案,而不仅仅是针对Firefox - 所涉及的连接是文件共享,以及其他服务。
答案 0 :(得分:1)
刚刚找到答案 - Windows 7和Server 2008R2显然都包含名称解析策略表,这是一个用于此目的的功能,用于指导和保护按域名(和/或前缀)过滤的DNS查询。我听说它支持通过域名启用DNSSEC,但我没有发现它也支持直接访问策略(即指定一组特定的DNS服务器来查询特定域,正是我正在寻找的)。刚刚测试过,NRPT策略与相关防火墙设置相结合会阻止域名,除非直接连接到专用网络。自己回答这个问题,但是将这些信息留在这里供其他人参考(对于保护便携式计算机设备的人来说,这似乎是一个非常有用的功能)。