函数计算搭建DNS服务器
本文为原创文章,转载注明出处,欢迎关注网站https://hkvision.cn
缘起
见DNS解析过程
这篇文章的缘起
DoH 服务概念
DoH(DNS over HTTPS),指的是将DNS解析的内容使用HTTPS协议进行传输,而不是UDP协议传输,其优势在于隐私和防篡改,可以有效的防止DNS劫持,关于DNS的劫持,可以看其他文章。
DoT 服务器概念
DoT(DNS over TLS),指的是将DNS解析的内容使用TLS协议进行传输,优势和DoH一样
安全性保证
DoH服务和DoT服务对于防篡改和防偷窥的安全保证是通过现有的CA证书体系保证的,其中DoH相较于DoT在TCP协议和DNS协议中间增加了一层HTTPS协议,性能差一点,但是由于HTPP的库非常广泛,协议大家也非常熟悉,因此开发相应的客户端和服务器端会更加方便,更具推广性
函数计算
函数计算是阿里云针对无服务所开通的产品,选择函数计算的原因是阿里云函数计算有较多的免费额度(每个月100w次,40wcu-s),因此对于个人使用而言,除了需要付流量费之外,基本上免费,其流量费大约0.8元/GB
,一个月大约会使用50M
的流量(每天12小时正常使用电脑)
配置过程
已有项目放在GitHub
上,这里详细介绍配置流程
项目架构:
- Web服务器:caddy
- DNS服务器:CoreDNS
- forward:谷歌DNS(8.8.8.8)
下载Caddy,我使用的version 1.x
,创建Caddyfile,里面写入这样的内容
:9000 {
gzip
rewrite {
r (.*?)resolver(.*)
to {2}
}
proxy / http://localhost:8053 {
transparent
}
log stdout
}
下载CoreDNS,创建Corefile,里面写入这样的内容
https://.:8053 {
cache
log
errors
forward . tls://8.8.8.8 tls://8.8.4.4 {
tls_servername dns.google
health_check 30s
}
whoami
}
创建bootstrap
文件
|
|
去阿里云上开通函数计算服务
创建template.yml
,里面写入这样的内容
|
|
安装fun工具
|
|
然后执行
|
|
OK,整个配置工程完成
为什么我们forward使用8.8.8.8
首先我一开始使用的是1.1.1.1
,那我改到了8.8.8.8
的原因是,我发现使用cloudflare的DNS解析和使用国内的DNS解析获得的IP不一样,其中使用cloudflare的IP使用不稳定,我估计是做了线路优化,然而我使用国外的DNS的话,如果网站做了线路优化,则明显会出问题,速度会非常慢,因此我使用了8.8.8.8
关于劫持的问题,首先我们使用了DoT,基本上劫持不会产生,并且我使用了tracert命令追踪了针对8.8.8.8的路线,应该是访问的美国谷歌的IP,虽然不知道为什么时延真的很低(40ms)
客户端
本人使用的客户端是DNSCrypt-proxy
,具体怎么使用看文档即可,主要是改一下源就行
- 原文作者:HaoKunT
- 原文链接:https://hkvision.cn/2020/02/05/%E5%87%BD%E6%95%B0%E8%AE%A1%E7%AE%97%E6%90%AD%E5%BB%BAdns%E6%9C%8D%E5%8A%A1%E5%99%A8/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。