飞行手册

DNS 默认查询超时,强制 TCP 却成功?正确使用 -TcpOnly

同一个域名,普通查询报超时,加入 -TcpOnly 后得到结果,这提供了一个可追查的差异。但默认查询并不保证“只用了 UDP”,所以不能只看两条命令就宣布 UDP 被封。

本文用于 Windows PowerShell 的 DNS 对照,查询你有权限使用的 DNS 服务,不扫描陌生服务器,也不改写系统 DNS 设置。

同一域名和 DNS 服务器分别接受默认查询与 TCP 查询的对照

示意图:默认查询与强制 TCP 查询是两种条件,默认模式不等于已证明只用 UDP。

TCP 是 DNS 的正规传输方式

RFC 7766要求通用 DNS 实现支持 UDP 与 TCP,并把 TCP 作为有效的传输选择,而不是仅供特殊故障使用。部分响应大小、网络路径和设备行为会影响传输结果,实际原因仍需要证据。

微软命令文档说明,-TcpOnly 让本次查询只使用 TCP;-DnsOnly 限定 DNS 协议;-Server 指定要查询的服务器。它们并不会启用 DoH、DoT 或加密 DNS。

固定三个条件再比较

先选择同一域名、同一记录类型、同一个 DNS 服务器。当前默认接口服务器和公网解析服务不是同一个对照条件;不要一边增加 TCP 参数,一边更换服务器。

下面用公开域名演示结构,由你输入当前使用且允许查询的 DNS 服务器地址:

$dnsServer = Read-Host '输入本次要核对的 DNS 服务器地址'
Resolve-DnsName -Name example.com -Type A -Server $dnsServer -DnsOnly -NoHostsFile
Resolve-DnsName -Name example.com -Type A -Server $dnsServer -DnsOnly -NoHostsFile -TcpOnly

example.com 只是示例。排查实际问题时,用不含秘密的目标域名替换,两轮保持一致。查询成功返回哪些地址,由实际响应决定,本文不编造预期 IP。

输出差异怎样记录

默认查询 TCP 查询 先记录的结论
成功 成功 两种命令条件下均得到结果
超时 成功 存在传输或查询条件差异,原因未确认
成功 超时 TCP 查询路径或服务器条件需进一步检查
都失败 都失败 不能仅归因于 UDP;检查服务器、域名和网络

缓存可能减少实际网络请求;默认模式也可能重试或选择不同传输。若你没有受控日志或经过授权的抓包证据,就把第一轮写成“默认查询”,不要写成“纯 UDP 实测”。DNS 返回 NXDOMAIN 等错误响应,也应与“完全收不到响应”分别记录。

不要把解析结果扩大成连通性保证

普通 HTTP/SOCKS 代理不会自动接管这两条系统 DNS 命令;TUN 或其他系统接管是否影响它们,取决于实际配置。记录所处网络与客户端状态,避免把直连 DNS 的结果写成节点的实测结果。

得到地址后,还应验证原目标的 HTTPS 请求或应用任务。DNS 成功不代表目标端口可达、TLS 验证通过或账号有权限。做机场推荐与网络排障记录时,先保留传输差异,再用真实任务确认问题是否恢复。

来源与核验日期

官方资料核验日期:2026-10-07。本文提供自行操作与记录的方法,不代表本站对某家机场的实测结论。

评论

推荐登机口

搜索文章

正在加载搜索…