如何拦截和操纵 DNS 查询?

如何拦截和操纵 DNS 查询?

说实话,我不确定我是否正确地表述了这个问题,但基本上我想要做的是:

当用户输入类似花费在浏览器的 URL 栏中,我希望浏览器定向到特定的网址(与 OpenDNS 快捷方式的工作方式非常相似)

网址的 IP 地址不会在不同的“快捷方式”之间改变...即:

mycompany.com = 10.0.0.0

mycompany.com/expenses = 10.0.0.0

mycompany.com/tracker = 10.0.0.0

当用户输入花费在浏览器地址栏中输入 并按下回车键,我希望浏览器自动定向到如上所述的指定地址。

实现起来会很棘手吗?我希望我已经恰当地提出了我的问题 :-)

补充笔记:

  • 我们在 Windows 环境中

  • 我相信 Exchange 服务器正在作为办公室中的 DNS 服务器运行

答案1

如何为“expenses.mycompany.com”创建一个 DNS 条目,并将其发送到具有重定向规则“expenses.mycompany.com -> mycompany.com/expenses”的 Web 服务器?

只要客户端设置了“mycompany.com”的 DNS 后缀,他们就会将“expenses”转换为expenses.mycompany.com,并访问该网络服务器。

这是否意味着一些额外的 DNS 条目和 Web 服务器上的一些虚拟主机除了重定向到“真实”URL 之外什么也不做?

答案2

虽然这不是你想要的,但为什么不在内部服务器上使用 URL 缩短器呢?然后,你可以在托管 URL 缩短器的服务器上设置虚拟主机,并执行以下操作:

http://go/expenses
http://go/tracker

URL 缩短器会将其重写为必要的内部 URL。这里有一个 .NET URL 缩短器的示例这里

另一种选择是,正如 mfarver 所说,您需要设置指向主机的 DNS 记录,该主机读取主机标头请求并进行适当重定向。这需要通过 IIS 中的 URL 重写规则(如果您想在 Windows 上运行它,则需要通过 apache)来完成,或者使用一些代码为您完成所有工作。它们本质上都与 URL 缩短器执行相同的操作。

答案3

为客户定义 DNS 搜索域,例如 company.com

为费用等创建指向 Web 服务器的 cname

将每个“目标”网址作为其自己的网站发布在 Web 服务器上(例如webserver.company.com/expenses变成费用.company.com)并使用主机标头来引导浏览器访问 Web 服务器(您可能需要摆弄主机标头来确定是否需要添加花费或者费用.company.com作为主机头)

这是可行的……当然,这需要一点调整和妥协,但作品。我们对一些内部服务也这样做。正如 Ben 在对 Jon Angliss 的好回答的评论中指出的那样,有时你必须接受一些工作和妥协。

答案4

我自己也一直对此感到困惑。所以显然你需要 DNS CNAME 的组合HTTP 重定向。在以下情况下,DNS 将 DNS 名称与 IP 地址相关联:一个记录。 A别名记录一个记录. 而 HTTP 重定向处理的是 URL。

有人在brighthub 写了一篇指南对内部帮助台 URL 快捷方式执行此操作。

简而言之,步骤如下:

  1. 在您的 DNS 服务器上为每个所需的快捷方式设置一个 cname 记录
  2. 使用 Web 服务器为每个所需的快捷方式设置 HTTP 重定向(本指南中使用了 IIS)
  3. 将重定向代码添加到 index.html 文件

<meta http-equiv="Refresh" content="0;URL=http://www.mydomain.com/newpage.html"/>

相关内容