OpenWrt 路由器过滤广告的N种方法

路由器已经成为每个家庭不可缺少的角色,手机、电脑、电视,凡是需要互联网的设备都要用到它。那么路由器除了给我们的网络设备分发网络外,还有其他用途吗?

现在很多人家里都用着智能路由器,智能路由器究竟怎么智能,各个厂家卖点不一样,有些是支持安装插件,有些是 USB 延伸出来的扩展功能,归根结底,都离不开一个系统: OpenWrt (以下简称:OP)。

OP 是适用于嵌入式设备的 Linux 发行版,大多数智能路由器运行的系统都是基于 OP ,比如:小米、极路由、Newifi 这些,软件包是 OP 的一大特色,开发者可以基于 OP 来开发软件包,也就是俗称的插件。这些插件里,最常用的可能就是广告过滤,看视频终于不用等待长达几十秒和那些无节操的广告,只要连接 WiFi,就可以过滤广告,非常方便。

今天就教大家如何在 OP 系列系统上过滤广告,此教程不适用上面提到的智能路由,只适用没有原版 OP 固件,如:OpenWrt、LEDE、PandoraBox 等。

OpenWrt 过滤广告

准备工作

  1. 一台运行 OpenWrt 的设备
  2. SSH 连接工具,为了登陆到系统终端,可以使用 PuTTY 等 SSH 工具,下载地址:PuTTY

使用方法参考《OpenWrt/LEDE 新手指南

 

1 . Hosts

Hosts 是每个系统都会有的一个文件,它的作用就是将域名指向指定 IP,如果把广告域名指向一个无法访问的 IP,是不是就可以达到过滤广告的需求了。

优点:占用空间少,不需要依赖,可以过滤大多数网盟和视频广告

缺点:容易误杀(有些域名不一定都是广告),过滤视频广告效果不是 100%,无法去除广告占位符。

适用于一些低性能和剩余空间不多的设备,根据小山测试,可以过滤掉手机端大多数视频广告、PC 端可能还会被检测出来。

配置方法

  1. 输入 cp /etc/hosts /etc/hosts.bak 备份原有 Hosts
  2. 输入 wget https://raw.githubusercontent.com/vokins/yhosts/master/hosts -O /etc/hosts --no-check-certificate 下载屏蔽广告 Hosts
  3. 输入 /etc/init.d/dnsmasq restart 重启 Dnsmasq 使 Hosts 生效
  4. 浏览器打开路由器管理页面,依次点击 [系统] → [计划任务],在新的一行填写 0 4 * * * wget https://raw.githubusercontent.com/vokins/yhosts/master/hosts -O /etc/hosts --no-check-certificate && /etc/init.d/dnsmasq restart # 每天4点自动更新 Hosts
如果你固件的 wget 不支持 HTTPS,那么 Hosts 会下载失败。

解决方法

  1. 输入opkg update && opkg install wget 安装完整 wget 重新执行上面的命令。
  2. 将下载源替换为小山的镜像,这个镜像不是缓存,是 cURL 源地址,同时可以加速下载,GitHub 在国内速度并不是多好,地址:http://x.mivm.cn/Hosts/?URL=https://raw.githubusercontent.com/vokins/yhosts/master/hosts ,支持 HTTPS。
  3. 这个方法就比较麻烦了,在电脑上下载好 Hosts 上传至路由器。
    下载 https://raw.githubusercontent.com/vokins/yhosts/master/hosts ,然后将文件复制到跟 pscp.exe 相同的位置,就是上面下载的 PuTTY 里面附带的 pscp.exe ,接着在 PuTTY 文件夹窗口按住 Shift 键点击鼠标右键,点击 [在此处打开命令窗口],然后输入 pscp -scp -l root hosts 192.168.1.1:/etc/hosts 接着输入密码,即可上传至路由器。

右键打开命令行窗口

删除 Hosts 屏蔽:输入命令 mv /etc/hosts.bak /etc/hosts 还原 Hosts,接着删除计划任务的任务即可。

这种方法有一定几率误杀也可能导致某些网站打不开或者显示错误。

2 . Adbyby (广告屏蔽大师)

Adbyby

Adbyby,国人开发的一款屏蔽广告软件,可能很多小伙伴都用过,效果不错,配置也相对简单。

优点:广告过滤全面,可以过滤非 HTTPS 广告,设置简单,适合小白使用。

缺点:会影响网速,如果你的带宽是 100M,CPU 是 MT7620 这种低性能处理器,那么可能达不到 100M 的速度或者不稳定。这是所有广告过滤软件的缺点。

安装方法

  1. 浏览器打开路由器管理页面或者 SSH 登陆至路由器后台
  2. 点击 [系统] → [软件包] → 在 [下载并安装软件包] 复制下载链接,或者输入 opkg update && opkg install 下载链接 ,下载链接见下方,比如:opkg update && opkg install http:https://cdn.mivm.cn/OpenWrt/adbyby/adbyby_2.7_mtk.ipk
  3. 由于主程序和 Luci 界面是分开的,还需要安装 Luci 界面,安装地址:http:https://cdn.mivm.cn/OpenWrt/adbyby/luci-app-adbyby_2016-01-27_all.ipk
  4. 刷新路由器页面,在 [服务] 找到 [广告屏蔽大师] 开启即可。

在下方选择适合自己路由器的版本,按照 CPU 架构区分,输入 cat /proc/cpuinfo 查看 CPU 架构。

比如:cpu model : MIPS 24KEc V5.0 就是 ramips_24kec ( 一般都是MTK系列 ) ,使用:http:https://cdn.mivm.cn/OpenWrt/adbyby/adbyby_2.7_mtk.ipk。

http:https://cdn.mivm.cn/OpenWrt/adbyby/adbyby_2.7_ar71xx.ipk
ar71xx
http:https://cdn.mivm.cn/OpenWrt/adbyby/adbyby_2.7_arm-926t.ipk
arm-926t
http:https://cdn.mivm.cn/OpenWrt/adbyby/adbyby_2.7_arm-v7.ipk
arm-v7
http:https://cdn.mivm.cn/OpenWrt/adbyby/adbyby_2.7_mtk.ipk
MTK系列
http:https://cdn.mivm.cn/OpenWrt/adbyby/adbyby_2.7_x64.ipk
X64
http:https://cdn.mivm.cn/OpenWrt/adbyby/adbyby_2.7_x86.ipk
X86

你可以使用过滤指定设备,比如,只过滤手机,那样你电脑的网速就不会受影响了。

官网:www.adbyby.com

3 . KoolProxy

KoolProxy,是 KoolShare 团队开发的广告过滤软件,支持 HTTPS,而且功能和规则方面,比 Adbyby 要丰富。

优点:支持 HTTPS 过滤,支持黑名单模式,过滤指定域名广告,内存占用比 Adbyby 少。

缺点:占用空间和所需依赖项较多。

KoolProxy

准备工作

由于这个插件需要很多依赖,且不支持自动安装,所以我们需要先安装下依赖插件。一个个来。

首先更新软件源:opkg update

HTTPS 广告过滤:opkg install openssl-util

黑名单模式:opkg remove dnsmasq && opkg install ipset dnsmasq-full diffutils

以 MAC 地址过滤指定设备:opkg install iptables-mod-nat-extra

更新 Host 过滤规则,如果没有,会导致 Host 规则数目为0:opkg install wget libustream-openssl ca-bundle ca-certificates

如果只需要全局 HTTPS 过滤,那么只需要安装:opkg install openssl-util iptables-mod-nat-extra
推荐 K2 等小闪存设备使用这种方案。

KoolProxy 新版已支持自动安装所需依赖

安装方法

  1. 浏览器打开路由器管理页面或者 SSH 登陆至路由器后台
  2. 点击 [系统] → [软件包] → 在 [下载并安装软件包] 复制下载链接,或者输入 opkg update && opkg install 下载链接,下载链接见下方,比如:opkg install http://firmware.koolshare.cn/binary/KoolProxy/luci/luci-app-koolproxy_3.5.2-1_mipsel.ipk
  3. 如需中文翻译,安装 http://firmware.koolshare.cn/binary/KoolProxy/luci/luci-i18n-koolproxy-zh-cn.ipk ,方法同上。 中文翻译已集成
  4. 刷新路由器页面,在 [服务] 找到 [KoolProxy] 开启即可。

版本同样按照 CPU 架构区分,查看 CPU 架构方法见上面。

http://firmware.koolshare.cn/binary/KoolProxy/luci/luci-app-koolproxy_mips.ipk
mips ar系列基本是这个
http://firmware.koolshare.cn/binary/KoolProxy/luci/luci-app-koolproxy_3.5.2-1_mipsel.ipk
mipsel mtk系列基本是这个
http://firmware.koolshare.cn/binary/KoolProxy/luci/luci-app-koolproxy_3.5.2-1_arm.ipk
arm
http://firmware.koolshare.cn/binary/KoolProxy/luci/luci-app-koolproxy_3.5.2-1_i386.ipk
x86
http://firmware.koolshare.cn/binary/KoolProxy/luci/luci-app-koolproxy_3.5.2-1_x86_64.ipk
x64

HTTPS 过滤方法 (Windows)

确保已安装 HTTPS 过滤所需依赖:openssl-util

  1. KoolProxy 启动后,浏览器输入 110.110.110.110 下载 HTTPS 过滤 SSL 证书,这个证书每个路由器是独一无二的,所以无需担心。
  2. 双击打开证书,点击 [安装证书] → 存储位置选择 [本地计算机] → [下一步] → 选择 [将所有的证书都放入下列存储] → [浏览] → [受信任的根颁发机构] → [确定] → [下一步] → [完成]。
  3. 浏览器打开路由器管理页面,进入 KoolProxy 设置页面,在 [KoolProxy 访问控制] 添加规则,[内部IP地址] 或 [内部MAC地址] 选择一个即可,选择 MAC 地址确保已安装相应的依赖,过滤方式选择 [全局HTTPS过滤] 或者 [仅过滤HTTPS黑名单广告],黑名单模式确保已安装相应的依赖,保存应用即可。

至于手机端不建议使用 HTTPS 过滤,手机涉及的敏感信息太多。

如果你想去除 HTTPS 广告过滤,删除 HTTPS 证书,方法如下:

  1. Win + R 键 输入 certmgr.msc 运行
  2. 点击 [受信任的根证书颁发机构] → [证书] → 找到 koolproxy.com 这个证书,右键删除。
  3. 浏览器打开路由器管理页面,进入 KoolProxy 设置页面,在 [KoolProxy 访问控制] 删除对应规则。

KoolProxy 使用ipk安装的可能不是最新版,所以这里给大家说一下简单更新的方法。

关闭 KoolProxy,SSH 登陆至路由器系统后台,输入:wget http://firmware.koolshare.cn/binary/KoolProxy/mipsel -O /usr/share/koolproxy/koolproxy ,这个地址根据你的 CPU 架构决定,比如 arm 架构:http://firmware.koolshare.cn/binary/KoolProxy/arm,查看版本号:/usr/share/koolproxy/koolproxy -v ,更新完成后再次开启 KoolProxy 即可。

KoolProxy 新版已支持自动更新二进制文件

KoolProxy 的优势就在于可以过滤 HTTPS 广告,至于安全性我不敢保证,还有黑名单模式,网速方面不会有太多限制。

K2 For PandoraBox 安装方法

K2 刷了 PandoraBox 后,可用空间不多,如果直接安装 KoolProxy 的话,空间不足会导致安装失败,所以需要使用命令忽略依赖安装,不过黑名单模式会不可用。

  1. 使用 SSH 工具连接至路由器
  2. 输入 opkg update && opkg install openssl-util 安装 HTTPS 依赖
  3. 输入 opkg install http://firmware.koolshare.cn/binary/KoolProxy/luci/luci-app-koolproxy_3.5.2-1_mipsel.ipk --nodeps 忽略依赖安装

除了黑名单模式无法使用外,其他功能都能正常使用。

更新日志:http://koolshare.cn/thread-64086-1-1.html


以上就是 OpenWRT 路由器过滤广告的几种方法,造成的任何后果与本站和本人无关。

如果你有其他的过滤方法,可以在下方留言给我,文中有不懂的也可以留言给我。

微信公众号二维码

微信扫描二维码关注我们

点赞
  1. Tsewingto说道:

    opkg install http://firmware.koolshare.cn/binary/KoolProxy/luci/luci-app-koolproxy_3.5.2-1_mipsel.ipk
    返回8怎么解决?

    Google Chrome 55.0.2883.87 Google Chrome 55.0.2883.87 Windows 10 x64 Edition Windows 10 x64 Edition
    1. 小山说道:

      可能是空间不足或者是依赖安装失败

      Google Chrome 60.0.3112.90 Google Chrome 60.0.3112.90 Windows 10 x64 Edition Windows 10 x64 Edition
  2. 同盟源说道:

    AR7161改host完美屏蔽,又不影响速度,又不占资源,局域网内屏蔽,大家都说好。

    Google Chrome 59.0.3071.109 Google Chrome 59.0.3071.109 Windows 10 x64 Edition Windows 10 x64 Edition
  3. 余人说道:

    小山可以的,装逼山66666,问题:KP与SSR的冲突怎么破?

    Google Chrome 50.0.2661.102 Google Chrome 50.0.2661.102 Windows 7 Windows 7
    1. 小山说道:

      他们两个之间是不会起冲突的

      Google Chrome 57.0.2987.133 Google Chrome 57.0.2987.133 Windows 10 x64 Edition Windows 10 x64 Edition
      1. sygjsd说道:

        请教:我的Koolproxy与ssr起冲突,Koolproxy3.62版,启用全局模式,https模式,ssr采用的是ss-redir + gfwlist,但gooole,YouTube,www.v2ex.com等网站会出现警告:(你的链接不是私密链接...),网页打不开.但谷歌的二级域名却没有问题,如mail.google.com等却没有问题,Facebook等也没有问题,这该怎么设置,就想用用全局模式,https模式,ssr该如何设置,我看了https://github.com/shadowsocks/luci-app-shadowsocks/issues/139这个,但完全看不懂

        Google Chrome 59.0.3071.115 Google Chrome 59.0.3071.115 Windows 10 Windows 10
        1. 小山说道:

          Luci界面是谁的,最好先开启KP,后开启SSR。

          Google Chrome 61.0.3163.100 Google Chrome 61.0.3163.100 Windows 10 x64 Edition Windows 10 x64 Edition
          1. sygjsd说道:

            Luci界面是KP, ssr没有界面

            Google Chrome 59.0.3071.115 Google Chrome 59.0.3071.115 Windows 10 Windows 10
          2. sygjsd说道:

            可以指导一下这个方案3吗?小白看不懂
            方案3 (优先kp,其次SS,推荐);
            为便于理解,以下iptables配置只展示流量经过顺序,不是iptables的创建顺序,PREROUTING内规则的创建实际上应该在最后
            0 koolproxy默认开启ttl和mark功能 KoolProxy --ttl 160 --mark -d(固件不支持ttl的仅开启mark也行: KoolProxy --mark -d)
            1 在NAT PREROUTING链内,KP在前,SS在后,KP开启--mark,流量将先走KP(80,443),实现过滤,过滤后每个主机会被打上不同的mark;
            #KP在前,所有tcp流量全部交给KOOLPROXY链
            -A PREROUTING -p tcp -j KOOLPROXY
            #SS在后,在kp开启的时候,只能拿到非80,443的流量,在kp关闭后,可以拿到所有端口的流量
            -A PREROUTING -p tcp -j SHADOWSOCKS

            2 例如局域网内192.168.1.100主机的数据经过kp过滤后,将会被打上0xc0a80164的mark(192 = c0, 168 = a8, 1 = 01, 100 = 64 );
            #创建KOOLPROXY链,用于白名单和访问控制
            -N KOOLPROXY
            #创建KOOLPROXY_HTTP链,用于过滤http流量
            -N KOOLPROXY_HTTP
            #创建KOOLPROXY_HTTPS链,用于过滤https流量
            -N KOOLPROXY_HTTPS
            #局域网和保留地址不走kp
            -A KOOLPROXY -m set --match-set white_kp_list dst -j RETURN
            #主机192.168.1.100需要https过滤
            -A KOOLPROXY -s 192.168.1.100/32 -p tcp -g KOOLPROXY_HTTPS
            #其它主机过滤http流量
            -A KOOLPROXY -p tcp -j KOOLPROXY_HTTP

            3 为了SS能拿到数据,在NAT OUTPUT链中,使用match ttl匹配,在OUTPUT链内将流量全部给SHADOWSOCKS_EXT链;
            #创建SHADOWSOCKS_EXT链,用于开启kp情况下ss的访问控制实现
            -N SHADOWSOCKS_EXT
            #使用ttl匹配将KP过滤后的数据转到SHADOWSOCKS_EXT链(如果固件不支持ttl匹配,使用下面的命令)
            -A OUTPUT -p tcp -m ttl --ttl-eq 160 -j SHADOWSOCKS_EXT
            #如果固件不支持ttl match,可以用mark匹配ip地址的前三位(用0xffffff00作为掩码的形式),来将KP过滤后的数据转到SHADOWSOCKS_EXT链

            echo 192.168.1 | awk -F "." '{printf ("0x%02x", $1)} {printf ("%02x", $2)} {printf ("%02x", $3)} {printf ("00/0xffffff00\n")}' = 0xc0a80100/0xffffff00

            -A OUTPUT -p tcp -m mark --mark 0xc0a80100/0xffffff00 -j SHADOWSOCKS_EXT

            4 如果开启了acl,比如需要192.168.1.75不走SS(全端口),192.168.1.246走gfwlist模式(80,443端口),192.168.1.214走大陆白名单模式(22,80,443端口),剩余主机全部走大陆白名单模式(全端口):
            #主机192.168.1.75(0xc0a8014b),流量经过KP过滤后并打上mark后,通过OUTPUT链进入SHADOWSOCKS_EXT链,而未能翻墙(RETURN)
            -A SHADOWSOCKS_EXT -p tcp -m mark --mark 0xc0a8014b -j RETURN
            #主机192.168.1.246(0xc0a801f6),流量经过KP过滤后并打上mark后,通过OUTPUT链进入SHADOWSOCKS_EXT链,在此流量被导向了SHADOWSOCKS_GFW链,实现gfwlist模式翻墙(80,443端口)
            -A SHADOWSOCKS_EXT -p tcp -m multiport --dports 80,443 -m mark --mark 0xc0a801f6 -g SHADOWSOCKS_GFW
            #主机192.168.1.214(0xc0a801f6),流量经过KP过滤后并打上mark后,通过OUTPUT链进入SHADOWSOCKS_EXT链,在此流量被导向了SHADOWSOCKS_CHN链,实现大陆白名单模式翻墙(22,80,443端口)
            -A SHADOWSOCKS_EXT -p tcp -m multiport --dports 22,,80,443 -m mark --mark 0xc0a801d6 -g SHADOWSOCKS_CHN
            #剩余的主机,流量经过KP过滤后并打上mark后,通过OUTPUT链进入SHADOWSOCKS_EXT链,在此流量被导向了SHADOWSOCKS_CHN链,实现大陆白名单模式翻墙(全端口)
            -A SHADOWSOCKS_EXT -p tcp -j SHADOWSOCKS_CHN

            情形:
            1 当SS开启,kp未开启:所有流量走ss PREROUTING过,经过分流后,国内的流量在经过OUTPUT的时候,因为KP没开,数据不会匹配到ttl值(或者没匹配到mark值),所以不会过滤广告,翻墙正常
            2 当KP开启,SS未开启,所有流量走kp PREROUTING过,广告过滤正常
            3 当SS开启,翻墙和acl工作正常的时候,开启KP:KP在PREROUTING内插入到SS前面,会先得到流量,广告过滤正常
            4 当KP开启,过滤广告正常的时候,开启SS:SS从原来的从PREROUTING拿流量变成从OUTPUT内拿流量,翻墙和acl会同样正常
            5 当KP和SS都开启,此时关闭SS,kp过滤广告正常
            6 当KP和SS都开启,此时关闭KP,ss翻墙和acl正常

            总结:
            使用 ttl + mark (或者纯mark)的方式,可以实现原先很难实现的过滤经过SS流量的广告
            主要的改动在于给SS预置好OUTPUT和SHADOWSOCKS_EXT规则链,当kp启用时,它们就会工作,kp关闭时,不会影响正常数据
            次要的改动就是给koolproxy默认开启ttl + mark(或者纯mark)功能

            Google Chrome 59.0.3071.115 Google Chrome 59.0.3071.115 Windows 10 Windows 10
            1. 小山说道:

              这些是需要SS支持的,目前没有SS支持这一特性,最好还是用Luci界面吧,里面涉及到一些iptables规则优先级。

              Google Chrome 61.0.3163.100 Google Chrome 61.0.3163.100 Windows 10 x64 Edition Windows 10 x64 Edition
              1. sygjsd说道:

                可我用K2官方固件定制版,就可以,他用了一个脚本

                Google Chrome 59.0.3071.115 Google Chrome 59.0.3071.115 Windows 10 Windows 10
                1. 小山说道:

                  你先搞清楚这个功能是干什么用的再说,这个功能并不是简单的让两个软件可以同时使用。

                  Google Chrome 61.0.3163.100 Google Chrome 61.0.3163.100 Windows 10 x64 Edition Windows 10 x64 Edition
  4. HANS说道:

    很实用,楼主棒棒哒

    Google Chrome 45.0.2454.94 Google Chrome 45.0.2454.94 Android 6.0.1 Android 6.0.1

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.