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

推荐订阅源

N
Netflix TechBlog - Medium
G
Google Developers Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
The Blog of Author Tim Ferriss
Microsoft Azure Blog
Microsoft Azure Blog
GbyAI
GbyAI
L
LangChain Blog
云风的 BLOG
云风的 BLOG
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
aimingoo的专栏
aimingoo的专栏
P
Proofpoint News Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
小众软件
小众软件
WordPress大学
WordPress大学
A
About on SuperTechFans
大猫的无限游戏
大猫的无限游戏
C
Check Point Blog
月光博客
月光博客
Stack Overflow Blog
Stack Overflow Blog
美团技术团队
Jina AI
Jina AI
T
Tailwind CSS Blog
Google DeepMind News
Google DeepMind News
D
Docker

会走路的三百块

会走路的三百块 会走路的三百块 其他 | 会走路的三百块 会走路的三百块 Unity-业务框架 | 会走路的三百块 其他 | 会走路的三百块 part 4 踩坑记录 | 会走路的三百块 Unity-进阶知识 | 会走路的三百块 Unity-天命6源码 | 会走路的三百块 CICD | 会走路的三百块 part 1 linux的历史节点 | 会走路的三百块 C的编译器 | 会走路的三百块 字符串常量存储 | 会走路的三百块 第三章 数据和C | 会走路的三百块 类型转换和缩减 | 会走路的三百块 零散知识点 | 会走路的三百块 网络八股Cache | 会走路的三百块 第三章-数据和C | 会走路的三百块 一些零散的知识点 | 会走路的三百块 自顶向下 | 会走路的三百块 linux简单速通 | 会走路的三百块 设计图的概述 | 会走路的三百块 AI和自动化暂存 | 会走路的三百块 第一章 初识C语言 | 会走路的三百块 Games101 | 会走路的三百块 Unity-Lua补充 | 会走路的三百块 Unity-个人Demo | 会走路的三百块 Unity-基础知识 | 会走路的三百块 Unity环境搭建 | 会走路的三百块 Unity-经典MMO | 会走路的三百块
DNS选择机制 | 会走路的三百块
2026-05-26 · via 会走路的三百块

创建于 2023年2月23日 03:37:02 · 约652字

多个DNS ​

在多个dns服务器下,只有第一个彻底不通的时候才会使用到第二个。
例如:你第一个设置一个不可使用的 IP : 1.1.1.1 第二个设置 114.114.114.114 ,这个时候就可以使用了。
如果你第一个 DNS ,没有彻底挂了的时候,例如 DNS 服务不正常,能通,但无法解析,这个时候是不会使用到第二个 DNS 的。man文档
Windows: 第一个超过 1s 没返回就使用第二个,当你使用 nslookup 或者 dig 时,是仅用第一个的。微软官方有文档dan但我没找到
但是 linux 的 DNS 系统是可以设置的。可以设置成负载均衡,也可以设置成每次请求向所有配置的 DNS 发送请求,谁先回复就用谁的,也可以像楼主描述的一样按照顺序查询 DNS 运行机制 | Howie's Notes

DNS fallback机制 ​

谈一谈各种 DNS 接下来再说说一种叫做 DNS fallback 的技术(这个名字可能不太对),在代理服务器不支持 UDP 的时候,单纯的全局 TCP/UDP 流量代理 就会出问题了,因为要解析 DNS 就需要 UDP,服务器不支持 UDP 就没办法处理 DNS ,也就没办法处理所有域名请求了,DNS fallback 是一种可以强制让应用程序把 DNS 请求以 TCP 流量发送出去的技术。

需要说明的是,如果用了 V2Ray 的技术,或者 Fake DNS,那 DNS fallback 是没必要的,DNS fallback 也是一种处理 DNS 相关问题技术,这里只是想把这种技术也列举出来

众所周知一般的 DNS 请求都是用 UDP 发的,但 DNS 的 UDP 报文的大小会被限制在大概 512 字节,如果某个 DNS 答复很长,超过了这个限制,就不能通过 UDP 来传输了,为此 DNS 规范中提出,对于这种超过限制大小的 DNS 请求,DNS 服务器可以在答复中设置一个 flag(truncated),来告诉客户端这个答复太长,你不能用 UDP 来做这个 DNS 请求,请用 TCP,于是客户端就会用 TCP 来重新请求 DNS。

DNS fallback 正是利用了这一点,在 tun2socks 给过来的 UDP 流量中识别出 DNS 请求,然后伪造一个设置了 truncated flag 的答复返回给客户端,客户端就会转用 TCP 来做 DNS 请求了。

DNS fallback 的实现也是非常简单的,有兴趣可以看一下 这里的代码