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

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.mrgr.cn/news/94046.html

相关文章:

  • 统计登录系统10秒内连续登录失败超过3次的用户
  • 基于redisson实现接口幂等性
  • Jenkins链接私有仓库Failed to connect to repository,stderr: No ECDSA...的问题
  • bootloader相关部分
  • 通道注意力机制、空间注意力机制、混合注意力机制
  • 【Spring 事务】
  • PySide(PyQT),QGraphicsRectItem的setPos()和setRect()的坐标位置的区别
  • 【WRF-Urban】使用 LCZ 替换 WRF 运行中的 LUCC 数据
  • 【Yonghong 企业日常问题07 】 东方通TongWeb替代Tomcat的实战指南!
  • 如何使用logrotete定时切割mysql的慢日志
  • Android DUKPT - 3DES
  • shell编程——条件表达式和if判断
  • liunx磁盘挂载和jar启动命令
  • Vue3项目-大事件
  • 在资源有限中逆势突围:从抗战智谋到寒门高考的破局智慧
  • 瑞芯微RK3576(2)-调试过程中遇到的问题
  • 使用STM32CubeMX配置定时器中断实现LED每秒闪烁一次(STM32G070CBT6)
  • 制作自定义镜像
  • 【OpenGL】01-配置环境
  • react中字段响应式