openwrt上通过pdnsd和dnsmasq

Openwrt 星雨 2086℃ 0评论

pdnsd

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

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

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

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

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

可以用命令

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

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

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

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

dnsmasq

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

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

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

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

之后重启 dnsmasq 服务

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

转载请注明:星雨小站 » openwrt上通过pdnsd和dnsmasq

如果你觉得这篇文章对你有帮助,请支持我继续更新网站!捐赠本站
喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址