systemd-resolved.service实验实战2

DNS-over-TLS(DoT)详细介绍

DNS-over-TLS(简称 DoT)是一种网络安全协议,旨在通过加密 DNS(Domain Name System)查询和响应来保护用户隐私和防止数据篡改。传统 DNS 使用明文传输,容易被窃听或劫持,而 DoT 利用 TLS(Transport Layer Security)协议为 DNS 通信提供端到端加密。下面我将从多个方面逐步介绍 DoT,帮助您全面理解其原理、优势和应用。

1. 什么是 DoT?

DoT 是一种标准化的协议(由 IETF 在 RFC 7858 和 RFC 8310 中定义),它将 DNS 查询封装在 TLS 加密通道中。简单来说,当您的设备(如电脑或手机)需要解析域名(如 example.com)时,DoT 会确保这个查询过程被加密,防止第三方窥探。例如:

  • 传统 DNS:查询以明文发送,就像寄出一封未封口的信。
  • DoT:查询被加密后发送,类似寄出封口的加密信件。

DoT 使用标准端口 853 进行通信,这与传统 DNS 的端口 53 不同,便于网络设备识别和优先处理加密流量。

2. 为什么需要 DoT?

传统 DNS 存在严重的安全和隐私问题:

  • 窃听风险 :攻击者可以在网络上拦截 DNS 查询,获取您访问的网站信息。例如,如果您查询 bank.com,黑客可能窃取此数据用于钓鱼攻击。
  • 篡改风险:中间人(如 ISP 或恶意路由器)可以修改 DNS 响应,将您重定向到恶意网站。
  • 隐私泄露:ISP 或政府机构可能记录您的 DNS 历史,侵犯隐私。

这些问题源于 DNS 的未加密设计。DoT 通过加密解决了这些漏洞,确保:

  • 机密性:查询内容只有发送方和接收方能解读。
  • 完整性:响应数据在传输中不被篡改。
  • 认证性:客户端可以验证 DNS 服务器的身份,防止假冒。
3. DoT 的工作原理

DoT 的工作流程基于 TLS 握手和加密传输,具体步骤如下(以客户端向 DNS 服务器发送查询为例):

  1. 建立 TLS 连接 :客户端(如您的设备)首先与支持 DoT 的 DNS 服务器(如 Cloudflare 的 1.1.1.1 或 Google 的 8.8.8.8)建立 TCP 连接。然后,通过 TLS 握手协议协商加密参数。TLS 使用公钥加密技术

  2. 加密 DNS 查询 :一旦 TLS 通道建立,客户端将 DNS 查询(如请求 example.com 的 IP 地址)封装在 TLS 记录中发送。查询数据被加密为密文,只有目标服务器能解密。

  3. 服务器处理并响应 :DNS 服务器解密查询,处理请求,然后将响应(如 IP 地址 93.184.216.34)同样加密后通过 TLS 通道返回。

  4. 关闭连接:查询完成后,连接关闭,但 TLS 会话可能被重用以提高效率。

整个过程确保 DNS 流量像 HTTPS 一样安全。例如,一个查询包的结构可简化为:

  • 明文 DNS 头 + 加密的查询负载。
4. DoT 的优点
  • 增强隐私:防止 ISP 或黑客监控您的浏览历史,特别适用于公共 Wi-Fi 等不安全网络。
  • 提高安全性:减少 DNS 劫持和中间人攻击风险,保护敏感操作(如在线银行)。
  • 兼容性好:DoT 基于标准 TLS,易于集成到现有系统和应用(如 Android 9+ 和 iOS 14+ 原生支持)。
  • 性能优化:现代实现减少了加密开销,查询延迟与传统 DNS 相近(通常 <100ms)。
5. DoT 的缺点和挑战
  • 部署复杂性:需要 DNS 服务器和客户端都支持 DoT,普通用户可能需手动配置(如指定 DoT 服务器地址)。
  • 防火墙干扰:某些网络可能阻止端口 853,导致连接失败。
  • 中心化风险:依赖少数大型 DoT 提供商(如 Google 或 Cloudflare),可能引入新的隐私担忧(尽管他们承诺不记录数据)。
  • 与 DoH 的混淆:DoT 常与 DNS-over-HTTPS (DoH) 比较。DoH 使用 HTTPS 端口 443,更易绕过防火墙,但可能被误用于绕过网络策略。DoT 更专注于传输层加密,适合网络管理员控制。
6. 如何启用和使用 DoT
  • 个人用户
    • 操作系统设置 :在 Android 设备上,进入"网络设置">"私有 DNS",输入 DoT 服务器域名(如 dns.google)。在 Windows 或 macOS,可通过第三方软件(如 DNSCrypt)配置。
    • 路由器级别:在路由器设置中启用 DoT,所有连接设备自动受益(例如,使用 OpenWrt 固件)。
  • 推荐服务器 :免费公共 DoT 服务器包括:
    • Cloudflare: one.one.one.one1.1.1.1
    • Google: dns.google8.8.8.8
    • Quad9: dns.quad9.net
  • 验证是否生效 :使用在线工具(如 Cloudflare 的 1.1.1.1/help)检查连接状态,确保显示"DNS over TLS"为启用。
7. 总结

DNS-over-TLS(DoT)是提升互联网隐私和安全的关键技术,它通过 TLS 加密解决了传统 DNS 的固有缺陷。尽管存在部署挑战,但 DoT 在保护用户数据、防止攻击方面效果显著。随着网络威胁增加,采用 DoT 已成为最佳实践。如果您是普通用户,建议从设备设置启用 DoT

实验三:启用 DNS - over - TLS(DoT)

bash 复制代码
kesonsun@ubuntu22:~$ # 查看特定接口的详细 DNS 配置
kesonsun@ubuntu22:~$ resolvectl status ens33
Link 2 (ens33)
    Current Scopes: DNS
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 8.8.4.4
       DNS Servers: 8.8.8.8 8.8.4.4
        DNS Domain: aust.edu.cn
  1. 查看 DNS 协议配置

    • 在输出中,Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported 这一行是关键。
    • 这里,-DNSOverTLS 表示 DNS over TLS 被 禁用 (符号 - 表示禁用)。
    • 其他部分:
      • +DefaultRoute:启用默认路由。
      • +LLMNR:启用 Link-Local Multicast Name Resolution。
      • -mDNS:禁用 Multicast DNS。
      • DNSSEC=no/unsupported:DNSSEC 未启用或不支持。
  2. 查看 DNS 服务器设置

    • DNS 服务器是 8.8.8.88.8.4.4(Google 公共 DNS),但服务器本身不影响 DoT 状态,关键是协议是否启用。
    • 如果 DoT 启用,通常会显示 +DNSOverTLS 或类似指示。
bash 复制代码
# 1. 首先配置 DNS 服务器(cloudflare)
sudo resolvectl dns ens33 1.1.1.1 1.0.0.1

# 2. 启用 DNS-over-TLS
sudo resolvectl dnsovertls ens33 yes

# 3. 设置 DNS 搜索域
# 清除 ens33 接口原有的所有 DNS 搜索域,并禁用该接口的自动补全功能,强制解析时必须使用完整域名
sudo resolvectl domain ens33 ~.

//改动成功+DNSOverTLS
kesonsun@ubuntu22:~$ resolvectl status ens33
Link 2 (ens33)
    Current Scopes: DNS
         Protocols: +DefaultRoute +LLMNR -mDNS +DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 1.1.1.1
       DNS Servers: 1.1.1.1 1.0.0.1
        DNS Domain: ~.
kesonsun@ubuntu22:~$




#确认 DNS 查询是否通过 TLS 加密,可以使用 tcpdump 捕获网络流量
相关推荐
牧码岛2 小时前
服务端之NestJS接口响应message编写规范详解、写给前后端都舒服的接口、API提示信息标准化
服务器·后端·node.js·nestjs
CS Beginner4 小时前
【Linux】安装配置mysql中出现的问题2
linux·mysql·adb
YoungLime4 小时前
DVWA靶场之十二:储存型 XSS(Stored Cross Site Scripting (XSS))
网络·安全·web安全
Rsingstarzengjx8 小时前
搭建Jenkins gitlab 环境
运维·服务器
数据与人工智能律师8 小时前
AI的法治迷宫:技术层、模型层、应用层的法律痛点
大数据·网络·人工智能·云计算·区块链
君之嘞10 小时前
【操作系统基础】认识操作系统:系统调用
linux·运维·microsoft
渡我白衣10 小时前
访问文件后出现的 ~$ 文件是什么?它和缓冲机制、数据丢失有什么关系?
linux
板鸭〈小号〉10 小时前
Socket网络编程(1)——Echo Server
开发语言·网络·php
爱倒腾的老唐10 小时前
07、Linux 文件管理
linux·运维·服务器