天朝的网络是越来越糟糕了,前阵子访问amazon s3域名居然返回了127.0.0.1
,与其时不时被域名污染,不如自己打一个dns服务器。
解决方案就是用Dnsmasq+Dnscrypt
,Dnsmasq
负责监听本地53端口,将国内域名解析转发到国内的dns服务器,国外域名解析请求转发到Dnscrypt
监听的端口,Dnscrypt
就收到的DNS解析请求转发到国外的DNS服务器。
安装
1 | brew install dnsmasq |
配置
Dnsmasq
编辑配置文件
1 | vim /usr/local/etc/dnsmasq.conf |
dnsmasq会将DNS解析请求转发到dnscrypt监听的5300端口
域名文件
执行下面脚本将域名DNS信息保存到dnsmasq文件夹
1 | #!/bin/sh |
这里用的是电信的DNS服务器,如果你是联通的网络,你可以执行下面的脚本将配置文件中的DNS服务器换成联通的
1 | sed -i -e 's/114.114.114.114/221.6.4.66/g' /usr/local/etc/dnsmasq.d/accelerated-domains.china.conf |
Dnscrypt
Dnscrypt配置 vim /usr/local/etc/dnscrypt-proxy.toml
1 | listen_addresses = ['127.0.0.1:5300', '[::1]:5300'] |
这里本来想配5353端口的,但发现这个端口被chrome占用了。
启动服务
1 | sudo brew services restart dnsmasq |
重启后将本机DNS指向127.0.0.1即可。
更新日志
2020-05-14: 修改了文章错误