将 DNSCrypt 部署到 Openwrt 路由器上+ DNSmasq 解析国内域名用本地 DNS[ZT+实践]

摘要:
使用前:我可以看到我的博客已解析为日语节点。使用后,它已正确解析为网络主机节点。【根据我的测试结果,淘宝网和百度网将立即从之前对美国的解释回复到国内地址。】本文由作者:左绪之编辑。原始地址:让OpenWrt上的DNSmasq使用本地DNS解析国内域名

原文地址:

1、https://typcn.com/legacy/blog/posts/openwrt-dnscypt.html

2、http://www.openwrt.pro/post-376.html

下面红字部份为本人实践的笔记

之前一直用的是 ChinaDNS-C 结果发现解析速度奇慢无比,访问一个网站需要等 30 秒左右的主机解析时间,大概是到 Google DNS 的线路被随机丢包了吧

试了试 OpenDNS 带 Anycast 的 DNSCrypt 服务器,70+ ms 还不错,于是就部署到了路由器上

dl

first

一般情况下,直接使用 opkg install dnscrypt-proxy 就可以安装,如果提示未找到包的话,在下方选择合适的平台进行下载。

这些安装包收集于网络,我没有找到更多的平台,手头没有 linux 的机子也没法编译,有条件的可以自己下载源代码进行交叉编译。

ar71xx

brcm63xx

x86

安装方法

别告诉我你不会安装 ipk

使用方法

启动

默认的设置可以直接使用

    /etc/init.d/dnscrypt-proxy start #启动
    /etc/init.d/dnscrypt-proxy enable # 设置开机自启

如果没问题的话,程序已经成功 listen 到 2053 端口了[注:我在LEDE上最新的包安装后的端口是5353]

设置 DNSmasq

vi /etc/config/dhcp

# 在 config dnsmasq 区域的最后加入

option noresolv '1'
list server '127.0.0.1#2053' [同样,这里也需要改为:127.0.0.1#5353]

# 如果有 option resolvfile 开头的行 请删掉

重启服务

/etc/init.d/dnsmasq restart

修改 DNS

将你电脑的 DNS 服务器修改为你路由器的 IP,通常为 192.168.1.1

将 DNSCrypt 部署到 Openwrt 路由器上+ DNSmasq 解析国内域名用本地 DNS[ZT] - 无名小辈 - BA7IB

设置完成

Before - GOV DNS SPOFFING

将 DNSCrypt 部署到 Openwrt 路由器上+ DNSmasq 解析国内域名用本地 DNS[ZT] - 无名小辈 - BA7IB

After - CORRECT RESULT

将 DNSCrypt 部署到 Openwrt 路由器上+ DNSmasq 解析国内域名用本地 DNS[ZT] - 无名小辈 - BA7IB

Why

之前我们使用了 DNSCrypt 来防止 DNS 解析的污染,但是 DNSCrypt 解析速度往往有些慢,而且部分网站的 CDN 会将你识别在国外,这样访问也很慢,用着就非常不爽,那么就需要再加一些配置使其在解析国内域名时使用本地 DNS 。

修改启动脚本

由于 OpenWrt (luci) 的配置文件是自动生成的,我们需要对他的启动脚本进行小 hack

vi /etc/init.d/dnsmasq

输入 /start() 回车,Vim 会将光标自动定位到 start 函数处,我们在 start 函数内新建一行 输入

echo "conf-dir=/etc/dnsmasq.d" >> $CONFIGFILE

如图

将 DNSCrypt 部署到 Openwrt 路由器上+ DNSmasq 解析国内域名用本地 DNS[ZT+实践]第4张

[    注:新版的LEDE里面dnsmasq的启动脚本已经和原文大不一样了,复杂了很多,所以我选择直接在/etc/dnsmasq.conf文件的最后直接添加一行:conf-dir=/etc/dnsmasq.d    ]

按 ESC 输入 :wq 保存并退出

下载并安装

打开 https://github.com/felixonmars/dnsmasq-china-list 点击 Download ZIP 下载后解压

新建文件夹 /etc/dnsmasq.d

将 accelerated-domains.china.conf 和 bogus-nxdomain.china.conf 放到 /etc/dnsmasq.d 中

[  其实这里可以直接下载两个文件:

vi get_dns_china_list.sh

#!/bin/ash

wget --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 --no-check-certificate -O /etc/dnsmasq.d/bogus-nxdomain.china.conf "https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/bogus-nxdomain.china.conf"

sed -i 's/114.114.114.114/本地dns以获得最快的解释/g' /etc/dnsmasq.d/accelerated-domains.china.conf

另外,建议做个定时任务更新上面两个文件,半年一次便可

]

重启 dnsmasq

/etc/init.d/dnsmasq restart

配置完成 !

效果

使用前:可以看到我的博客被解析到了日本节点

将 DNSCrypt 部署到 Openwrt 路由器上+ DNSmasq 解析国内域名用本地 DNS[ZT+实践]第5张

使用后:正确解析到网宿节点

[   经本人测试的结果,taobao.com和baidu.com由修改之前的解释到美国马上解释回国内的地址  ]

本文章由作者:佐须之男 整理编辑,原文地址: 让 OpenWrt 上的 DNSmasq 解析国内域名用本地 DNS

免责声明:文章转载自《将 DNSCrypt 部署到 Openwrt 路由器上+ DNSmasq 解析国内域名用本地 DNS[ZT+实践]》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vim 跳行查看日志js使用toFixed遇到的问题以及由此引发的小数精度问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

react 路由跳转问题

1.采用Link方法跳转 <Link to="/Index2" > 不要用link,回不来,也不能next </Link> 2.用context控制路由跳转: 通过添加一个点击事件:绑定一个函数 usb(event){const path='/Index2';this.context.router.push({pathname:pa...

thinkphp3.2.3中设置路由,优化url

需求:访问这个目录的时候,http://xx.com/p-412313要重定向到(暂且这么叫)http://xx.com/Home/Blog/index/id/412313 就是看着好看 我的应用目录是Application。模块是Home 第一步:知道哪个文件怎么处理的路由路由处理在think/Route.class.php [php]view p...

Flutter实战视频-移动电商-39.路由_Fluro的路由配置和静态化

39.路由_Fluro的路由配置和静态化 handler只是单个路由的配置,这节课我们要学习路由的整体配置 整体配置 新建routers.dart文件来做整体配置 detailsHandler就是我们在router_handler里面定义的detailsHandler 当路由不存在的时候,给用户一个反馈。router.notFoundHandler 这...

vuejs导航条动态切换active状态

用一个数组存导航条,用v-for循环它,这样可以减少代码,二可以使用它的下标来判断高亮,三还可以获取后端的导航信息来遍历 重点是在:routerLink(index, path)函数,传入当前点击的下标,自定义一个下标,判断是否相等就用三元符号判断多给一个高亮样式 如何解决刷新就不高亮或第一个高亮了,很简单,监听一下当前路由在判断就好了 具体代码都在下...

Linux上临时路由、永久路由配置

Linux下查看路由条目 查看路由表命令 route -n 示例 [root@cobbler_vm ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0...

flask 关于 url_for的解析方式

flask 关于 url_for的解析方式使用url_for()反解析: 即使当路由发生改变时,依然能通过视图函数访问对应的路由 1.没有蓝图管理路由: {{ url_for(' 视图函数 ', 参数) }} 2.用蓝图管理路由时: {{ url_for(' 蓝图的第一个参数.视图函数 ', 参数) }} 1.方式一 前端显示: <h2> &l...