登陆路由器后:
root@OpenWrt:~# cd /usr/bin
root@OpenWrt:~# touch updatednsmasq
root@OpenWrt:~# chmod +x updatednsmasq
root@OpenWrt:~# vi updatednsmasq
增加如下内容:
#!/bin/sh
cnlist() {
wget -4 --no-check-certificate -O /etc/dnsmasq.d/accelerated-domains.china.conf https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf
wget -4 --no-check-certificate -O /etc/dnsmasq.d/bogus-nxdomain.china.conf https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/bogus-nxdomain.china.conf
}
cnlist
dnsmasq支持基于域名的广告屏蔽方式,这种屏蔽方式比较粗糙,屏蔽效果会比浏览器广告屏蔽插件差很多,并且可能导致有些网站不能顺利打开。
在updatednsmasq文件中加入:
adblock() {
wget -4 --no-check-certificate -O - https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt |
grep ^\|\|[^\*]*\^$ |
sed -e 's:||:address\=\/:' -e 's:\^:/127\.0\.0\.1:' | uniq > /etc/dnsmasq.d/adblock.conf
wget -4 --no-check-certificate -O - https://raw.githubusercontent.com/kcschan/AdditionalAdblock/master/list.txt |
grep ^\|\|[^\*]*\^$ |
sed -e 's:||:address\=\/:' -e 's:\^:/127\.0\.0\.1:' >> /etc/dnsmasq.d/adblock.conf
}
最后完整的updatednsmasq就是这样:
#!/bin/sh
cnlist() {
wget -4 --no-check-certificate -O /etc/dnsmasq.d/accelerated-domains.china.conf https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf
wget -4 --no-check-certificate -O /etc/dnsmasq.d/bogus-nxdomain.china.conf https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/bogus-nxdomain.china.conf
}
adblock() {
wget -4 --no-check-certificate -O - https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt |
grep ^\|\|[^\*]*\^$ |
sed -e 's:||:address\=\/:' -e 's:\^:/127\.0\.0\.1:' | uniq > /etc/dnsmasq.d/adblock.conf
wget -4 --no-check-certificate -O - https://raw.githubusercontent.com/kcschan/AdditionalAdblock/master/list.txt |
grep ^\|\|[^\*]*\^$ |
sed -e 's:||:address\=\/:' -e 's:\^:/127\.0\.0\.1:' >> /etc/dnsmasq.d/adblock.conf
}
cnlist
adblock
root@OpenWrt:~# crontab -e
输入以下内容:
*/30 * * * * isfound=$(ps | grep "ss-redir" | grep -v "grep"); if [ -z "$isfound" ]; then echo "$(date): restart ss-redir...">>/tmp/log/ss-monitor.log && /etc/init.d/shadowsocks restart; fi
* 12 * * * /usr/bin/updatednsmasq
- 每半小时检查shadowsocks-libev 客户端,如果退出就自动重启
- 每天中午12点更新dnsmasq配置文件
目前的预编译固件是启用了计划任务的,这会有潜在的不确定性,如果更新时下载的文件存在错误,导致dnsmasq无法读取,可能造成dnsmasq无法启动,翻墙功能自然失效。
如果你刷了预编译固件后,某一天突然不能翻墙了,这时设置客户端的IP地址为和路由器同网段,登陆路由器,用ps命令查看dnsmasq进程是否启动了,如果没有启动,就重刷固件或者 用原来的文件代替 路由器里/etc/dnsmasq.d/下的文件。
第一次刷预编译固件后,建议立即禁用自动更新 dnsmasq.d目录下的文件,运行稳定一段时间后,需要时再加上计划任务。
下次发布固件时,将默认不启用计划任务。