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

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

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

我尝试通过摆弄 Ubuntu 上的 resolv.conf 来实现这一点,但效果并不理想。另外,有没有一种简单的方法可以在 Mac 和 Windows 系统上实现这一点(我有几个同事使用这些操作系统,他们也想使用 IRC)。

答案1

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

在 OS X 下,使用命令进行此类设置相对容易scutil。此配置的常见用例是将 VPN 连接的 DNS 请求转发到特定于 VPN 的 DNS 服务器,因此您会发现这经常与 OpenVPN 等一起讨论。 这个文件谈论scutil命令,在 Google 上搜索openvpnscutil将会得到更多结果。

我不确定 Windows 是否支持。如果需要,您大概可以为这三个平台使用本地 DNS 服务器解决方案。

答案2

这无法通过 *nix(以及 Windows AFAIK)提供的标准 DNS 解析来完成,您需要自己的 DNS 服务器才能完成此操作。在 *nix 上域名系统是最好的选择,您可以在每个工作站上运行它,也可以在服务器上运行它并配置所有工作站以使用它。

/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

答案3

在 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

答案4

可以使用火狱--dns 选项。例如:

firejail --dns=8.8.8.8 firefox

这样,dns 服务器就可以针对每个应用程序而不是每个域进行设置。因此在某些情况下,这可能是更好的解决方案。

相关内容