本文来自于云服务器ECS征文活动投稿,已获得作者(昵称绍羽)授权发布。
我们都知道,DNS服务器(Domain Name Server)可以将人类易于理解的域名(就是平时说的网址)转换为机器易于理解的「IP 地址」,它使用UDP端口53对外提供服务。通常,DNS查询是明文的,这意味着你的网站访问记录可以轻易被网络管理员和ISP获取到。
面对日益严峻的行为管理、隐私泄露和恶意劫持,DoH作为一种更安全的DNS查询方式正在被更广泛使用。它通过RFC 8484指定的经过TLS加密的HTTP连接提供DNS解析,这意味着我们的DNS查询得到了加密保护。
那么我能不能尝试一下在公网搭建一个DoH服务器呢?
当我有这种想法之后便开始行动,通过查阅网络公开资料也解决了很多疑点,最终,借助阿里云的ECS(镜像源真的很快,推荐),成功地完成了搭建Doh服务器的实践。
接下来,跟着我一起看看是怎样完成搭建的吧~
01 资源准备:云服务器+域名
1.云服务器
本次实践推荐使用一台装载Ubuntu镜像的云服务器,在阿里云的试用中心可以免费使用一个月t5实例:阿里云试用中心_云服务器试用_企业试用场景_开发者云产品试用
如果您是高校学生或老师,可以使用高校计划可以免费领用2.5个月:高校学生免费算力 - 飞天加速计划
2.域名准备
建议使用阿里云万网购买域名,优势是可以获得免费的SSL证书。
02 便捷搭建方案
如果只是想便捷配置可以参考下面的步骤:
1、安装docker:
apt-get install docker.io
2、启动docker:
service docker start
3、下载创建并初始化Dnscrypt容器:
docker run --name=dnscrypt-server -p 443:443/udp -p 443:443/tcp \
--restart=unless-stopped \
-v /etc/dnscrypt-server/keys:/opt/encrypted-dns/etc/keys \
jedisct1/dnscrypt-server init -N example.com -E '192.168.1.1:443'
说明:
①:example.com替换为您的域名,192.168.1.1:443替换为ECS公网IP,可以指定多个逗号分隔的 IP 和端口,如 -E'192.168.1.1:443,[2001:0db8::412f]:443'. -v
②:/etc/dnscrypt-server:/opt/encrypted-dns/etc/keys 表示容器内部的路径。
/opt/encrypted-dns/etc/keys 映射到 /etc/dnscrypt-server/keys。
启动服务命令:docker start dnscrypt-server
4、下载创建并初始化Doh-server容器&#x