惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tor Project blog
B
Blog RSS Feed
M
MIT News - Artificial intelligence
WordPress大学
WordPress大学
H
Hackread – Cybersecurity News, Data Breaches, AI and More
罗磊的独立博客
GbyAI
GbyAI
N
Netflix TechBlog - Medium
博客园 - 司徒正美
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
宝玉的分享
宝玉的分享
W
WeLiveSecurity
Stack Overflow Blog
Stack Overflow Blog
Y
Y Combinator Blog
SecWiki News
SecWiki News
V
Vulnerabilities – Threatpost
Google DeepMind News
Google DeepMind News
C
CERT Recently Published Vulnerability Notes
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Register - Security
The Register - Security
Cisco Talos Blog
Cisco Talos Blog
Martin Fowler
Martin Fowler
A
About on SuperTechFans
S
Security @ Cisco Blogs
T
Tenable Blog
C
Check Point Blog
N
News and Events Feed by Topic
S
SegmentFault 最新的问题
The GitHub Blog
The GitHub Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Attack and Defense Labs
Attack and Defense Labs
美团技术团队
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
C
Cisco Blogs
P
Palo Alto Networks Blog
V
V2EX
博客园 - 聂微东
Project Zero
Project Zero
酷 壳 – CoolShell
酷 壳 – CoolShell
D
Docker
N
News | PayPal Newsroom
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
小众软件
小众软件
Application and Cybersecurity Blog
Application and Cybersecurity Blog
人人都是产品经理
人人都是产品经理
V2EX - 技术
V2EX - 技术
I
Intezer
L
LINUX DO - 最新话题

HaoKunT的博客

如何用 ollama 快速下载 deepseek 模型 - HaoKunT的博客 python使用gdal - HaoKunT的博客 Word中写LaTeX公式 - HaoKunT的博客 g++中的rpath和runpath - HaoKunT的博客 Ext4文件系统 - HaoKunT的博客 文件系统介绍 - HaoKunT的博客 理解shell - HaoKunT的博客 Hyper V安装ENVI - HaoKunT的博客 华为软件实习生笔试 - HaoKunT的博客 用C++实现一个命令行进度条 - HaoKunT的博客 PCA与GWPCA - HaoKunT的博客 字节后台实习生笔试题目 - HaoKunT的博客 Web终端仿真器 - HaoKunT的博客 阿里云API网关与函数计算的基础理解 - HaoKunT的博客 DNS解析过程 - HaoKunT的博客 Github图片加载不出来 - HaoKunT的博客 将Elementary OS装在U盘中 - HaoKunT的博客 MacOS+Windows 双系统的安装 - HaoKunT的博客 IPXE+netboot+ISCSI 网络启动 - HaoKunT的博客 Esxi+NAS+Openwrt - HaoKunT的博客 Esxi的安装和使用 - HaoKunT的博客 利用acme自动更新证书 - HaoKunT的博客 Golang使用海康威视SDK - HaoKunT的博客 Filetools工具 - HaoKunT的博客 学习正则表达式 - HaoKunT的博客 Vugu View - HaoKunT的博客 Django Restframework 嵌套序列化 - HaoKunT的博客 看不了netlify的部署日志 - HaoKunT的博客 Go Modules的使用 - HaoKunT的博客 使用hugo+netlify部署个人主页 - HaoKunT的博客 关于我 - HaoKunT的博客 在线工具大全 - HaoKunT的博客 SWIG编译海康威视SDK 使用golang - HaoKunT的博客 SWIG 以Python为例 - HaoKunT的博客 Seafile - HaoKunT的博客 Golang的小技巧 - HaoKunT的博客 归档 - HaoKunT的博客 搜索 - HaoKunT的博客
函数计算搭建DNS服务器 - HaoKunT的博客
HaoKunT · 2020-02-05 · via HaoKunT的博客

本文为原创文章,转载注明出处,欢迎关注网站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上,这里详细介绍配置流程

项目架构:

  1. Web服务器:caddy
  2. DNS服务器:CoreDNS
  3. 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文件

1
2
3
4
5
#!/bin/bash

./coredns &
./caddy &
wait

阿里云上开通函数计算服务

创建template.yml,里面写入这样的内容

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
ROSTemplateFormatVersion: '2015-09-01'
Transform: 'Aliyun::Serverless-2018-04-03'
Resources:
  Doh-Service:
    Type: 'Aliyun::Serverless::Service'
    Properties:
      Description: 'doh-server'
      InternetAccess: true
      # LogConfig: 
      #   Project: doh-server-log
      #   Logstore: doh-server-log-store
    resolver:
      Type: 'Aliyun::Serverless::Function'
      Properties:
        Handler: index.handler
        # Initializer: index.initializer
        CodeUri: ./code.zip
        Description: 'resolver function'
        Runtime: custom
      Events:
          httpTrigger:
            Type: HTTP
            Properties:
              AuthType: ANONYMOUS
              Methods: ['GET', 'POST', 'PUT', 'DELETE', 'HEAD']

安装fun工具

1
npm install -g @alicloud/fun

然后执行

1
2
fun config # 先配置一下fun工具 
fun deploy

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,具体怎么使用看文档即可,主要是改一下源就行