一、Doh介绍

DOH全称为DNS-over-HTTPs,顾名思义,其主要目的是使用https协议来进行DNS请求。 正常的DNS请求过程是通过计算机上的DNS客户端程序来帮助用户发起DNS请求,而不是通过浏览器本身发送,DNS使用的协议是UDP协议,UDP协议不具备很好的安全性,这样发起的DNS请求会遭到DNS劫持,攻击者会将用户想要访问的域名解析到别的IP地址上,因此DOH为了解决这个问题而出现。 DOH是使用HTTPs协议发送dns请求,请求到达DOH服务器后,由DOH服务器解码HTTPS并发送DNS请求,DNS请求结果返回到DOH服务器上后,再由将其打包成HTTPS返回给客户端,这就保证了客户端发起的dns请求不会被攻击者拿到。

二、Ubuntu和 debian 系统

1.更新系统

1
2
apt update
apt -y upgrade

三、Pihole

1.安装 pihole

1
curl -sSL https://install.pi-hole.net | bash

2.修改 pihole 配置文件

1
2
rm /etc/dnsmasq.d/01-pihole.conf
nano /etc/dnsmasq.d/01-pihole.conf

3.Pihole的配置文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
addn-hosts=/etc/pihole/gravity.list
addn-hosts=/etc/pihole/black.list
addn-hosts=/etc/pihole/local.list


localise-queries


no-resolv

#log-queries
log-facility=/var/log/pihole.log

local-ttl=2

log-async
domain-needed
bogus-priv
server=1.1.1.1
server=8.8.8.8
server=1.0.0.1
server=8.8.4.4
interface=ens3

4.重新启动 pihole 并查看状态

1
2
pihole restartdns
pihole status

四、Lighttpd

1.修改lighttpd配置文件

1
nano /etc/lighttpd/lighttpd.conf

2.修改server.port值

1
2
3
4
5
6
7
    vim /etc/lighttpd/lighttpd.conf
    #找到以下字段,修改server.port值
    ...
    server.groupname = "www-data"
    server.port = 9090
    accesslog.filename = "/var/log/lighttpd/access.log"
    ...

3.重启 lighttpd

1
systemctl restart lighttpd

4.更改管理员密码

1
pihole -a -p

访问 http://youip:9090/admin

五、DNS-over-HTTPs

1.安装DNS-over-HTTPs服务器

1
2
wget https://ning.su/admin/api/public/dl/QueBWSnt/doh-server_2.0.1_amd64.deb
sudo dpkg -i doh-server_2.0.1_amd64.deb

2.修改DNS-over-HTTPs配置

1
2
rm nano /etc/dns-over-https/doh-server.conf
nano /etc/dns-over-https/doh-server.conf

3.DNS-over-HTTPs的配置文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
listen = [ "127.0.0.1:8053", ]

path = "/"

upstream = [ "udp:127.0.0.1:53", ]

timeout = 10
tries = 3
verbose = false
log_guessed_client_ip = false

4.重新启动DNS-over-HTTPs并重看状态

1
2
systemctl restart doh-server
systemctl status doh-server

六、Caddy

默认你已经安装了 Caddy,如果没有安装,可以参考本博客关于 Caddy 的文章。

1.修改 Caddy 的Caddyfile 文件

1
nano /usr/local/caddy/Caddyfile

2.Caddyfile配置文件

1
2
3
4
5
6
proxy   /      http://127.0.0.1:8053 {
   header_upstream Host {host}
   header_upstream X-Real-IP {remote}
   header_upstream X-Forwarded-For {>X-Forwarded-For},{remote}
   header_upstream X-Forwarded-Proto {scheme}
}

3.重新启动 Caddy并查看状态

1
2
/etc/init.d/caddy restart
/etc/init.d/caddy status

七、参考文章

[Pihole]https://ywnz.com/linuxyffq/4332.html [lighttpd]https://azhuge233.com/%E6%9B%B4%E6%94%B9-pi-hole-%E7%BD%91%E9%A1%B5%E7%9B%91%E5%90%AC%E7%AB%AF%E5%8F%A3%E5%92%8C%E7%AE%A1%E7%90%86%E5%91%98%E5%AF%86%E7%A0%81/#geng_gai_jian_ting_duan_kou [Doh]https://blog.csdn.net/qq_39378221/article/details/103245108 [Caddy]https://ning.su/posts/hugo-caddy-v2ray-on-ubuntu/#caddy