1. 什么是DoT?
DoT即DNS-over-TLS, 可用于实现终端用户的隐私和安全,DoT它应该运行在853端口。因为大多数DNS客户端使用TCP或UDP协议,这些协议容易被窃听,并且容易受到中间人攻击,比如某国家的被 ISP 滥用。
在 RFC 7858中规定了 DNS-over-TLS 标准,这是一个非常直接的实现。 本质上,该标准规定使用现有的 DNS-over-TCP 协议支持,大多数 DNS 服务器已经具有这种支持,并向其中添加 TLS。
2. 环境准备
非朝鲜区域 云服务器1台
自签发SSL证书 [只有企业才有资格为一个公网IP签发证书]
— 证书自签类型:ECC椭圆曲线加密 384bits
Nginx
3. 实现
1 | yum install -y nginx |
修改nginx.conf include
1 | 与http区段平级 |
cat /etc/nginx/conf.d/dot.conf
1 | stream { |
注:upstream代理的DNS可以是内网DNS主从,也可代理现有墙外DNS
1 | nginx -t |
验证端口
1 | netstat -lntup|grep 853 |
4. 朝鲜网络–dig测试
配置本地unbound代理 这台Server 853端口
dig测试
1
2
3
4
5
6
7
8
9
10
11
12本地unbound解析
[root@test ~]# dig flickr.com @127.0.0.1
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> flickr.com @127.0.0.1
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; ANSWER SECTION:
flickr.com. 60 IN A 13.226.113.74
;; Query time: 380 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Nov 14 18:58:01 CST 2019
;; MSG SIZE rcvd: 551
2
3
4
5
6
7
8
9
10
11
12非朝鲜网络解析
[root@ns ~]# dig flickr.com @1.1.1.1
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> flickr.com @1.1.1.1
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; ANSWER SECTION:
flickr.com. 29 IN A 13.226.113.74
;; Query time: 1 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Thu Nov 14 05:58:32 EST 2019
;; MSG SIZE rcvd: 55可以看出解析结果数据一致,解析结果未被污染
5. 安全建议
由于无法得到基于IP的安全证书,所以只能寄托于自签,自签时长建议缩短以天为单位,通过shell脚本自动更新来防止中间人攻击。
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2019/11/15/部署自己的DoT-DNS/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!