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

ARF*_*ARF 6 networking windows redirection hosts-file

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

domainA.com --> 127.0.0.1

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

domainA.com --> domainB.com


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

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

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

  • 拦截对 domainA.com 的 DNS 请求
  • 为 domainB.com 发起 DNS 请求
  • 响应对 domainA.com 的请求,为 domainB.com 的 IP 提供服务

无需运行整个 DNS 服务器。

选项 2 如果 DNS 服务器是唯一的方法,那么我也很乐意为单个应用程序定义非标准 DNS 服务器的解决方案。关于包装应用程序等的任何想法?

Wil*_*sum 5

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

但是,我写了一个您可能感兴趣的指南,希望可以更好地向您解释...:

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

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

请记住,归根结底,当您将 FQDN(完全限定域名)作为目标时,所发生的一切就是将该地址转换为 IP 地址。

如果你要转发任何人访问domainA.comdomainB.com,你干脆把domainB.com的IP为domainA.com“主机文件的入门。

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

但是,我猜您想重定向网站。网站比这复杂得多,协议的一部分发送称为Host Header. 这是网络浏览器联系网络服务器告诉它它试图访问的地址的地方。

例如,访问 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 中添加额外的主机头:

在此处输入图片说明


pho*_*bie 1

第三种解决方案

除了设置 dns 服务器并将钩子注入 gethostbyname 之外:

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

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