使用 OpenDNS 进行 Web 内容过滤
偶尔,你会遇到一些想与他人分享的珍宝。我最近偶然发现了 OpenDNS,并且使用体验非常好,所以我想写一篇关于它的文章。在此声明,我与 OpenDNS 没有任何关联,除了我是这项免费服务的快乐用户。
大约一周前,我自愿为一个当地小型教堂做一些网络工作,该教堂经营一家咖啡店作为社区拓展项目。除了拥有镇上最好的咖啡外,教堂还希望提供免费 Wi-Fi。但是,由于这主要是一个教堂拓展项目,项目负责人显然担心能够过滤不适当的网络活动。我的计划是安装 WRT54 路由器并刷入 DD-WRT 或 OpenWRT,以便我可以安装内容过滤器,例如 DansGuardian。不过,我对必须维护内容阻止机制并不感到兴奋。内容阻止是一项困难且有时令人讨厌的工作,而且教堂没有预算来支付哪怕是廉价的过滤服务。
在研究最终配置时,我偶然发现了一个指向 OpenDNS 的链接。我喜欢“开放 (Open)”和“DNS”,所以我出于好奇点击了该链接,从未期望这项服务会成为解决我的内容过滤问题的简单而完整的方案。OpenDNS 是一项免费服务,使您能够在 DNS 级别阻止您认为不适当的内容。客户端或服务器上都不需要任何代理配置。您只需安排您的服务器和客户端使用 OpenDNS DNS 服务器,而不是您的互联网提供商提供的 DNS 服务器。一旦完成,如果用户尝试访问提供不适当内容的网站,他们将被重定向到一个 OpenDNS 网站,该网站会告知他们该网站已被阻止以及原因。
OpenDNS 将内容分为 50 多个类别,可以单独阻止。除了显而易见的类别外,OpenDNS 还可以阻止视频共享、分类广告、游戏、p2p 等等。这些类别非常容易理解,而且该网站易于使用。通过选择要阻止的类别,您可以实施几乎任何您能想到的内容过滤策略。事实上,该网站表明这项服务的目标是那些无法承担...嗯...将自己暴露于潜在诉讼的公司和学校。
如果已建立的类别过于严格或过于宽泛,OpenDNS 提供了可以应用于单个域名的白名单和黑名单功能。例如,我为教堂创建了一个策略,阻止访问所有视频共享网站,但后来发现牧师使用 YouTube 下载教学材料。因此,解决方案是保留视频共享阻止,但显式地将 youtube.com 列入白名单。这是一个简单的操作,我在他观看时执行了该操作。
要开始使用 OpenDNS,您必须注册成为用户。然后,您将网络与您的用户帐户关联,并且每个网络可以有单独的过滤策略。注册后,我为教堂、我的家和我的企业创建了单独的策略。OpenDNS 服务器使用每个 DNS 请求的源 IP 地址来确定请求来自哪个网络,从而确定要应用于该请求的策略。如果名称解析请求是针对未被阻止的站点,OpenDNS 会像任何其他 DNS 服务器一样返回适当的地址。另一方面,如果请求是针对提供与有效策略相悖的内容的域,OpenDNS 服务器将返回一个地址,该地址指向一个网站,解释请求已被阻止。
使用 OpenDNS 的另一个好处是它可以修复拼写错误的 URL。例如,如果您尝试访问 http://www.google.con(请注意,名称的最后一个字符是“n”而不是“m”),OpenDNS 非常智能,可以判断出您实际上是想访问搜索引擎,而不是“con”引擎。OpenDNS 只是重定向您的请求,您最终会到达您想去的地方。如果您尝试访问 http://www.google.gov,OpenDNS 知道没有这样的域名,并向您展示建议的目的地列表。它工作得非常出色。
如果这还不够,它还有一个更有趣的功能:快捷方式。快捷方式功能允许您为您经常使用的网站定义助记快捷方式。例如,我创建了一个快捷方式“gg”,它会带我到 Google。因此,我所要做的就是在 URL 工具栏上输入两个 g 并按 Enter 键,很快我就到了 Google。您甚至可以将快捷方式映射到更复杂的 URL,包括完整路径或 cgi 表单参数。
OpenDNS 网站声称,由于其服务器地理分布广泛,OpenDNS 可以使网站加载速度明显更快。我不能诚实地说它看起来快了那么多,但它肯定不会更慢(即使它正在对每个请求强制执行内容过滤策略)。过渡到 OpenDNS 是完全无缝的,在正常的、适当的浏览中,您永远不会知道有什么不同。
我认为任何人听到 OpenDNS 还提供详细的统计数据和图表,显示您的用户正在尝试访问互联网上的哪些位置,都不会感到惊讶。通过单击 OpenDNS 网站仪表板上的 STATS 选项卡,您可以获得 OpenDNS 为您的网络解析的所有域的列表,以及根据您的过滤策略阻止的域的列表。您还可以看到图表,显示每小时或每天发出了多少请求。
如前所述,当您尝试访问违反策略的网站时,您将被重定向到一个 OpenDNS 网站,解释您尝试访问的网站已被阻止,因为它属于一个或多个被阻止的类别。您还会看到一些无伤大雅的广告;这些广告是 OpenDNS 赚钱的唯一途径。具有讽刺意味的是,违反您的过滤策略的人越多,OpenDNS 赚的钱就越多!但在大多数情况下,OpenDNS 是完全不引人注目的,大多数用户永远不会知道他们正在使用它。
配置我的服务器以使用 OpenDNS 非常容易。我只是修改了我的 /etc/resolv.conf 文件,并将那里的 nameserver 条目替换为
nameserver 208.67.222.222
nameserver 208.67.220.220
但是,您必须配置您的 DHCP 客户端,使其不会使用来自 DHCP 服务器的 DNS 信息覆盖 /etc/resolv.conf 文件。这在手册中有详细记录,但可能不是您会想到的事情。
我使用 DHCP 将我的家庭客户端指向我的主 DNS 服务器以获得名称解析服务,我在那里运行 bind。因此,为了让我的名称服务器使用 OpenDNS,我更改了 /etc/bind/named.conf 以包含如下段落
options {
forwarders {
208.67.222.222;
208.67.220.220;
};
}
另一方面,如果我想将我的 DHCP 客户端直接指向 OpenDNS,我会更改 /etc/dhcp/dhcpd.conf,使其包含如下行
option domain-name-servers 208.67.222.222, 208.67.220.220;
如果您正在使用消费级路由器作为您的互联网网关,则将其配置为使用 OpenDNS 通常很简单。
不过,最后还需要一个配置注意事项。在潜在的敌对网络环境中,例如我之前描述的公共 Wi-Fi 咖啡馆,您必须配置防火墙,阻止除 OpenDNS 服务器之外的任何地址的 DNS 流量。否则,您可能会发现自己告诉教堂牧师,没有人可以在他的网络上访问色情内容,结果却发现他们可以——当演示失败时,我什至不想在同一个房间里。
所以这就是全部内容。如果您花大约五分钟进行配置工作,您将拥有非常可靠的内容过滤功能的开端,而且它不会花费您一分钱。