DNSMasq 建立自定义 DNS
一直想写的 [ 微萌 DNS][1] 在今天上午准备好基本架构后却在下午遇到各种各样的坑而弃掉了… 心情有够不爽。所以把自己维护的缓存 DNS 解决方案写出来,想要折腾类似的东西的童鞋可以试试看。
所谓自定义 DNS,这里有这么几个功能:
反 DNS 污染
可以直接访问部分网站
一些特定的服务加速
解决一些国外 DNS 被 X 的问题
接下来是搭建步骤。
安装基本包
需要:dnsmasq
和 dnscrypt-proxy
前者在几乎所有的发行版里都有,直接装就行了。后者需要添加第三方源。如果是 Ubuntu 的话可以添加 ppa:shnatsel/dnscrypt
仓库然后安装这个包。
DNSCrypt 配置
默认的话安装的 dnscrypt-proxy 是侦听于 127.0.0.2
的 53
端口,这里需要让 DNSMasq 来作为上游服务器所以需要修改配置。文件:/etc/default/dnscrypt-proxy
修改
1 | local-address=127.0.0.2:53 |
为
1 | local-address=127.0.0.1:5301 |
以及默认的 DNS 服务器是 OpenDNS —— 和其他欧美服务一样,节点遍布欧美亚洲就那么可怜的一两个节点,甚至一个节点都没就敢叫遍布全球了呢。所以这里最好能改一下,比如选择日本的 OpenNIC 节点。配置文件里添加(原本是有 OpenDNS 注释的,无视即可)
1 | resolver-address=106.186.17.181:2053 |
为了方便日后更新,把这个仓库 clone 到本地而不是直接下载。
git clone https://github.com/felixonmars/dnsmasq-china-list.git cd dnsmasq-china-list
创建到 DNSMasq 配置目录的软链接,当前该目录在 /root/dnsmasq-china-list 下。
ln -s /root/dnsmasq-china-list/accelerated-domains.china.conf /etc/dnsmasq.d/ ln -s /root/dnsmasq-china-list/bogus-nxdomain.china.conf /etc/dnsmasq.d/
1 |
|
server=/.apple.com/199.91.73.222
1 |
|
不读取 /etc/resolv.conf ,取消注释即可
no-resolv no-poll
添加上游服务器为 DNSCrypt,如果还有其他的 server= 记得取消注释。
server=127.0.0.1#5301
在所有网卡上关闭 DHCP,用不着这个功能。如果有多个网卡那么一行一个。
no-dhcp-interface=eth0
添加自定义 hosts 文件
addn-hosts=/etc/dns/hosts
一共就是这些。保存配置文件并重启 dnsmasq,这样就有了一台可以给所有设备使用的、具备防污染 / 服务加速以及自定义地址等功能的 DNS 服务器啦~
[1]: https://github.com/phoenixlzx/micromoedns
[2]: http://dnscrypt.org/
[3]: https://github.com/felixonmars/dnsmasq-china-list
The Why·Liam·Blog by WhyLiam is licensed under a Creative Commons BY-NC-ND 4.0 International License.
由WhyLiam创作并维护的Why·Liam·Blog采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于Why·Liam·Blog (https://blog.naaln.com),版权所有,侵权必究。
本文永久链接:https://blog.naaln.com/2014/11/dnsmasq-build-custom-dns/