ubuntu 解决 DNS 代理设置错误,导致不能上网的 DoH、DoT问题

老旧的 udp dns明文查询,早就被 doh ,dot取代了。优选 doh,更自在。

但目前的现状是 3种 DNS 传输协议 udp / doh / dot 同时存在。

未来,如何选择?
  • 测试: udp dns:简单方便
  • 内网:dot:方便管理
  • 外网:doh,DoQ 自在

DoQ (DNS over QUIC):

DoQ是一种新兴的技术,它结合了DNS查询和QUIC协议的优势。QUIC是一个基于UDP的多路复用传输协议,它减少了连接建立时间,并提供了更好的性能加密支持。DoQ旨在进一步提升DNS查询的效率和隐私性。  DoH, DoT, DoQ 的区别 - DNS-WIKI  

再未来 DoX :变是永远的不变。

优缺点

  • DNS
    • 优点:原生支持,广泛部署,无需额外配置。
    • 缺点:明文传输,容易受到篡改和监听。
  • DoH
    • 优点:与HTTPS流量不可区分,难以被审查,易于绕过某些网络限制。
    • 缺点:可能与现有的网络基础设施(如中间件、缓存)存在兼容性问题。
  • DoT
    • 优点:设计简洁,易于实现,提供端到端加密。
    • 缺点:可被ISP或网络防火墙识别并阻止,因为使用了专用端口。
  • DoQ
    • 优点:减少连接延迟,提高传输效率,支持并发请求。
    • 缺点:目前支持度不广,需要进一步测试和部署。

1.

abc@mpc:~$ sudo netstat -tulnp | grep ':53'
tcp6       0      0 :::53                   :::*                    LISTEN      1/init              
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           662/avahi-daemon: r
udp6       0      0 :::53                   :::*                                1/init              
udp6       0      0 :::5353                 :::*                                662/avahi-daemon: r

#

# 由于53 端口已经被占用了,所以运行下面 3句,是不会改变上面的结果的。

abc@mpc:~$ sudo systemctl stop systemd-resolved
abc@mpc:~$ sudo systemctl start systemd-resolved

2.

abc@mpc:~$ sudo lsof -i:53
COMMAND    PID             USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd      1             root   67u  IPv6   8304      0t0  UDP *:domain
systemd      1             root   68u  IPv6   6829      0t0  TCP *:domain (LISTEN)
systemd-t  554 systemd-timesync   12u  IPv4  50483      0t0  UDP localhost:58362->127.0.0.53:domain
dnss       673             dnss    3u  IPv6   6829      0t0  TCP *:domain (LISTEN)
dnss       673             dnss    8u  IPv6   6829      0t0  TCP *:domain (LISTEN)
dnss       673             dnss    9u  IPv6   8304      0t0  UDP *:domain
snapd      692             root   17u  IPv4  51454      0t0  UDP localhost:36633->127.0.0.53:domain
firefox   4322             test   18u  IPv4  53266      0t0  UDP localhost:33606->127.0.0.53:domain
firefox   4322             test   55u  IPv4  52458      0t0  UDP localhost:34866->127.0.0.53:domain

#

# dnss为官方仓库里就有的,一句简单命令就可以 doh 了,OK。但是,doh 被那啥了,国内的一些 doh可以使用。

路由器,DNS服务器,本质上都可以是中间人,只不过这个中间人到底是谁而已。

3.

abc@mpc:~$ sudo apt remove dnss

abc@mpc:~$ sudo netstat -tulnp | grep ':53'
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           662/avahi-daemon: r
udp6       0      0 :::5353                 :::*                                662/avahi-daemon: r

   

## stop dnss 即可,并不是一定要 remove

abc@mpc:~$ sudo systemctl stop systemd-resolved
abc@mpc:~$ sudo systemctl start systemd-resolved

  • systemd-resolved 为 debian 系自带的域名服务器;使用 ip 为 127.0.0.53:53
  • 127.0.0.1:53 给其他dns代理服务器使用的。
  • dns查询顺序:先查询 systemd-resolved dns 127.0.0.53:53,无效、则查询 127.0.0.1:53  ?
    当然,并不只是这里提到的,实际上,中间还有其他的查询路径,比如 hosts 文件
  • 所以用户自己配置了dns服务器时,如需要使用自己的,则需要先停止系统自带的 systemd-resolved dns ?有些是代理软件自行设置,有些则需要用户自己设置。

应用程序发起 DNS 请求  
├─ 1. 检查本地 `/etc/hosts` 文件(若域名存在则直接返回 IP)‌#自己也可以进行DNS劫持
├─ 2. 查询本地 DNS 缓存(如 `systemd-resolved` 或浏览器缓存)‌
├─ 3. 通过 `/etc/resolv.conf` 找到 DNS 服务器地址(默认指向 `127.0.0.53:53`)‌
│   ├─ 若使用 `systemd-resolved`:请求转发至 `127.0.0.53:53`(本地代理,OS自带?)‌
│   │   ├─ `systemd-resolved` 根据配置(`/run/systemd/resolve/resolv.conf`)

│   │   │     向外部 DNS 服务器发起查询‌
│   │   └─ 结果缓存并返回给应用程序‌
│   └─ 手动绑定其他服务(如 `dnsmasq`,用户代理,不是系统默认自带的代理

│         请求直接发往 `127.0.0.1:53`(需服务已监听此地址)‌
└─ 4. 外部 DNS 服务器响应,最终返回 IP 给应用程序‌

  

  

4.

abc@mpc:~$ sudo netstat -tulnp | grep ':53'
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      5360/systemd-resolv
udp        0      0 127.0.0.53:53           0.0.0.0:*                           5360/systemd-resolv
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           662/avahi-daemon: r
udp6       0      0 :::5353                 :::*                                662/avahi-daemon: r

tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      5360/systemd-resolv

系统自带的 DNS 服务,回来了。

OK

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/32555.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编译OpenSSL

OpenSSL简介 OpenSSL是一个用于加密和安全连接的开源软件库。它提供了一系列的加密算法、密码学功能和安全协议的实现,包括SSL(Secure Sockets Layer)和TLS(Transport Layer Security)等用于网络安全的协议。OpenSSL可…

Win 转 MacBook Pro 踩坑指南

前言 Window 和 macOS 系统的差异还是很大的,我从 Thinkpad 转用 M1 的 Macbook pro 已经一年了,几乎没有任何不适应,整体感受那是真的牛👃,速度和续航惊艳到我了,同时开启 6个 vscode 加几十个浏览器标签…

uniapp uniCloud引发的血案(switchTab: Missing required args: “url“)!!!!!!!!!!

此文章懒得排版了,为了找出这个bug, 星期六的晚上我从9点查到0点多,此时我心中一万个草泥马在崩腾,超级想骂人!!!!!!!!! uniCloud 不想…

数据结构和算法--仅仅用于理解里面的术语,入门级别

数据结构和算法 预先知识:java 黑马前29节 cmd命令: 文件夹路径不区分大小写 E: dir:查看所有文件 cd 目录 :进入 cd… 返回上一级 cd 目录1\目录2 cd\ 回到根目录 cls 清屏 exit 退出 打开文件夹必须用cd 查找,但是文件不用&am…

【设计模式】通过访问者模式实现分离算法与对象结构

概述 定义:封装一些作用于某种数据结构中的各元素的操作(将数据结构于元素进行分离),它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。 结构 访问者模式包含以下主要角色: 抽象访问者(Visitor)角色&#xff…

低版本 Linux 系统通过二进制方式升级部署高版本 Docker

​ 一、背景: 在一些 Linux 系统中,由于系统自带的软件源版本较低,或者因网络、权限等限制无法直接通过源文件来升级到最新版本的 Docker。这种情况下,采用二进制方式升级部署高版本 Docker 就成为一种有效的解决方案。下面将详…

SpringAI+Ollama+DeepSeek本地大模型调用

前言 大型语言模型(LLM)在自然语言处理领域取得了突破性进展,但其庞大的计算资源需求和高昂的调用成本,使得许多开发者望而却步。如何高效、便捷地调用大模型,并将其应用于实际场景,成为了亟待解决的问题。…

【大模型科普】AIGC技术发展与应用实践(一文读懂AIGC)

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈人工智能与大模型应用 ⌋ ⌋ ⌋ 人工智能(AI)通过算法模拟人类智能,利用机器学习、深度学习等技术驱动医疗、金融等领域的智能化。大模型是千亿参数的深度神经网络(如ChatGPT&…

数据结构与算法:归并排序

目录 归并排序的基本思想 归并排序的特性总结 代码 归并排序的非递归版 归并排序的基本思想 归并排序是建立在归并操作上的一种有效的排序算法。改算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列…

阿里云操作系统控制台评测:国产AI+运维 一站式运维管理平台

阿里云操作系统控制台评测:国产AI运维 一站式运维管理平台 引言 随着云计算技术的飞速发展,企业在云端的运维管理面临更高的要求。阿里云操作系统控制台作为一款集运维管理、智能助手和系统诊断等多功能于一体的工具,正逐步成为企业高效管理…

爬虫案例十三js逆向模拟登录中大网校

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、网站分析二、代码 前言 提示:这里可以添加本文要记录的大概内容: js 逆向模拟登录中大网校 提示:以下是本篇文章正文内…

sql靶场--布尔盲注(第八关)保姆级教程

目录 布尔盲注(第八关) 1.判断 2.确认布尔盲注 3.手工尝试布尔盲注 表名字符 表数 表名长度 表字符 字段数 字段名长度 字段字符 4.脚本布尔盲注注入 布尔盲注(第八关) 1.判断 布尔盲注了,这种页面只会有…

【C++入门】变量和基本类型

目录 一、 基本内置类型 1.1. 整型(Integer Types) 1.2. 浮点型(Floating-point Types) 1.3. 字符型(Character Type) 1.4. 布尔型(Boolean Type) 1.5. 示例代码 二、变量声明…

JVM内存结构笔记03-方法区

文章目录 方法区1.定义2.组成方法区与永久代和元空间的关系为什么要将永久代 (PermGen) 替换为元空间 (MetaSpace) 呢? 3.方法区常用参数4.运行时常量池常量池运行时常量池定义查看class文件 方法区 1.定义 方法区属于是 JVM 运行时数据区域的一块逻辑区域,是各个…

数据库语句

环境变量path下的目录是系统目录。 #include <iostream> #include <mysql.h> #pragma comment(lib,"libmysql.lib")//链接libmysql.dll动态库的中间桥 // MYSQL* conn;//数据库句柄。后面还有网络句柄&#xff08;用来网络收发数据&#xff09; bool co…

Word 小黑第15套

对应大猫16 修改样式集 导航 -查找 第一章标题不显示 再选中文字 点击标题一 修改标题格式 格式 -段落 -换行和分页 勾选与下段同页 添加脚注 &#xff08;脚注默认位于底部 &#xff09;在脚注插入文档属性&#xff1a; -插入 -文档部件 -域 类别选择文档信息&#xff0c;域…

【从零开始学习计算机科学】编译原理(七)运行时刻环境

【从零开始学习计算机科学】编译原理(七)运行时刻环境 运行时刻环境存储组织空间的栈式分配活动树活动记录和控制栈简单栈式存贮分配C语言的过程调用和过程返回时的存贮管理堆式存储分配堆式存储分配的功能垃圾回收基于跟踪的垃圾回收短停顿垃圾回收运行时刻环境 存储组织 …

一维下料之 *贪心算法* —— CAD c#二次开发

一维下料之贪心算法&#xff0c;需求如下 已知条件 我们有一批长度为 380 米 的原材料&#xff08;例如钢管、木材等&#xff09;。 切割需求 需要从这些原材料中切割出以下长度的小段&#xff1a;42 米&#xff1a;需要 13 段 140米&#xff1a;需要 23 段 130 米&#xff1a…

刷leetcode hot100--动态规划3.12

第一题乘积max子数组[1h] emmmm感觉看不懂题解 线性dp【计划学一下acwing&#xff0c;挨个做一下】 线性动态规划 相似题解析 最长上升子序列 最大上升子序列和 最大连续子段和 乘积最大子数组_哔哩哔哩_bilibili 比较奇怪的就是有正负数和0&#xff0c;如何处理&#xff1f…

Linux安装升级docker

Linux 安装升级docker Linux 安装升级docker背景升级停止docker服务备份原docker数据目录移除旧版本docker安装docker ce恢复数据目录启动docker参考 安装找到docker官网找到docker文档删除旧版本docker配置docker yum源参考官网继续安装docker设置开机自启配置加速测试 Linux …