如何拦截和操纵DNS查询?

我不确定我说的是否正确,但基本上我想做的是:

当用户在浏览器的URL栏中input诸如费用之类的东西时,我希望浏览器被定向到一个特定的url(非常类似于OpenDNS快捷键的工作方式)

url的IP地址在不同的“快捷方式”中不会改变…即:

mycompany.com = 10.0.0.0 mycompany.com/expenses = 10.0.0.0 mycompany.com/tracker = 10.0.0.0 

当用户在浏览器地址栏中键入费用并按下回车键时,我希望浏览器自动指向上面指定的地址。

这将是棘手的实施? 我希望我已经把我的问题向前推进了:-)

补充笔记:

  • 我们正在使用Windows环境

  • 我相信交换服务器作为办公室的DNS服务器运行

如何创build一个“expenses.mycompany.com”的DNS条目,并通过费用的redirect规则发送到Web服务器?mycompany.com – > mycompany.com/expenses?

只要客户端有一个“mycompany.com”的DNS后缀集,他们会将“费用”转换为expense.mycompany.com,并打到该服务器。

这意味着一些额外的DNS条目,并在networking服务器上的一些虚拟主机什么都不做,但redirect到“真正的”url?

虽然不完全是你之后,为什么不在你的内部服务器上使用URL shortener? 然后你可以在你的服务器上设置一个虚拟主机来承载这个URL缩写,并且做一些事情:

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

url缩写会将其重写为您必要的内部url。 这里有一个.NET URL Shortener的例子。

另一种select是mfarver说,你需要设置一个DNSlogging指向一个主机读取主机头请求,并redirect。 这需要通过IIS中的URL Rewrite规则(或者如果你想在Windows上运行apache)来完成,或者需要一些代码来完成所有工作。 他们都和URL缩写本质上是一样的。

为客户定义您的DNSsearch域,例如company.com

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

发布每个“目标”的url作为自己的网站在Web服务器上(例如webserver.company.com/expenses成为expense.company.com ),并使用主机头指示浏览器,因为他们打networking服务器(您可能需要摆弄主机标题确定是否需要添加费用费用.com.com作为主机头)

这工作…它涉及到一些摆弄和妥协肯定,但它的作品 。 我们用一些内部服务来做到这一点。 正如本·伯恩在评论乔恩·安格利斯(Jon Angliss)的好评时所说的,有时你必须接受一些工作和妥协。

DNS不知道url。 所以用dns来做是不可能的。 你可以做的是设置一个代理服务器,所有的客户端必须使用访问networking,你可以这样做。

或者在您的networking服务器之前只有一个www代理服务器,代理基于您的请求到正确的IP

我一直对自己感到困惑。 所以显然你需要DNS CNAME HTTPredirect的组合。 在Alogging的情况下,DNS将DNS名称与IP地址相关联。 CNAMEAlogging的别名。 HTTPredirect处理URL。

有人在brighthub写了一个howto这样做的内部帮助台的url快捷方式。

总之步骤是:

  1. 在您的DNS服务器上为每个所需的快捷方式设置一个cnamelogging
  2. 使用您的Web服务器安装HTTPredirect每个所需的快捷方式(在howto中使用IIS)
  3. 将redirect代码添加到您的index.html文件

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

你提到,这是一个Windows环境,但不要告诉我们的网站托pipe。 我也猜测Windows,但假设2008年,因为你不说。 如果您在托pipe“domain.com”的服务器和所有子文件夹上安装了IIS,则需要安装URL Rewrite模块(可在此处find详细信息)。

安装完成后,您需要为“费用”和“跟踪器”创buildDNS条目。 这些可以是指向domain.com条目的CNAME /别名logging。 创build后,在桌面机器上打开cmd提示符,然后键入:

 ipconfig /flushdns ping expenses ping domain.com 

两个ping语句的响应应该有相同的IP地址。 一旦DNS确认工作,您将需要去托pipedomain.com的Web服务器,并创build一个如下所示的IIS重写规则:

 <rule name="Canonical Host Name" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTP_HOST}" pattern="^expenses$" /> </conditions> <action type="Redirect" url="http://company.com/expenses" redirectType="Permanent" /> </rule> 

这应该至less足以让你开始。 重复您想要使用的任何其他“快速”名称。