Windows将流量重定向到不同的DNS名称而不是固定的IP地址(等效的主机文件)


5

使用Windows主机文件,可以将域的流量重定向到特定的IP地址,例如

domainA.com - > 127.0.0.1

我正在寻找一种简单的方法来做同样的事情,但是对于目标域名而不是目标IP地址(因为这是动态的),即

domainA.com - > domainB.com


补充: 在得到一些初步答案后,我想我需要提出我的问题。

情况:我有一个应用程序,它通过DNS查找目标域的IP,然后通过HTTP连接到IP地址。我无法控制任何代理设置。

选项1 基本上我正在寻找一种方法:

  • 拦截域名网站的DNS请求
  • 启动domainB.com的DNS请求
  • 提供domainB.com的IP以响应对domainA.com的请求

无需运行整个DNS服务器。

选项2 如果DNS服务器是唯一的方式,替代方案我也会对如何为单个应用程序定义非标准DNS服务器的解决方案感到满意。包装应用程序的任何想法等?

Answers:


1

第三种方案

除了设置dns-server并在gethostbyname中注入一个钩子:

将脚本注册为服务,定期解析domainB.com并修改/ etc / hosts文件中domainA.com的条目。由于大多数dns条目不会经常更改,因此在启动时或每天运行一次脚本就足够了。

我正在使用这样的脚本来更新家用计算机上的域阻止列表。


5

编辑 - 重新阅读您的问题之后,如果没有本地DNS服务器指向,我认为这是不可能的,因为主机文件仅支持FQDN - > IP。但是,我认为你最好的选择是某种本地重定向代理服务器,或者一个可以重写主机头的插件。

但是,我写了一篇你可能感兴趣的指南,希望能对你解释一下......:

这不是很容易解释,所以如果您有任何后续问题,请写下评论,我将很乐意为您提供帮助:

这是不可能的但是将IP结果放在完全相同的最终结果中。

请记住,在一天结束时,当您定位FQDN(完全限定域名)时发生的所有事情是它将该地址转换为IP地址。

如果你想转发任何访问的domainA.comdomainB.com,你只需在主机文件中输入domainB.com's ip as domainA.com'条目即可。

这导致任何目标/访问domainA.com被重定向到domainB.com

但是,我猜你想重定向一个网站。网站比这复杂得多,协议的一部分发送称为a Host Header。这是Web浏览器与Web服务器联系的位置,并告诉它它正在尝试访问的地址。

例如,访问Google.com会显示以下内容:

在此输入图像描述

(注意这一Host:行)。

您也可以通过它的IP地址访问Google.com - http://74.125.230.115 - 这是因为它们有一个默认条目设置,可以为所有匹配主机标头的请求提供服务。

因此,当您访问时domainA.com,可能domainB.comdomainB.com向主机标头设置为的人提供内容domainB.com

您需要做的是使用代理服务器,防火墙(DPI)或某种实际重写主机标头/重定向的插件。或者,如果您控制Web服务器domainB.com,您只需要添加domainA.com它将侦听的地址 - 然后任何主机标题domainA.com- 它将响应domainB.com内容。

在IIS中添加其他主机标头:

在此输入图像描述


我相信你可能是对的,DNS服务器是不可避免的。 - 虽然我不希望。请参阅我的问题的补充。
ARF


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.