我目前用广告服务器域名更新我的本地主机文件,并将它们指向任何地方。好吧,几乎任何地方。我将它们指向 127.0.0.1,我没有运行 Web 服务,所以它实际上是无处可去的。无论如何,当我浏览 www 时,它会屏蔽很多广告和我在网页上发现的其他不良内容。它不会强迫您使用特定的浏览器或操作系统。(这是一项要求,因为这里的操作系统和浏览器的组合不同,而且这些组合一直在变化)
我的本地网络上有一个 NAS 驱动器,因此我会不时将我的 hosts 文件复制到那里。然后,当我使用本地网络上的另一台计算机时,如果我想在本地计算机上屏蔽广告,我必须转到 NAS 驱动器并将更新的 hosts 文件复制到本地计算机。
我希望我的小型 Wi-Fi 路由器能够执行此任务,并允许我将主机文件列表添加到其中。它有一个本地 DNS 服务来镜像传出的 DNS 查询或类似的东西。
我是否必须在网络上设置独立的 DNS 服务器并确保所有本地计算机都使用它?我是否必须一直开着另一台计算机,消耗电力、使房间变热并增加风扇噪音?出于这些原因,我已经购买了 NAS 驱动器来消除网络上的一台计算机。
然后,如果我使用另一个盒子进行 DNS 操作,只是为了保持广告拦截,我需要 DHCP 服务,因为路由器内置的服务不允许我告诉它使用哪个 DNS 服务器。它使用不可更改的默认设置。所以我必须关闭 Wi-Fi 路由器上的 DHCP,并且故意不使用它提供的 DNS,这样我就可以再运行一个盒子来维护我的共享主机文件。
在我这里的网络上,我有几个 xp 盒子,它们不是全天候运行的,一个 vista,它被带到了大学,但有些周末会在这里,一个 Debian linux 和可启动的 live-cd,可以随时拥有一个 web 服务器或任何其他东西,一个 Linksys wi-fi 路由器和一个电话公司拥有的 DSL 调制解调器,除了“防火墙”或“直通”之外没有其他功能,手机在这里时也会通过它上网。但是当其他人带着笔记本电脑过来时,我会给他们我的 wi-fi 代码,然后他们就会暂时进入我的网络,希望不会被广告、统计和跟踪。
有没有其他方法可以实现这一点而不增加支出?我知道我的 NAS 驱动器实际上只是一个无头 LINUX 盒,使用一个 12 伏充电器大小的小型电源运行。我通过 ssh 登录到它并查看了周围,但建议我不要弄乱它的内部操作。此外,我认为它有点慢,那么它真的需要在作为文件服务器的基础上执行 DHCP 和 DNS 吗?
我是否真的需要用一些昂贵的工业级路由器来替换我的 Wi-Fi 路由器来完成这项任务?
答案1
DNS 不是适合这项工作的工具。
首先我们来处理一些愚蠢的事情:
不。现在不是 20 世纪 50 年代了。计算机可以同时运行多个服务器。自 20 世纪 80 年代以来,许多 Unices 一直乐于这样做,包括运行自己的完全成熟的解析代理 DNS 服务器,这是标准配置 — 开箱即用。使用您声称已经拥有的始终在线的计算机。我是否必须一直打开另一台电脑……?
当想要将文件分发hosts
到多台机器时,下一步就是设置 DNS 服务器。毕竟,这几乎就是 DNS 出现的原因。因此眼光狭隘回答你的问题
答案是“是”。这就是将此类数据扩展到整个 LAN 的方法。我必须在我的网络上设置一个独立的 DNS 服务器并确保我所有的本地计算机都使用它吗?
然而,DNS 是不合适的工具您想要做的。我知道建立一个hosts
包含大量名称的文件并以此方式屏蔽广告似乎是一个绝妙的主意,但它不可扩展 — — 正如您已经发现的那样,其他人在 20 世纪 80 年代也发现了这一点 — — 并且(即使修改为使用内容 DNS 服务器)它也不合适。它不够细粒度,并且违反了分层原则。
- 这是违反分层规定的因为你没有阻止你的 WWW 浏览器通过 HTTP/HTTPS 获取内容。相反,你正在更改名称→地址映射,一切在您的机器上使用。因此,您正在更改 SMTP、IMAP、POP、FTP、HTTP、NTP、CIFS 等的映射,以及查找域名并将其映射到 IP 地址的所有其他映射。对于您的 LAN 上的那些可能想要执行以下任务的访客其他比使用您单方面认为是“广告”的域名进行 WWW 浏览,情况就彻底搞砸了。您攻击的层是错误的。名称→地址映射层不是可以乱搞的层。HTTP/HTTPS 层才是。
- 不够细致因为你会发现,一旦你这样做了足够长的时间,广告商就会对你很了解。也许最明显的例子就是,谷歌至少提供了一个网络漏洞,其网址的域名为
www.google.com
。用你的铁锤到核桃的方法阻止它,你就把自己几乎与整个谷歌隔绝了。还有许多其他类似的例子,弹出/弹出式脚本、第一方 cookie 注入器、网络漏洞和其他恶意程序都是从与 相同的域提供的可取之处内容。我建议浏览一下阿扎珀— 其中许多条目使用正则表达式来匹配一些域名的 URL — 看看这种情况现在有多普遍。
适合这项工作的工具是代理 HTTP 服务器、PAC 脚本或浏览器内工具。
有两种正确的方法选择,它们都在 HTTP 层操作,并且都具有比整个域更细的粒度:
- 告诉某人的 WWW 浏览器直接地将不良内容的 HTTP/HTTPS 事务发送到何处。 人们经常用PAC 脚本,还有许多人发布 PAC 脚本,用于跳转广告,供人们在此基础上进行开发。(John R. Lo Verso 的脚本已经存在了五年多。)人们将正则表达式列表放入 PAC 脚本中,并告诉 WWW 浏览器从哪里加载脚本。WWW 浏览器本身重新定位其 HTTP/HTTPS 事务,无需更改 DNS 服务,无需摆弄额外/替换设备,并且不会影响其他协议、其他软件和其他人的工作。
通过重定向/处理 HTTP 事务来阻止广告的插件实际上就是同样的方法。WWW 浏览器进程本身完成工作,并且不会对其他任何事情产生影响。
- 运行一个具有一组用于重定向/重写机制的模式匹配规则的代理 HTTP 服务器,并引导所有 WWW 浏览器通过它发送 HTTP 流量(这还有一个好处,如果愿意的话,可以在 LAN 边界对 HTTP 流量施加更严格的限制,因为所有流量都应该来自代理 HTTP 服务器的后端。)Adzapper 和私有网络是可用于此目的的多种代理 HTTP 服务器中的两种。 WWW 浏览器不会重新定位其 WWW 流量,而是由代理 HTTP 服务器完成此操作。使用一些巧妙的代理 HTTP 服务器,人们可以实现各种技巧。
近十年来,我自己一直使用第一种方法。它的缺点是,即使在今天,WWW 浏览器对 PAC 脚本的处理也相当不可靠。很容易编写一个无法在所有 WWW 浏览器上运行的脚本,故障模式非常糟糕(例如,如果呈现错误的 PAC 脚本,RealPlayer 的内置 WWW 浏览器就会挂起/崩溃。)并且 PAC 脚本与某些反恶意软件工具采用的 WWW 浏览保护机制之间的交互通常不太好。尽管如此,我可以从经验中保证这种方法在各种平台上运行的各种 WWW 浏览器上都有效,只要非常小心。
对于插件来说,缺点也类似。必须确保每个 WWW 浏览器都有插件,而且很少有一个插件可供所有人使用。全部所有平台上的各种WWW浏览器。
我现在使用第二种方法。与 PAC 脚本和插件相比,它的优点是完全与浏览器无关,并且只需要在一位置(而不是多种不同类型的 WWW 浏览器,包括媒体播放器、超文本帮助系统、桌面小工具、自动软件更新工具等工具中的所有内置 WWW 浏览器)。
使用正确的工具来完成工作。DNS 是不是这里的那个工具。
答案2
您可以使用 OpenDNS。您可以将路由器设置为使用其 DNS 服务器,并在网站上添加要阻止的网站列表或您自己的网站列表,或两者兼而有之。这样,当加载列入黑名单的网站时,您还可以拥有自定义页面,而不是空白屏幕。
答案3
您可以查看防火墙发行版,例如 ipcop、smoothwall、pfsense 等。然后关闭无线路由器上的 DHCP 等。正确的做法是禁用路由器上的 wifi,并为 wifi 安装第三个网络适配器(一个适配器连接到 WAN,一个连接到 LAN,还有一个 wifi 用于无线)。
许多此类软件包都具有内部反垃圾邮件的额外优势。
我使用过 ipcop 和 pfsense,它们很容易维护,但如果你使用 COAX(例如 verizon fios),你可能需要经历一些麻烦(我这样做了,它是可行的,但由于某种原因,当调制解调器断电时,我使用的“解决方法”被禁用,需要用户干预才能恢复互联网)