设为首页收藏本站

恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 100420|回复: 2460

【2017.12.1更新】超强大的dnsmasq及hosts全自动脚本扶墙去广告详细教程

    [复制链接]
发表于 2017-6-5 17:58 | 显示全部楼层 |阅读模式
本帖最后由 clion007 于 2017-12-2 20:50 编辑

那是最昌明的时世,那是最衰微的时世;那是睿智开化的岁月,那是混沌蒙昧的岁月;那是信仰笃诚的年代,那是疑云重重的年代;那是阳光灿烂的季节,那是长夜晦暗的季节;那是欣欣向荣的春天,那是死气沉沉的冬天;我们眼前无所不有,我们眼前一无所有;我们正踏上天堂之路,我们正走向地狱之门——简而言之,那个时代同现今这个时代竟然如此惟妙惟肖,就连它那叫嚷得最凶的权威人士当中,有些也坚持认为,不管它是好是坏,都只能用“最”字来表示它的程度。
——狄更斯《双城记》

前言:


大家都应该知道兲朝上网和用过各种去广告的插件,但是配置是不是很麻烦,小白完全看不懂?是不是要花钱买账号?是不是很占用路由器的资源?是不是发现带宽降低了?经过陆陆续续将近一年的研究(一年前也是完全什么都不懂的小白)和找持续维护更新的线上资源,学习借鉴了多位前辈的经验,包括但不限于:http://www.right.com.cn/forum/forum.php?mod=viewthread&tid=189065&highlight=dnsmasqhttp://www.right.com.cn/forum/forum.php?mod=viewthread&tid=184121http://www.right.com.cn/forum/thread-216155-1-1.html。今天,终于实现了通过dnsmasq和hosts全自动兲朝上网,防运营商DNS劫持以及路由器端广告屏蔽的方案。脚本为借鉴前辈lukme代码编写,更新优化了维护更新源,加入整合了著名插件ABP和移动端广告过滤软件adaway以及vokins等的多个广告规则,加入了sy618维护的dnsmasq扶墙规则,广告过滤更加完善,不敢私藏,现分享给大家。恩山的前辈高手太多,第一次在恩山发技术分享贴,内心时分惶恐!如有不对之处,望各位前辈斧正!

为了让更多人能分享到成果,想了想还是老规矩,帖子核心内容回复可见,希望大家多多支持!

重要提示:兲朝上网请通过https加密连接访问!该脚本和方法只适用于Openwrt系列内核的固件,包括但不限于pandorabox、LEDE、ddwrt、明月、石像鬼、newifi官方固件等,华硕、老毛子、梅林等Padavan系列固件请下载pavadan固件专用的脚本进行配置,tomato系列固件未经测试,且本人不太了解该固件,请慎用。本人用的是pandorabox最新稳定版,其它固件的可用性均由网友测试证实,并非本人亲测结果,仅供参考。如果不是以上所述的对应路由固件系统,小白就不用往下看了,以免浪费你宝贵的时间。如果你也愿意自己折腾,tomato、padavan等其它固件,可以参考http://www.right.com.cn/forum/forum.php?mod=viewthread&tid=184121帖子内容代码编写规则及文件目录架构自行修改我提供的代码适用到你的系统固件中,并欢迎联系我或上传到我的github线上项目分享出来造福后人,本人没有用这些固件,无法进行测试。


本着简单易用的基本原则,首先还是再科普一下dnsmasq的基本相关知识,老鸟请自行跳过!

1、什么是Dnsmasq啊?(转自百度百科,不知道就百度)
DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。它服务那些只在本地适用的域名,这些域名是不会在全球的DNS服务器中出现的。DHCP服务器和DNS服务器结合,并且允许DHCP分配的地址能在DNS中正常解析,而这些DHCP分配的地址和相关命令可以配置到每台主机中,也可以配置到一台核心设备中(比如路由器),DNSmasq支持静态和动态两种DHCP配置方式。

2、Dnsmasq有什么用?能为我解决什么

默认的情况下,我们平时上网用的本地DNS服务器都是使用电信或者联通的,但是这样也导致了不少的问题,首当其冲的就是上网时经常莫名地弹出广告,或者莫名的流量被消耗掉导致网速变慢。其次是部分网站域名不能正常被解析,莫名其妙地打不开,或者时好时坏。

如果碰上不稳定的本地DNS,还可能经常出现无法解析的情况。除了要避免“坏”的DNS的影响,我们还可以利用DNS做些“好”事,例如管理局域网的DNS、给手机App Store加速、纠正错误的DNS解析记录、保证上网更加安全、去掉网页讨厌的广告等等。


3、方案dnsmasq提供了什么?

目前主要提供几个功能:
  • 分域名DNS解析,提升加快不同网站的访问速度;
  • 国外域名加密解析自动扶墙,享受无墙的快感,上你想上的,看你想看的
  • 屏蔽恶心的运营商ip劫持(依靠优化上游DNS解析服务器实现,非hosts);
  • 全面屏蔽广告(依靠路由器计划任务进行自动维护更新的hosts和dnsmasq规则实现)。

4、方案的优势?
  • 系统支持广,(openwrt、pandorabox等)凡是基于Openwtr系统内核的固件原则上均可使用;
  • 路由器资源消耗极低,相比起adbyby、koolproxy等去广告插件后产生的30%-50%的带宽损失,本脚本一点也不占用和降低带宽,让你享受满速狂奔的快感;
  • 方便,快捷,智能全自动化,让你的智能路由器真正实现智能,一键全自动安装配置,无需后续人工手动维护,路由器便可全自动定时更新和维护,一劳永逸;
  • 广告扶墙规则涵盖全面,你想要的,这里都有,你不想看的(广告),都看不到,让你拥有干净的网络空间,所有规则源均为持续维护源,永不过时;
  • 免费方便,扶墙、过滤广告无需额外安装证书,可代替s-s、adbyby、koolproxy、china-dns等防劫持、扶墙和广告过滤插件,且永远不会产生任何费用。

支持谷狗,优兔,非死不可等等熟悉的国外网站的访问规则来自gfwlist,优兔可以看1080p高清视频无压力,前提是你的带宽够用。图片就不晒了,直接进入正题:

往路由器上传文件及登录方式借助winSCP软件,运行脚本方法可以使用路由器的webshell或者用putty软件登录路由器运行,推荐使用putty远程登录路由器运行,中间需要选择运行选项时,putty支持好像更好。相关方法在我以前的帖子http://bbs.newifi.com/thread-3444-1-1.html中有详细图文教程,在此不再嗷述。

dnsmasq兲朝上网,全面广告屏蔽,全自动脚本,一键搞定


由于鄙人用的newifi mini硬件性能实在有限,本来想买个好点儿的,但是高昂的价格实在又让我几番望而却步。之前使用adbyby之类的插件严重影响网速,因此才想进一步优化通过dnsmasq和hosts优化屏蔽广告,通过各种努力的查找,终于找到一些更加完善的广告过滤dnsmasq和hosts规则,并进一步优化dnsmasq配置和计划任务的命令行和参数,加入著名的adbyby和ABP插件用的easylistchina规则,加入国外网站广告过滤malwaredomainlist规则,加入手机端著名广告过滤软件adaway用的规则。除了个别视频广告外(PC可以通过浏览器插件屏蔽),基本通过浏览器插件及adbyby等插件能屏蔽的广告应该都能屏蔽了。为了方便小白都能容易上手,已将所有代码编辑为全自动的sh脚本,运行一次,所有事情都搞定了。本人亲测,并已经通过测试。

PS:
1.如果以前运行过类似脚本或命令,最好恢复出厂设置;
2.有的固件携带的wget命令不支持https下载,需要重装wget;
3.本脚本为路由使用,非交换机使用,如果你将路由器的lan口链接了上级路由器的lan口,此路由即变为交换机,无法使用本脚本,请在上级路由安装配置。

如果以前没有更改过类似设置或恢复出厂设置后,请直接到本帖后面下载四合一脚本运行。

脚本源代码原理介绍


本着授人以鱼,不如授人以渔的原则精神,为了更好的帮助像我一样不太熟悉此领域的技术控理解脚本的原理,下面以扶墙脚本代码为例,说明其工作原理。
配置扶墙规则全自动脚本源代码如下:
  1. #!/bin/sh
  2. echo
  3. wgetroute="/usr/bin/wget-ssl"
  4. CRON_FILE=/etc/crontabs/$USER
  5. clear
  6. echo "# Copyright (c) 2014-2017,by clion007"
  7. echo
  8. echo "# 本脚本仅用于个人研究与学习使用,从未用于产生任何盈利(包括“捐赠”等方式)"
  9. echo "# 未经许可,请勿内置于软件内发布与传播!请勿用于产生盈利活动!请遵守当地法律法规,文明上网。"
  10. echo "# openwrt类固件使用,包括但不限于pandorabox、LEDE、ddwrt、明月、石像鬼等,华硕、老毛子、梅林等Padavan系列固件慎用。"
  11. echo -e "# 安装前请\e[1;31m备份原配置\e[0m;由此产生的一切后果自行承担!"
  12. echo -e "# 安装前请\e[1;31m检查确认路由器配置,lan IP必须是192.168.1.1\e[0m;全自动无人值守安装!"
  13. echo
  14. echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
  15. echo "+                                                          +"
  16. echo "+     Install Fq only for OpnWrt or LEDE or PandoraBox     +"
  17. echo "+                                                          +"
  18. echo "+                      Time:`date +'%Y-%m-%d'`                     +"
  19. echo "+                                                          +"
  20. echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
  21. echo
  22. echo "------------------------------------------------------------------"
  23. echo -e "\e[1;31m 请先查询你的\e[1;36mlan网关ip\e[1;31m再选择,\e[1;36mlan网关ip\e[1;31m必须为:\e[1;36m'192.168.1.1'\e[0m"
  24. echo "------------------------------------------------------------------"
  25. echo
  26. echo -e "\e[1;36m >         1. 安装 \e[0m"
  27. echo
  28. echo -e "\e[1;31m >         2. 卸载 \e[0m"
  29. echo
  30. echo -e "\e[1;36m >         3. 退出 \e[0m"
  31. echo
  32. echo -e -n "\e[1;34m 请输入数字继续执行: \e[0m"
  33. read menu
  34. if [ "$menu" == "1" ]; then
  35. echo
  36. echo -e "\e[1;36m 三秒后开始安装......\e[0m"
  37. echo
  38. sleep 3
  39. echo -e "\e[1;36m 正在更新软件包,根据网络状态决定时长\e[0m"
  40. rm -f /var/lock/opkg.lock
  41. opkg update
  42. sleep 2
  43. echo
  44. echo -e "\e[1;36m 开始检查并安装wget-支持https\e[0m"
  45. echo
  46. if [ -f $wgetroute ]; then
  47.         echo -e "\e[1;31m 系统已经安装wget-ssl软件\e[0m"
  48.         #opkg remove wget > /dev/null 2>&1
  49.         #opkg install wget        
  50.         else
  51.         echo -e "\e[1;31m 没有发现wget-ssl开始安装\e[0m"
  52.         opkg install wget
  53.         echo
  54.         if [ -f $wgetroute ]; then
  55.                 echo -e "\e[1;36m wget安装成功         \e[0m[\e[1;31mmwget has been installde successfully\e[0m]"
  56.                 else
  57.                 echo -e "\e[1;31m wget安装失败,请到路由器系统软件包手动安装后再试!\e[0m"
  58.                 exit
  59.         fi        
  60. fi
  61. echo
  62. sleep 3
  63. echo -e "\e[1;36m 创建dnsmasq规则与更新脚本存放的文件夹\e[0m"
  64. echo
  65. echo -e "\e[1;36m 检测和备份当前dnsmasq配置信息\e[0m"
  66. if [ -d /etc/dnsmasq ]; then
  67.         mv /etc/dnsmasq /etc/dnsmasq.bak
  68. fi
  69. if [ -d /etc/dnsmasq.d ]; then
  70.         mv /etc/dnsmasq.d /etc/dnsmasq.d.bak
  71. fi
  72. mkdir -p /etc/dnsmasq
  73. mkdir -p /etc/dnsmasq.d
  74. echo
  75. sleep 3
  76. echo -e "\e[1;36m dnsmasq.conf 添加广告规则路径\e[0m"
  77. if [ -f /etc/dnsmasq.conf ]; then
  78.         mv /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
  79. fi
  80. echo "# 添加监听地址(其中192.168.1.1为你的lan网关ip)
  81. listen-address=192.168.1.1,127.0.0.1

  82. # 并发查询所有上游DNS服务器
  83. all-servers

  84. # 指定上游DNS服务器配置文件路径
  85. resolv-file=/etc/dnsmasq/resolv.conf

  86. # IP反查域名
  87. bogus-priv

  88. # 添加DNS解析文件
  89. conf-file=/etc/dnsmasq.d/fq.conf

  90. # 设定域名解析缓存池大小
  91. cache-size=10000" > /etc/dnsmasq.conf # 换成echo的方式注入
  92. echo
  93. sleep 3
  94. echo -e "\e[1;36m 创建上游DNS配置文件\e[0m"
  95. cp /tmp/resolv.conf.auto /etc/dnsmasq/resolv.conf
  96. echo "# 上游DNS解析服务器
  97. nameserver 127.0.0.1
  98. # 如需根据自己的网络环境优化DNS服务器,可用ping或DNSBench测速
  99. # 选择最快的服务器,打开文件依次按速度快慢顺序手动改写
  100. nameserver 218.30.118.6
  101. nameserver 8.8.4.4
  102. nameserver 119.29.29.29
  103. nameserver 4.2.2.2
  104. nameserver 114.114.114.114
  105. nameserver 1.2.4.8
  106. nameserver 223.5.5.5
  107. nameserver 114.114.114.119" >> /etc/dnsmasq/resolv.conf # 换成echo的方式注入
  108. echo
  109. sleep 3
  110. echo -e -n "\e[1;36m 创建自定义扶墙规则\e[0m"
  111. echo
  112. echo "# 规则格式,删除address前 # 生效,如有需要自己添加的规则,请打开userlist添加
  113. # 后面的地址有两种情况,优选具体ip地址
  114. #address=/.001union.com/127.0.0.1
  115. #address=/telegram.org/149.154.167.99" > /etc/dnsmasq.d/userlist
  116. echo
  117. echo -e "\e[1;36m 下载扶墙规则\e[0m"
  118. echo
  119. echo -e "\e[1;36m 下载sy618扶墙规则\e[0m"
  120. /usr/bin/wget-ssl --no-check-certificate -q -O /tmp/sy618 https://raw.githubusercontent.com/sy618/hosts/master/dnsmasq/dnsfq
  121. echo
  122. #echo -e "\e[1;36m 下载racaljk规则\e[0m"
  123. #/usr/bin/wget-ssl --no-check-certificate -q -O /tmp/racaljk https://raw.githubusercontent.com/racaljk/hosts/master/dnsmasq.conf
  124. #echo
  125. sleep 3
  126. #echo -e "\e[1;36m 删除racaljk规则中google'youtube相关规则\e[0m"
  127. #sed -i '/google/d' /tmp/racaljk
  128. #sed -i '/youtube/d' /tmp/racaljk
  129. #echo
  130. echo -e "\e[1;36m 创建用户自定规则缓存\e[0m"
  131. cp /etc/dnsmasq.d/userlist /tmp/userlist
  132. echo
  133. echo -e -n "\e[1;36m 删除dnsmasq缓存注释\e[0m"
  134. sed -i '/#/d' /tmp/sy618
  135. #sed -i '/#/d' /tmp/racaljk
  136. sed -i '/#/d' /tmp/userlist
  137. echo
  138. #echo -e -n "\e[1;36m 扶墙网站指定到#443端口访问\e[0m"
  139. #awk '{print $0"#443"}' /tmp/sy618 > /tmp/sy618
  140. #awk '{print $0"#443"}' /tmp/racaljk > /tmp/racaljk
  141. #awk '{print $0"#443"}' /tmp/userlist > /tmp/userlist
  142. #echo
  143. echo -e -n "\e[1;36m 合并dnsmasq缓存\e[0m"
  144. #cat /tmp/userlist /tmp/racaljk /tmp/sy618 > /tmp/fq
  145. cat /tmp/userlist /tmp/sy618 > /tmp/fq
  146. echo
  147. echo -e -n "\e[1;36m 删除dnsmasq临时文件\e[0m"
  148. rm -rf /tmp/userlist
  149. rm -rf /tmp/sy618
  150. #rm -rf /tmp/racaljk
  151. echo
  152. echo -e "\e[1;36m 删除本地规则\e[0m"
  153. sed -i '/::1/d' /tmp/fq
  154. sed -i '/localhost/d' /tmp/fq
  155. echo
  156. echo -e "\e[1;36m 创建dnsmasq规则文件\e[0m"
  157. echo "
  158. ############################################################
  159. ## 【Copyright (c) 2014-2017, clion007】                          ##
  160. ##                                                                ##
  161. ## 感谢https://github.com/sy618/hosts                             ##
  162. ## 感谢https://github.com/racaljk/hosts                           ##
  163. ####################################################################

  164. # Localhost (DO NOT REMOVE) Start
  165. address=/localhost/127.0.0.1
  166. address=/localhost/::1
  167. address=/ip6-localhost/::1
  168. address=/ip6-loopback/::1
  169. # Localhost (DO NOT REMOVE) End

  170. # Modified hosts start
  171. " > /etc/dnsmasq.d/fq.conf # 换成echo的方式注入
  172. echo
  173. echo -e "\e[1;36m 删除dnsmasq重复规则及相关临时文件\e[0m"
  174. sort /tmp/fq | uniq >> /etc/dnsmasq.d/fq.conf
  175. echo "# Modified DNS end" >> /etc/dnsmasq.d/fq.conf
  176. rm -rf /tmp/fq
  177. echo
  178. sleep 3
  179. echo -e "\e[1;36m 重启dnsmasq服务\e[0m"
  180. #killall dnsmasq
  181.         /etc/init.d/dnsmasq restart > /dev/null 2>&1
  182. echo
  183. sleep 2
  184. echo -e "\e[1;36m 获取规则更新脚本\e[0m"
  185. wget --no-check-certificate -q -O /etc/dnsmasq/fqad_update.sh https://raw.githubusercontent.com/clion007/dnsmasq/master/fq_update.sh
  186. echo
  187. sleep 1
  188. echo -e "\e[1;31m 添加计划任务\e[0m"
  189. chmod 755 /etc/dnsmasq/fq_update.sh
  190. sed -i '/dnsmasq/d' $CRON_FILE
  191. sed -i '/@/d' $CRON_FILE
  192. echo
  193. echo "[[email protected]$HOSTNAME:/$USER]#cat /etc/crontabs/$USER
  194. # 每天6点28分更新dnsmasq扶墙规则
  195. 28 6 * * * /bin/sh /etc/dnsmasq/fq_update.sh > /dev/null 2>&1" >> $CRON_FILE
  196. /etc/init.d/cron reload
  197. echo -e "\e[1;36m 定时计划任务添加完成!\e[0m"
  198. sleep 1
  199. echo
  200. echo
  201. clear
  202. echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
  203. echo "+                                                          +"
  204. echo "+                 installation is complete                 +"
  205. echo "+                                                          +"
  206. echo "+                     Time:`date +'%Y-%m-%d'`                      +"
  207. echo "+                                                          +"
  208. echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
  209. echo
  210. echo
  211. rm -f /tmp/fq_auto.sh
  212. fi
  213. echo
  214. if [ "$menu" == "2" ]; then
  215. echo
  216. echo -e "\e[1;31m 开始卸载dnsmasq扶墙及广告规则\e[0m"
  217.         rm -f /var/lock/opkg.lock
  218. sleep 1
  219. echo
  220. echo -e "\e[1;31m 删除残留文件夹以及配置\e[0m"
  221.         rm -rf /etc/dnsmasq
  222.         rm -rf /etc/dnsmasq.d
  223. if [ -d /etc/dnsmasq.bak ]; then
  224.         mv /etc/dnsmasq.bak /etc/dnsmasq
  225. fi
  226. echo
  227. if [ -d /etc/dnsmasq.d.bak ]; then
  228.         mv /etc/dnsmasq.d.bak /etc/dnsmasq.d
  229. fi
  230. echo
  231. if [ -f /etc/dnsmasq.conf.bak ]; then
  232.         rm -rf /etc/dnsmasq.conf
  233.         mv /etc/dnsmasq.conf.bak /etc/dnsmasq.conf
  234. fi
  235. echo
  236. sleep 1
  237. echo -e "\e[1;31m 删除相关计划任务\e[0m"
  238. sed -i '/dnsmasq/d' $CRON_FILE
  239. /etc/init.d/cron reload
  240. sleep 1
  241. echo
  242. echo -e "\e[1;31m 重启dnsmasq\e[0m"
  243.         /etc/init.d/dnsmasq restart > /dev/null 2>&1
  244.         rm -f /tmp/fq_auto.sh
  245. fi
  246. echo
  247. if [ "$menu" == "3" ]; then
  248. echo
  249. rm -f /tmp/fq_auto.sh
  250. echo
  251. exit 0
  252. fi
  253. echo
复制代码
运行脚本后,将会在/etc/dnsmasq目录中生成fq_update.sh自动更新规则脚本文件,脚本源代码如下:
  1. #!/bin/sh
  2. echo
  3. echo " Copyright (c) 2014-2017,by clion007"
  4. echo
  5. echo " 本脚本仅用于个人研究与学习使用,从未用于产生任何盈利(包括“捐赠”等方式)"
  6. echo " 未经许可,请勿内置于软件内发布与传播!请勿用于产生盈利活动!请遵守当地法律法规,文明上网。"
  7. echo
  8. #LOGFILE=/tmp/fq_update.log
  9. #LOGSIZE=$(wc -c < $LOGFILE)
  10. #if [ $LOGSIZE -ge 5000 ]; then
  11. #        sed -i -e 1,10d $LOGFILE
  12. #fi
  13. echo -e "\e[1;36m 3秒钟后开始更新规则\e[0m"
  14. echo
  15. sleep 3
  16. echo " 开始更新dnsmasq规则"
  17. # 下载sy618扶墙规则
  18. /usr/bin/wget-ssl --no-check-certificate -q -O /tmp/sy618 https://raw.githubusercontent.com/sy618/hosts/master/dnsmasq/dnsfq

  19. # 下载racaljk规则
  20. #/usr/bin/wget-ssl --no-check-certificate -q -O /tmp/racaljk https://raw.githubusercontent.com/racaljk/hosts/master/dnsmasq.conf

  21. # 删除racaljk规则中google'youtube相关规则
  22. #sed -i '/google/d' /tmp/racaljk
  23. #sed -i '/youtube/d' /tmp/racaljk

  24. # 创建用户自定规则缓存
  25. cp /etc/dnsmasq.d/userlist /tmp/userlist

  26. # 删除dnsmasq缓存注释
  27. sed -i '/#/d' /tmp/sy618
  28. #sed -i '/#/d' /tmp/racaljk
  29. sed -i '/#/d' /tmp/userlist

  30. # 扶墙网站指定到#443端口访问
  31. #awk '{print $0"#443"}' /tmp/sy618 > /tmp/sy618
  32. #awk '{print $0"#443"}' /tmp/racaljk > /tmp/racaljk
  33. #awk '{print $0"#443"}' /tmp/userlist > /tmp/userlist

  34. # 合并dnsmasq缓存
  35. #cat /tmp/userlist /tmp/racaljk /tmp/sy618 > /tmp/fq
  36. cat /tmp/userlist /tmp/sy618 > /tmp/fq

  37. # 删除dnsmasq临时文件
  38. rm -rf /tmp/userlist
  39. rm -rf /tmp/sy618
  40. #rm -rf /tmp/racaljk

  41. # 删除本地规则
  42. sed -i '/::1/d' /tmp/fq
  43. sed -i '/localhost/d' /tmp/fq

  44. # 创建dnsmasq规则文件
  45. echo "
  46. ############################################################
  47. ## 【Copyright (c) 2014-2017, clion007】                          ##
  48. ##                                                                ##
  49. ## 感谢https://github.com/sy618/hosts                             ##
  50. ## 感谢https://github.com/racaljk/hosts                           ##
  51. ####################################################################

  52. # Localhost (DO NOT REMOVE) Start
  53. address=/localhost/127.0.0.1
  54. address=/localhost/::1
  55. address=/ip6-localhost/::1
  56. address=/ip6-loopback/::1
  57. # Localhost (DO NOT REMOVE) End

  58. # Modified hosts start
  59. " > /tmp/fq.conf

  60. # 删除dnsmasq重复规则
  61. sort /tmp/fq | uniq >> /tmp/fq.conf
  62. echo "# Modified DNS end" >> /tmp/fq.conf

  63. # 删除dnsmasq合并缓存
  64. rm -rf /tmp/fq
  65. echo
  66. if [ -s "/tmp/fq.conf" ]; then
  67.         if ( ! cmp -s /tmp/fq.conf /etc/dnsmasq.d/fq.conf ); then
  68.                 mv /tmp/fq.conf /etc/dnsmasq.d/fq.conf
  69.                 echo " `date +'%Y-%m-%d %H:%M:%S'`:检测到fq规则有更新......开始转换规则!"
  70.                 /etc/init.d/dnsmasq restart > /dev/null 2>&1
  71.                 echo " `date +'%Y-%m-%d %H:%M:%S'`: fq规则转换完成,应用新规则。"
  72.                 else
  73.                 echo " `date +'%Y-%m-%d %H:%M:%S'`: fq本地规则和在线规则相同,无需更新!" && rm -f /tmp/fq.conf
  74.         fi        
  75. fi
  76. echo
  77. echo -e "\e[1;36m 规则更新完成\e[0m"
  78. echo
  79. exit 0
复制代码
运行脚本后/etc/dnsmasq.conf文件修改源代码如下:
  1. dhcp-option=252,"\n"

  2. # 添加监听地址(将192.168.1.1修改为你的lan网关ip)
  3. listen-address=192.168.1.1,127.0.0.1

  4. # 并发查询所有上游DNS
  5. all-servers

  6. # 添加上游DNS服务器
  7. resolv-file=/etc/dnsmasq/resolv.conf

  8. # IP反查域名
  9. bogus-priv

  10. # 添加DNS解析文件
  11. conf-file=/etc/dnsmasq.d/fq.conf

  12. # 设定域名解析缓存池大小
  13. cache-size=10000
复制代码
运行脚本后,将会在路由器/etc/dnsmasq目录中新建文件resolv.conf内容如下:
  1. # 上游DNS解析服务器
  2. nameserver 127.0.0.1
  3. # 如需根据自己的网络环境优化DNS服务器,可用ping或DNSBench测速
  4. # 选择最快的服务器,打开文件依次按速度快慢顺序手动改写
  5. nameserver 218.30.118.6
  6. nameserver 8.8.4.4
  7. nameserver 119.29.29.29
  8. nameserver 4.2.2.2
  9. nameserver 114.114.114.114
  10. nameserver 1.2.4.8
  11. nameserver 223.5.5.5
  12. nameserver 114.114.114.119
复制代码
注:此处采用的是各大公用DNS服务器,包括运行商的本地DNS、114DNS、谷歌DNS、百度DNS、阿里DNS、腾讯DNS、微软DNS、360DNS等。可根据自己的网络环境进入文件修改优化。

运行脚本后,将会在路由器计划任务中
生成定时更新规则的计划任务,其添加的详细源代码如下:(其中$后面为环境变量,USER为你的用户名,Openwrt系统默认为root,HOSTNAME为你设定的路由器的名字
  1. [[email protected]$HOSTNAME:/$USER]#cat /etc/crontabs/$USER
  2. # 每天6点28分更新dnsmasq扶墙规则
  3. 28 6 * * * /bin/sh /etc/dnsmasq/fq_update.sh > /dev/null 2>&1
复制代码
运行脚本后,将会在路由器的/etc/dnsmasq.d目录中生成用户自定义规则文件,并命名为userlist,其内容如下:
  1. # 规则格式,删除address前 # 生效,如有需要自己添加的规则,请在下面添加
  2. # 后面的地址有两种情况,优选具体ip地址
  3. #address=/.001union.com/127.0.0.1
  4. #address=/telegram.org/149.154.167.99
复制代码
如有有发现无法扶墙的网站,本脚本生成的规则中没有涉及,可以自行找到该网站可用的IP地址(可以在有效环境中用lookup反查域名的方式得到网站IP,或者借助一些网站工具查询)添加到该文件中,每条规则一行,格式:address=/telegram.org/149.154.167.99。

此外,运行脚本后,生成的dnsmasq扶墙规则目录为/etc/dnsmasq.d目录,如果运行了包含去广告的脚本,生成的广告规则在/etc/dnsmasq目录。
脚本运行完成以上配置后,我们的上网终端设备在访问网页时的过程如下,首先会查询脚本添加的hosts规则,如果是广告页面,且该页面地址在hosts规则中包含了,就会被解析为127.0.0.1或者0.0.0.0地址,即可被屏蔽掉,如果hosts规则没有解析地址,即会即一步查询脚本生成的dnsmasq规则,如果有广告或扶墙网站,即会根据dnsmasq规则指定的地址进行解析。如果hosts和dnsmasq规则都没有解析到要访问的网站域名,则会提交到/etc/dnsmasq/resolv.conf文件中配置的上游DNS服务器进行并发查询域名解析,并返回最快的解析IP地址访问。(修改前为直接将访问的网站域名提交到运行商的DNS服务器解析返回IP地址并访问)

至此,基本能完美的解决扶墙、DNS劫持以及各种广告的问题了。这种方法的弊端就是需要有人持续维护更新,脚本中选择使用的所有规则源都是有持续维护更新的,关于广告屏蔽导致有的网站被错杀无法打开的问题,请到https://github.com/vokins/yhosts向规则维护者反馈。关于,墙外网站访问异常,可以到https://github.com/sy618/hosts向规则维护作者反馈,一般用https安全链接访问不会有问题,如果确实遇到问题,只能等待作者更新规则,找到合适的IP。此类问题需要规则源中的规则更新才能解决,与本脚本无关,以后不再对此类问题做一一解答,请见谅,谢谢!一路下来,学了不少知识,还有不完善之处,欢迎大家指正,谢谢大家一路以来的支持。

后记:

本人的newifi mini目前使用的是2017最新出的pandorabox1610稳定版,经过测试(据说pandorabox的开发团队接手了Newifi固件的开发,短时间内不会再更新固件版本了),发现几个需要注意的地方,摸索了好久才搞明白,给大家分享一下,免得再走弯路。

1、这个版本没有webshell插件,电脑可以用putty 登录,也可以在系统-软件包中搜索安装;


2、这个有点奇葩 ,我开始怎么改dnsmasq.conf配置文件,都无法正确解析DNS,所有网页都打不开,真是百思不得其解啊。后来发现,配置文件中有一行命令“
dhcp-option=252,"\n"”,没有加#注释掉的,也就是这一行,让DNS无法正常解析,删除掉后,写入以前配置文件代码后,DNS就可以正常解析了,也能正常访问google等网站了,此外发现,添加额外的上游DNS解析文件后不存在这个问题了,因此使用最新的四合一脚本可以忽略这个问题。

3、这个版本的系统不带wget插件,无法下载文件,也是万万没想到啊,还以为是命令参数不对。同样,需要到软件包中搜索安装,安装后就可以正常下载了。新的四合一脚本自带安装命令,不用在手动进入网页路由管理页面的软件包中搜索安装,会在运行配置脚本是检查是否安装wget软件包,如果没有会自带安装后再继续运行后续命令。


该版本除以上几点需要注意外,这些天测试下来,没有什么问题,目前运行还比较稳定。

特别感谢sy618、vokins提供的线上项目资源以及维护项目所做出的贡献!感谢lukme提供的脚本编译写法!感谢zshwq5为后续优化给的建议!

关于固件:7620的芯片,测试了各种固件,目前就潘多拉的的wifi驱动比较给力,其它的都很渣,不同芯片请自行测试,目前潘多拉的软件源已经恢复正常。此外,发现有一些固件(比如新版的pandorabox),在编译时自带了两个dnsmasq软件包,即dnsmasq和dnsmasq-full。同时两个都存在时,会导致DNS无法正常解析的问题,移除dnsmasq,保留dnsmasq-full,重启dnsmasq进程后解析恢复正常。

Openwrt系列固件⑥合一脚本下载:
目前已知包括但不限于Openwrt、pandorabox、LEDE、ddwrt、Newifi官方、明月、石像鬼等系列固件都可使用! dnsmasq_all.rar (2.02 KB, 下载次数: 80, 售价: 5 nb恩山币)

点评

你说的很对。: 5.0 我赞同你的说法。: 5.0
楼主是不错,不过现在GFW都白名单了,HOST统统作废了。。。。  发表于 2017-11-11 16:54
你说的很对。: 5 我赞同你的说法。: 5
  发表于 2017-10-19 17:41
dtf
请教楼主,下载并安装了你提供的华硕老毛子安装到了K2(华硕老毛子固件)中去,过程中除了下载adblock这一个地方有点小问题以外,全程都报告成功的,但反复安装两次重启路由器都没有任何反映,这是哪里不对呢?  发表于 2017-10-6 21:37
你说的很对。: 5 我赞同你的说法。: 5
关于安全,就说一个事情,chrome默认设置,用xx-nat访问https有安全警告,这个方法没有,所以根本不用担心  发表于 2017-9-4 12:55
你说的很对。: 5 我赞同你的说法。: 5
我来恩山就是看你  发表于 2017-8-17 22:08
所谓的hosts上网还是用的反向代理,将对GFW站点的转发给某个不知名的反向代理,并不是什么去除dns劫持,请把原理描述清楚。  发表于 2017-6-21 10:35
请下载4合一脚本安装,我的github项目撤了。  发表于 2017-6-11 23:29

评分

参与人数 78恩山币 +88 收起 理由
bbao51 + 1 我来恩山就是为了撩你!&lt;span id=&quot;transmark&quot; style=&quot;display: none; width: .
C1511 + 1 我来恩山就是为了撩你!
sorrypqa + 1 一看就是觉得高端、大气、上档次!
cherub0507 + 1 我对你的敬仰犹如江水滔滔,我上朝鲜战场后一定写信给你!!!
hihzh + 1 强大的恩山!(以下重复1万次)
183136 + 1 亲,你这么厉害,我想做你的经纪人!
虾条天下 + 1 我来恩山就是为了撩你!
hj2150663 + 1 开门!我是隔壁老王!
liangxin9266 + 1 前排留名
canaanpaul + 1 强大的恩山!(以下重复1万次)
chuiyg + 1 当心我用iPhone X 砸死你
lww220381 + 1 兄弟,你肥皂又掉了…你是故意掉的?
aaronsparty + 1 nameserver 114.114.114.119&quot; &gt;&gt; /etc/dnsmasq/resolv.conf # 换成echo的方式注.
honglin235 + 1 我对你的敬仰犹如江水滔滔,我上朝鲜战场后一定写信给你!!!
ep_boy + 1 一看就是觉得高端、大气、上档次!
seoul_sz + 1 感谢老大分享。顺便说一下,racaljk已经换地址了,项目主页有说明
503143713 + 1 犀利
antai + 1 支付宝已转500w给你!
wumode + 1 我来恩山就是为了看你!
wbjwj + 1 支付宝已转500w给你!
ihuatin + 1 我来恩山就是为了看你!
leonkingle + 1 楼主更新的pavadan脚本终于可以正常安装啦 功能完美 感谢
Long_1000 + 1 我来恩山就是为了看你!
vvuliu + 1 我来恩山就是为了看你!
笑的傻傻的 + 1 你好 用了你的自动脚本 有 一个问题, 就是我使用的是明月大大的固件, 之前有的版本.
bqtanterry + 1 亲,你太牛逼了,走,我请你吃鳇鱼头去~~~
lgy + 1 我来恩山就是为了看你!
不可多言 -1 开门!我是隔壁老王!
xinger104 + 1 我来恩山就是为了看你!
qwlqwl1220 + 1 我来恩山就是为了看你!
hcyme + 1 我来恩山就是为了看你!
huai34 + 1 扶墙速度不给力啊,我200M电信光纤,很卡
naypt + 1 开门!查水表了!
巍巍青山 + 1 强大的恩山!(以下重复1万次)
新闻纵横 + 1 我来恩山就是为了看你!
小明666 + 1 我来恩山就是为了看你!
chd1998 + 1 给力
bad_men + 3 亲,你太牛逼了,走,我请你吃鳇鱼头去~~~
mk-link + 1 强大的恩山!(以下重复1万次)
mr.william95 + 1 强大的恩山!(以下重复1万次)
375947188 + 1 强大的恩山!(以下重复1万次)
segasos + 1 强大的恩山!(以下重复1万次)
ywq1992 + 1 强大的恩山!(以下重复1万次)
cy17009 + 1 支付宝已转500w给你!
mina998 + 1 一看就是觉得高端、大气、上档次!
whes7758 + 1 谷狗可用tube还是开不了。。
ooyyee + 1 强大的恩山!(以下重复1万次)
xfgb + 3 我来恩山就是为了看你!
cctvalo + 1 谢谢兄弟分享
oha + 1 楼主你好,tianbaoha的K3官方root固件,/et.
qtol + 1 强大的恩山!(以下重复1万次)
nineten + 1 强大的恩山!(以下重复1万次)
routerbox + 1 强大的恩山!(以下重复1万次)
zenghongfei1 + 1 今天天气不错,适合泡妞。
weekswu + 1 去广告太彻底了,有些需要的都打不开,手机爱奇艺不能搜索,返利链接无法打开。
badcrazy + 3 我来恩山就是为了看你!
技安 + 1 支付宝已转500w给你!
wgy2000 + 3 亲,你太牛逼了,走,我请你吃鳇鱼头去~~~
lurixian + 1 支付宝已转500w给你!
cll6401 + 1 我来恩山就是为了看你!
CGMS + 1 我来恩山就是为了看你!
xuecqcn + 1 亲,你太牛逼了,走,我请你吃鳇鱼头去~~~
boomy + 1 千万别撤,谢谢!用得很稳定 DNSMASQ不爽
PM926 + 1 开启以后,优酷的视频无法播放,提示cookies被关闭。换所有的浏览器都不行。
jsjlyb + 1 安装4合一脚本没网络,楼主优化个老脚本解决下发的问题吧。
skukey + 1 楼主,我小白一名,能否修改份适用于Padavan内核的
anym0us + 1 今天天气不错,适合泡妞。
zshwq5 + 3 请下载4合一脚本安装,我的github项目拆了。
Lvz + 1 城会玩
p27853626 + 1 强大的恩山!(以下重复1万次)
mouse168 + 1 我来恩山就是为了看你!
小泽武藤空 + 3 怀揽白富美的屌丝露出了惊讶的眼神:哥,你太帅了!
cc5202003 + 1 我来恩山就是为了看你!
爱上一个人 + 1 亲,你太牛逼了,走,我请你吃鳇鱼头去~~~
dgpower + 1 亲,你这么厉害,我想做你的经纪人!
tiangte + 1 我来恩山就是为了看你!
l256 + 1 我来恩山就是为了看你!
secowu + 1 城会玩

查看全部评分

本帖被以下淘专辑推荐:

我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-6-12 15:39 | 显示全部楼层
liulzqlzq 发表于 2017-6-12 14:49
就是运行脚本时显示乱码

修改putty配置就不会乱码了。 pppppt.jpg

点评

谢谢!请问路由器ip一定要设成192.168.1.1吗?  详情 回复 发表于 2017-6-12 18:58
我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-12-11 19:45 | 显示全部楼层
膜拜大神,赞一个
我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-12-10 19:59 来自手机 | 显示全部楼层
来学习一下。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-12-8 10:40 | 显示全部楼层
感觉好复杂的样子
我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-12-8 00:10 | 显示全部楼层
详细的教程,谢谢分享!
我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-12-8 00:03 | 显示全部楼层
                  强大
我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-12-7 08:46 | 显示全部楼层
不知道a大的官改能用不
我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-12-7 08:39 | 显示全部楼层
支持这样的作品!
我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-12-6 21:22 | 显示全部楼层
详细的教程,谢谢分享!
来自安卓客户端来自安卓客户端
我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-12-6 19:43 | 显示全部楼层
菜鸟小白学习中,谢谢楼主大神分享!
我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-12-6 14:49 | 显示全部楼层
谢谢楼主分享。并请大神收下我的膝盖
我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-12-6 10:41 | 显示全部楼层
刚刚接触路由刷机,准备收下好好看,多谢。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-12-5 18:51 | 显示全部楼层
K2P荒野无灯固件  去广告  ss    无效   什么情况
我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-12-5 14:05 | 显示全部楼层
必须支持楼主,大神收下我的膝盖
来自安卓客户端来自安卓客户端
我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-12-4 22:40 | 显示全部楼层
2017.12.1 修复更新
我的恩山、我的无线 The best wifi forum is right here.
发表于 2017-12-4 22:40 | 显示全部楼层
~~~~~~~~~~~~~~~~~~~
我的恩山、我的无线 The best wifi forum is right here.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|恩山无线论坛 ( 苏ICP备05084872号-1 )  

GMT+8, 2017-12-11 21:16

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表