通知 爱刷机 路由器教程 →→《省钱助手

openwrt通过pdnsd和dnsmasq解决DNS污染 pdnsd实现DNS解析加速Dnsmasq部署DNS服务

2019-11-22
0评论
/
阅读
爱搜啊

openwrt通过pdnsd和dnsmasq解决DNS污染 pdnsd实现DNS解析加速

你是不是一直受到DNS服务器查询速度太慢的困扰?本文推荐Linux下一款名叫pdnsd的软件,解决这个问题。相比bind和Dnsmasq,pdnsd有一个优点:重启后仍然能记得之前缓存的条目。这对家庭用的计算机来说非常重要,因为不像服务器那样7×24小时开机,所以一旦关机重开后还需要重新创建缓存的话,加速效果会非常有限。

pdnsd

主要用来解决污染问题, 在 OpenWRT 上直接找到 pdnsd 包安装就可以了.

opkg update
opkg install pdnsd

安装好以后还需要修改/etc/pdnsd.conf其主要配置如下:

global {
# debug = on;          # 调试模式, 日志会写入 /var/pdnsd/pdnsd.debug
perm_cache=1024;
cache_dir=“/var/pdnsd”;
run_as=“nobody”;
server_port = 1053;# 使用 1053 作为 dns 端口, 默认是 53
server_ip = any;
status_ctl = on;
query_method=tcp_only; # 最重要的配置, 只使用 tcp 查询上级 dns
min_ttl=15m;
max_ttl=1w;
timeout=10;
}
server {
label= “wido”;# 这个随便写
ip = ${UPSTREAM_DNS_IP}; # 这里为上级 dns 的 ip 地址
root_server = on;# 设置为 on 后, 就代替系统默认的 dns 了.
uptest = none;# 不去检测 dns 是否无效.
}
source {
owner=localhost;
# serve_aliases=on;
file=“/etc/hosts”;
}
rr {
name=localhost;
reverse=on;
a=127.0.0.1;
owner=localhost;
soa=localhost,root.localhost,42,86400,900,86400,86400;
}

其中的${UPSTREAM_DNS_IP}需要设置成, 支持 TCP dns 查询的服务器.

可以用 8.8.8.8 这个 google 的 dns 但不是很推荐, 主要是他返回的 ip 虽然没污染, 但这个 ip 很可能也是被封的. 最好是那些 台湾, 日本, 或者美国东部的 dns. 目前大陆默认走的就是香港的 google 服务器, 所以香港的 dns 也不予考虑.

当然最好的方案还是, 如果你自己在海外有 VPS 那就在服务器上装个 pdnsd 来做 dns 服务器吧.

可以用命令

dig @8.8.8.8 +tcp www.google.com

来做测试, 不过也遇到过 +tcp 可以访问但实际无法用 pdnsd 连接的情况具体原因未知. 我这是自己服务器搭了 pdnsd 解决的.

在找到可用的 dns 后, 接着修改回 pdnsd.conf 文件后输入

/etc/init.d/pdnsd enable
/etc/init.d/pdnsd start

启动路由器上的 pdnsd 服务之后就可以通过命令 (@192.168.2.1 根据自己家的网络情况改)

dig @192.168.2.1 –p 1053 www.google.com

来检测是否已配置好, 还是不行的话, 可以尝试开启 pdnsd.conf 的 dubug 模式看详细的日志, 配合pdnsd-ctl help来做进一步处理.

dnsmasq

本来指望 pdnsd 把 dnsmasq 的任务也一并解决的, 不过研究后发现他并不能将特殊的域名交给特殊的 dns 处理, 所以这部分功能还需要交给 dnsmasq.

对于 openwrt 来说默认就安装好了 dnsmasq, 所以这里只需要简单的编辑 /etc/dnsmasq.conf, 再最后加入

conf–dir=/etc/dnsmasq.d

让 dnsmasq 会去加载 /etc/dnsmasq.d 目录下所有的配置.

然后在建一个 /etc/dnsmasq.d/gfw.conf 这样的文件, 把需要进化的域名代理给 pdnsd 就可以了, 例如:

# google
server=/.google.com/127.0.0.1#1053
server=/.gstatic.com/127.0.0.1#1053
server=/.googleusercontent.com/127.0.0.1#1053
server=/.appspot.com/127.0.0.1#1053
server=/.googlecode.com/127.0.0.1#1053
server=/.googleapis.com/127.0.0.1#1053
server=/.gmail.com/127.0.0.1#1053
server=/.google–analytics.com/127.0.0.1#1053
server=/.youtube.com/127.0.0.1#1053
server=/.blogspot.com/127.0.0.1#1053
server=/.blogger.com/127.0.0.1#1053

之后重启 dnsmasq 服务

/etc/init.d/dnsmasq restart

一般来说这样折腾以后 google 系列的服务应该就可以访问了, 当然也可以按这个写法自己加其他的域名. 比如 .facebook.com, 具体的还得是满足 ip 没被封且关键字不被过滤(https) 的网站才行。


点击链接加入群聊三群:751529538

点击链接加入群聊二群:376877156

点击链接加入群聊【路由器交流群:622891808已满】

本站附件分享,如果附件失效,可以去找找看

诚通网盘附件百度网盘附件


饿了么红包

饿了么红包

于2019-11-22发布