如何删除广告与Pixelserv在DD-WRT

对不起,惊喜wheezywaiter。

有很多方法在您的浏览器中阻止广告,但如果你可以在路由器上阻止他们怎么办? 以下是如何使用DD-WRT固件和故意的“DNS中毒”阻止您的网络上的每个设备的广告。

概述

更新 :指南已更新,以反映评论者提供的反馈,并更新反广告包与较新的像素服务器可执行文件和更改日志。

现在大家的第一个问题是“为什么不只是使用广告块

对很多人来说,根本不是一个原因,特别是chrome的新功能复制你使用的每个计算机上运行chrome的扩展。

答案在于介于减少的开销,不必教你的网络上的所有用户广告块 (我在跟你妈妈,sis,奶奶和办公室秘书)和方便不打扰它您设置的每台计算机。 这是假设你的网络上有一些计算机,你不打算配置你的个人环境(例如“核心服务器”或VM)。

注意 :即使我使用下面的方法在我的家用路由器,我发现ad-block是一个很好的补充,我建议结合使用这两种方法。 如果你没有一个DD-WRT路由器使用ad-block更多是他们足够。 事实上,我喜欢的程序这么多,我捐赠给其开发人员,我鼓励大家这样做,以保持它的发展。

它是如何工作的?

本质上,这是通过故意中毒我们的DNS返回未经批准的列表中的域的特定IP的工作。 此未经批准的列表将包含专门用于投放广告内容的网站的域名,因此我们不会错过任何内容。

我们将在路由器上设置辅助HTTP服务器,以提供透明的一个像素图像,作为任何URL请求的答案。 结合DNS“错误”解析,这将导致网络客户端从我们的内部像素服务器请求内容,并获得一个空白图像作为响应。

为了生成未批准的列表,我们将结合两个动态下载的列表创建一个个人列表。 动态列表是MVPS主机文件和Yoyo域列表 ,他们一起拥有非常广泛的广告站点列表。 通过利用这些列表,我们只需要在我们的个人列表中添加不在其中的网站的增量。

我们还将为域名设置“白名单”,因为我们不希望因任何原因而被阻止。

先决条件和假设

  • 耐心年轻,这是一个长期的阅读。
  • 此过程是在DD-WRT(v24pre-sp2 10/12/10 mini r15437 )上创建和测试的,因此您应该已在路由器上安装此版本或更高版本以使用它。 更多信息在DD-WRT站点上结束。
  • 为了便于说明,假定路由器已经恢复到其“出厂默认值”,或者使用的设置从那以后没有从它们的“开箱即用”预设改变。
  • 客户端计算机使用路由器作为DNS服务器(这是默认值)。
  • 空间为JFFS(当有疑问,我建议使用迷你版本的DD-WRT)。
  • 假设您的网络已经设置,并且它是一个C类(一个子网为255.255.255.0),因为该类C网络(xyz 254 )上的最后一个IP将被分配给像素服务器程序。
  • 愿意安装winSCP

*脚本在第一次运行后将无法调整块列表,直到下一个刷新周期(3天)。

积分

更新 :特别感谢“mstombs”的伟大的C代码,没有他的工作这一切都是不可能的,“Oki”编译Atheros兼容版本和报价;-)和“Nate”帮助QA- 。

虽然我有很多工作要完善这个程序,我的目的,它的灵感是由DD-WRT论坛的家伙点燃,本指南的一些基础可以找到“ 广告阻止与DD- WRT revisited(simple) “,” pixelserv without Perl,without any jffs / cifs / usb free “和” Flexion.Org Wiki on DNSmasq “以及其他。

让我们开始

启用S​​SH访问SCP

通过启用SSH,我们反过来给自己使用SCP协议连接到路由器的能力。 随着启用,我们可以使用winSCP程序来可视化导航路由器的文件夹结构(我们将在后面看到)。

为此,使用webGUI,转到“服务”选项卡。 找到“安全shell”部分,单击SSHd设置的“启用”单选按钮。

启用ssh

一旦完成,webGUI应该如下所示,你可以点击“保存”( 适用)。

启用ssh1

启用JFFS

为了使这种设置能够稳定 ,可重现,并且是一个“好的互联网公民”,我们将使用JFFS存储尽可能多的配置。 如果你没有启用JFFS,还有其他方法可以做到这一点,如果你不能由于空间限制,但他们不在这里覆盖。

*其他方法让您的路由器每次运行脚本时下载像素服务器可执行文件和动态列表。 因为这会给持有列表和可执行文件的服务器带来压力,并且这会花钱给某人,这种方法尽可能避免它。

如果你还不知道什么是JFFS,这个解释,从DD-WRT的wiki条目中得到关于 JFFS应该清楚:

The Journaling Flash File System (JFFS) allows you to have a writable Linux File System on a DD-WRT enabled router. It is used to store user programs like Ipkg and data into otherwise inaccessible flash memory. This allows you to save custom configuration files, host custom Web pages stored on the router and many other things not capable without JFFS.

要在路由器上启用JFFS,请转到“管理”选项卡并找到JFFS部分。 下面的图片显示了您可以在“管理”标签中找到此部分的位置。

启用ssh2

在JFFS2支持部分中,单击“启用”单选按钮为“JFFS2”和(当它出现)“清洁JFFS2”设置。 选择后,点击“保存”。

启用ssh3

当设置保存后,仍然在“管理”选项卡上,通过使用“重新启动路由器”按钮重新启动路由器。 这将应用设置并执行JFFS“分区”所需的“格式”。

重启

当webGUI从重新启动返回到“管理”选项卡时,请等待另外半分钟,然后刷新页面。

启用ssh5

如果成功,您应该看到您的JFFS装载有一些可用空间,如图所示。

像素服务器设置

下载并解压缩dd-wrt ​​zip存档反广告包,其中包含像素服务器可执行文件(我们不信任,只是避免“热链接”),广告拦截脚本(由您的真正写)由Mithridates Vii Eupator创建的域列表和I.

现在是将文件导入路由器上的JFFS安装的时候了。 要做到这一点,安装winSCP (它是一个“下一个>下一个>完成”类型的设置),并打开它。

在主窗口中,填写如下信息:

主机名:您的路由器的IP(默认为192.168.1.1)

端口号:保持不变22

用户名: root (即使您更改了webGUI的用户名, SSH用户将始终为* root *

私钥文件:留空(这只有当您创建基于密钥对的身份验证,我们没有)

文件协议:SCP

winscp1

我们还需要禁用“查找用户组”,如下所示(感谢mstombs指出这一点),因为winSCP期待一个完全成熟的Linux对DD-WRT的开发人员,尽管所有的优秀的工作,无法提供(主要是因为根本没有足够的空间)。 如果您选中此复选框,则在连接并保存已编辑的文件时会遇到可怕的消息

选择高级,然后取消选中“查找用户组”。

虽然它是可选的,您可以选择保存设置以供以后使用。 如果你选择保存建议的设置,也建议(尽管来自“安全性偏执”庇护,我们谴责SSH的存在)的彻底的哭泣,你保存密码。

winscp2

然后你的主窗口将如图所示,所有你需要做的连接到路由器是双击该条目。

winscp3

因为这是你第一次连接到路由器,winSCP会询问你是否愿意信任另一方的指纹。 单击“是”继续。

winscp4

DD-WRT的开发人员实施了Banner欢迎消息,其中包含有关您已安装的固件的一些信息。 一旦显示为红色,请点击“不再显示此横幅”复选框,然后点击“继续”。

winscp5

一旦连接,导航到顶层文件夹(AKA根“/”),然后回到“/ jffs”,因为这是路由器文件系统上唯一永久可写的地方(“/ tmp”不能重新启动其余都是只读的)。

winscp7

创建一个新文件夹,通过击中F7或右键单击空白点,将鼠标悬停在“新建”,然后单击“目录”。

winscp8

将新目录命名为“dns”。 我们创建这个目录,以保持jffs目录中的东西组织以供将来使用,因为我们主要改变DNS服务的工作原理。

从anti-ads-pack-for-dd-wrt ​​zip存档中复制“pixelserv”和“disable-adds.sh”文件,选择它们(使用“插入”键),点击“F5” “。

winscp9

注意:如果您的路由器是基于Atheros(您可以在DD-WRT维基上检查),您需要使用由Oki提供的pixelserv_AR71xx并包含在包中,并重命名为“pixelserv”,然后继续。

一旦文件在路由器上,我们需要使它们可执行,通过选择它们(再次使用“插入”)右键单击“属性”。

winscp10a

在属性窗口上单击“X”为“所有者”行。 这将给予文件执行权限。

路由器设置

现在该阶段已设置,我们可以告诉路由器在启动时运行广告拦截脚本。
为此,在webGUI中,转到“管理”选项卡,然后选择“命令”选项卡。
winscp11

在“命令”文本框中将脚本的位置写为“/jffs/dns/disable_adds.sh”,如图所示,然后单击“保存启动”。

winscp12

如果成功,您应该看到脚本已成为路由器启动的一部分,如上图所示。

设置个人已屏蔽域列表(可选)

如果您发现这两个动态列表没有抓住某些内容,可以使用此列表将域添加到未批准的列表。
要做到这一点,有两个选项,他们一起工作,所以你可以使用两者根据更方便你。

注意 语法很重要 ,因为我们实际上创建配置指令,DNSMasq守护程序(负责DNS名称到IP翻译的进程)将直接使用。 因此,这里不正确的语法将导致服务崩溃,并离开路由器无法解析域名的IP地址(你已经被告诫)。

为了找到要阻止的违规域名,您可能想使用我们的“ 在网站标头中查找秘密消息 ”指南作为底线。 找到广告域的名称的步骤实际上是相同的,只是在这种情况下,您正在寻找地址而不是消息。

第一个也是更容易访问的方法是将列表放到wegGUI中的“DNSMasq”配置框中。 这是因为要添加到这个列表中,可以简单地访问webGUI,而不必“改变”进行更改。

转到“服务”选项卡,找到“DNSMasq”部分,并找到“其他DNSMasq选项”文本框。

在此文本框中,输入要使用语法“address = / domain-name-to-block / pixel-server-ip”阻止的域的列表,如下图所示:

dnsmasq03

在此示例中,“192.168.1.254”是基于LAN的“网络地址”为像素服务器生成的IP。 如果您的网络地址是192.168.1.x以外的其他地址,您将必须相应地调整像素服务器的地址。

完成后,点击页面底部的“保存”(尚未应用)。

第二个选项是将您要阻止的域的列表复合到我自己和“Mithridates Vii Eupator”汇编的“personal-ads-list.conf”文件。 这个文件是你先前下载的zip文件的一部分,这是两个方法的一个很好的开始。

为了使用它,如果有必要,使用您最喜欢的文本编辑器来调整像素服务器的IP(与上面相同的约束在这里适用)。 然后简单地将其复制到“/ jffs / dns”目录,因为你有其他文件。 一旦它在那里,你可以使用winSCP来编辑它和添加域。

设置白名单

这是将从动态“主机”和“域”列表中省略的域列表。

这是必要的,因为简单地阻止一些域导致使用它们的站点故障。 最值得注意的例子是“google-analytics.com”。

如果我们屏蔽它的域名,它不会改变使用它的网站的事实,让您的浏览器下载一个运行在事件(如离开页面)的JavaScript。 这意味着,对于这样的网站,您的浏览器将尝试通过联系谷歌域名“回家”,不会理解回复,你将不得不等到脚本超时,继续下一页。 这不是一个愉快的冲浪体验,这就是为什么包含“google-analytics”和“googleadservices”的任何域*硬编码免除过滤。

当第一次运行脚本时,在“/ jffs / dns”目录下为上述域创建此列表。

winscp13

要使用白名单,打开该文件的WinSCP和** perpend到列表中你想排除的领域,同时小心不要留下任何空白行(留下一个空白行会从所有列表中删除所有域)。

winscp14a

*虽然脚本在第一次运行时创建其中包含域的白名单,但它不会坚持其未来运行的呈现。 所以如果你觉得google应该阻止尽管上述问题,你可以从白名单中删除域。

**您必须在列表的开头输入所需的新域。 这是因为一个bug,如何bash解释新行...对不起,我没有一个工作,但仍然。

执行

这是它,它终于是调用脚本,看到结果,只需重新启动路由器的时间。

要从webGUI这样做,在“管理”选项卡下,回到“管理”,在页面底部单击“重新启动路由器”,并等待路由器恢复。

脚本可能需要几分钟的时间才能第一次执行其职责。

在WRT54Gx类型的路由器上,您将知道脚本何时完成执行,因为它将 闪烁路由器前面的Cisco橙色LED (其他路由器应该有类似的“告诉尾部”标志)。

更新:这部分被发现是一个非硬件无关的功能后,*删除。

当我们试图看到在网络上没有元素,我建议简单地冲浪到几个网站看到的影响。

但是,如果要确保过程成功,则故障排除部分中的第一个调试步骤是一个很好的开始。

*它实际上注释掉,所以你可以恢复它,如果你确定它不会导致您的设置的问题。

请享用! 微笑


故障排除

如果你遇到问题,有几个东西,你可以做,以检查什么错误。

  1. 测试广告域解析到pixelserv IP。
    您可以通过对“违规”域发出nslookup命令来执行此操作。 例如,“ad-emea.dubleclick.com”是来自个人列表的受阻主机的一部分。 通过在命令提示符中发出“nslookup ad-emea.dubleclick.com”,结果应如下所示:
    nslookup01a
    正常解锁的答案如下:
    nslookup02
  2. 做完。
    为了确保您的路由器设置没有与广告块配置冲突,恢复路由器到“出厂默认值”,然后重试。 一旦你成功添加您的自定义更改,希望他们不再冲突。
  3. 确保您的客户端正在使用路由器作为DNS。
    特别是当使用VPN或网络更复杂,然后正常的路由器到计算机设置,您的客户端计算机可能是简单地不使用路由器作为其DNS。 这是很容易看到在上面的命令是什么是客户端正在使用的DNS服务器,如果IP不同于路由器,您已经发现问题。
  4. 清除个人计算机的DNS缓存。
    这是因为否则您可能仍然看到广告到测试的网站,只是因为您的计算机已经知道如何获取广告内容,而无需咨询DNS。 在Windows上,这将是“ipconfig / flushdns”。
  5. 关闭浏览器
    有时浏览器保存缓存的信息,所以清除DNS缓存如上所示没有帮助。
  6. 当怀疑重启。
    有时缓存可以持久化,最好的方法是重新启动。 从路由器开始,如果问题仍然存在,客户端计算机。
  7. 使用syslog
    您可以激活路由器的syslog守护程序,然后通过检查其消息来查看消息以查看脚本是否遇到任何问题。 此外,脚本还添加了一些命令别名,使调试更容易。
    为此,转到“服务”选项卡,并启用syslog守护程序,如下图所示:
    syslog启用
    注意:当您有另一台机器上的监听syslog服务器(如 kiwi 时,使用“远程服务器”( 如果您没有),只需将其留空即可。

    启用后,您可以通过查看终端中的/ var / logs / messages文件来查看调试消息。
    *要查看从启动的所有消息,您可以使用“more / var / log / messages”。
    *要仅查看日志中的脚本中的消息,请使用“clog”别名。
    *要实时查看消息,请使用“tail -f / var / log / messages”或其别名“tlog”。
  8. 了解脚本。
    即使我为这个指南和脚本的旧版本制作了这个YouTube视频 ,它仍然有很多真理和解释,适用于新的和改进版本的工作原理。
下载反广告包

路由器的神可以在你的帮助 微笑

赞 (0)
分享到:更多 ()