Posted in Technology 进行吐槽

DNS over HTTPs 目前已经较为流行,考虑到公共服务的稳定性和安全性有限,使用VPS自建一个DOH服务是完全可行的。在参考网上的资料后,发现实际配置中还可以更简化。下面是最精简的方案,最大限度的采用了现成的脚本资源。

排除一个IPV6错误.

 

1,方案

Client——https——[nginx–doh-server]——udp——8.8.8.8

取消Dnscrypt-proxy,直接使用doh-server程序。因为在大多数地区,并没有安全问题,有安全问题的是你。

由doh-server直接向1.1.1.1或8.8.8.8请求UDP,再http给你。

nginx反代https。

需要一个正常国家的VPS,一个域名。域名先做好解析,解析到VPS的IP。

 

 

 

2,设置doh(示例系统CentOS 7.5,其他系统参考)

安装依赖go语言

yum install golang

安装dns 0ver https 服务器(Github地址

git clone https://github.com/m13253/dns-over-https.git
cd dns-over-https
make PREFIX=/usr
make install

配置doh服务器

配置文件位置  /etc/dns-over-https/doh-server.conf

listen = [
“127.0.0.1:8053”,
#”[::1]:8053″,

## To listen on both 0.0.0.0:8053 and [::]:8053, use the following line
# “:8053”,
]

默认输出解析结果端口为8053,同时listen IPV4和IPV6,如果你的VPS不支持IPV6,务必注释掉IPV6一行,否则会出错。

上游DNS服务器设置

upstream = [
“udp:1.1.1.1:53”,
“udp:1.0.0.1:53”,
“udp:8.8.8.8:53”,
“udp:8.8.4.4:53”,

大多数地方的VPS环境下,这个就可以了。有人用dnscrypt-proxy做上游,我认为是画蛇添足,而且没有缓存的话会非常慢。

 

设置systemd启动(可选)

systemctl start dohserver.service

systemctl enable dohserver.service

 

启动后无问题,则可以配置nginx。

 

3,配置nginx

既然是用来跑doh,就简化一点,使用LNMP一键包,连证书一并办了吧。当然我们不需要M和P,就不用安装了。

wget http://soft.vpser.net/lnmp/lnmp1.7.tar.gz -cO lnmp1.7.tar.gz && tar zxf lnmp1.7.tar.gz && cd lnmp1.7

./install.sh nginx(只安装nginx,不安装php和mysql)

 

装好后直接lnmp vhost add,添加刚才解析好的域名(示例name.mydomain.com),证书选择Let’s encrypt,一路绿灯搞完。

搞完后访问 https://name.mydomain.com  测试https服务是否正确运行。

正确运行后,修改vhost配置文件

应该有两个server,在第二个server(应为listen 443)的ssl配置后加入以下内容:

ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;

…. (此后插入下面内容)

location /dns-query {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 86400;
proxy_pass http://127.0.0.1:8053/dns-query;
}

 

之后访问https://name.mydomain.com/dns-query  提示报错,非法参数 说明已经正确运行。报错502之类的说明配置错误。

然后可以直接以 https://name.mydomain.com/dns-query 的方式使用DoH了。

 

什么?DoH也用域名?那DoH的域名怎么解析呢?

亲爱的读者们,你肯定已经有办法了不是吗?

 

参考文件:

1,没有IPV6就不要开IPV6。

2,DOH和Dnscrypt一起用

打赏
2020年08月24日