当前位置: 首页 > article >正文

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.kler.cn/a/583357.html

相关文章:

  • 鸿基智启:东土科技为具身智能时代构建确定性底座
  • 水雷探测用水下航行器侧扫声纳成像数据之论文阅读
  • Deepin通过二进制方式升级部署高版本 Docker
  • c语言 结构体对齐
  • 2020年蓝桥杯第十一届CC++大学B组(第一次)真题及代码
  • WPF 与 GMap.NET 结合实现雷达目标动态显示与地图绘制
  • JVM常用概念之常量
  • 【MySQL基础-3.1】MySQL DDL 语句详解:数据库操作篇
  • sql语句分页的关键字是?
  • 什么是 React 的合成事件?
  • paimon---同步mysql数据到paimon表中
  • uv python包管理工具
  • [极客大挑战 2019]FinalSQL【SQL布尔盲注】
  • Ubuntu 使用快速入门 | Android Framework
  • 电机控制常见面试问题(九)
  • 用TypeScript和library needle来创建视频爬虫程序
  • 使用AI一步一步实现若依前端(6)
  • 【每日学点HarmonyOS Next知识】路由栈问题、图片圆角、颜色资源转十六进制字符串、数据集变化崩溃、组件声明周期
  • Qt | 屏幕截图实现
  • deepseek的regflow安装mac版本