Windows 将流量重定向到不同的 DNS 名称而不是固定的 IP 地址(相当于 hosts 文件)

Windows 将流量重定向到不同的 DNS 名称而不是固定的 IP 地址(相当于 hosts 文件)

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

域名A.com-->127.0.0.1

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

域名A.com-->域名B.com


添加: 在得到一些初步答案后,我想我需要具体化我的问题。

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

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

  • 拦截对 domainA.com 的 DNS 请求
  • 对域 B.com 发起 DNS 请求
  • 为 domainA.com 的请求提供 domainB.com 的 IP

无需运行整个 DNS 服务器。

选项 2 如果 DNS 服务器是唯一的方法,那么作为替代方案,我也很乐意找到一个解决方案,即如何为单个应用程序定义非标准 DNS 服务器。对于包装应用程序等,您有什么想法吗?

答案1

第三种解决方案

除了设置 dns 服务器和向 gethostbyname 中注入钩子之外:

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

我正在使用这样的脚本来更新我家里的电脑上的域名黑名单。

答案2

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

但是,我写了一个你可能会感兴趣的指南,希望它能更好地向你解释一些事情......:

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

这不可能将 IP 放入其中,将得到完全相同的最终结果。

请记住,最终,当您定位 FQDN(完全限定域名)时所发生的一切就是将该地址转换为 IP 地址。

如果您想要将任何访问者转发domainA.comdomainB.com,您只需将domainB.com的 IP 作为domainA.com的条目放入 hosts 文件中。

这会导致任何定位/访问domainA.com都被重定向到domainB.com

然而我猜你想重定向一个网站。网站比这复杂得多,协议的一部分会发送一个称为 的东西Host Header。这是网络浏览器联系网络服务器的地方告诉它正在尝试访问的地址。

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

在此处输入图片描述

(注意那条Host:线)。

您还可以通过 IP 地址访问 Google.com -http://74.125.230.115- 这是因为他们设置了一个默认条目来服务所有请求不是匹配主机头。

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

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

在 IIS 中添加附加主机头:

在此处输入图片描述

答案3

您可以设置这样的使用 Privoxy 进行重定向操作

答案4

选项 2 的解决方案

以防将来其他人遇到这个问题:可以拦截来自单个应用程序的 DNS 请求,而无需使用影响所有功能的 hosts 文件。

查看代码项目“使用正则表达式拦截并重写 DNS 请求”作者:丹·法里诺

相关内容