有没有办法为特定的域使用特定的DNS?

在工作中,我们使用OpenDNS,它已经错误地阻止了irc.freenode.net恶意软件。 我如何确保* .freenode.net的任何请求转到8.8.8.8和8.8.4.4(Google的DNS)。

我尝试着在Ubuntu上使用resolv.conf来解决这个问题,但是我不能太过分。 另外,是否有一个简单的方法来做到这一点的Mac和Windows系统(我有几个同事使用这些操作系统,他们也想使用IRC)。

Linux不支持通过resolv.conf使用域特定的DNS服务器。 您可以通过在本地运行caching名称服务器(如BINDdnsmasq ),然后为每个域configuration显式转发器来解决此问题。

在OS X下,使用scutil命令这种设置相对容易。 这种configuration的常见用例是将VPN连接的DNS请求转发到特定于VPN的DNS服务器,因此您会发现经常会与OpenVPN一起讨论这个问题。 这个文档 scutil 这样讨论scutil命令,而Googlesearchopenvpnscutil会产生更多的结果。

我不确定Windows。 如果需要的话,可以推测在所有三个平台上使用本地DNS服务器解决scheme。

这不能通过* nix(和Windows AFAIK)提供的标准DNSparsing来完成,您需要使用您自己的DNS服务器来执行此操作。 在* nix dnsmasq上是最好的select,你可以在每个工作站上运行它,或者在服务器上运行它并configuration所有的工作站来使用它。

/etc/resolv.conf

 nameserver 127.0.0.1 nameserver 208.67.222.222 nameserver 208.67.220.220 

/etc/dnsmasq.conf

 server=/freenode.net/8.8.8.8 server=/freenode.net/8.8.4.4 

在OS X下,你可以使用像/etc/resolver/example.com这样的内容:

 nameserver 172.16.5.5 

将* .example.com的dns请求转发到172.16.5.5

http://hints.macworld.com/article.php?story=2004062902195410