终端如何获得 DNS
在蜂窝数据连接建立后,终端通常从核心网或网关下发的参数中获得 DNS 服务器地址。LTE 场景常见通过协议配置选项(PCO)在会话建立流程中携带 IPv4/IPv6 DNS;IPv6 亦可借助 DHCPv6 或路由器通告(RA)获取递归解析器地址。若终端固件未正确解析 PCO,可能出现“已获 IP 但 DNS 为空”,应用层所有域名访问失败,而直连 IP 仍通,这类问题在物联网定制固件中并不罕见。
私网与专网场景
企业物联网常将终端置于私网地址空间,DNS 可能指向内网递归服务器,用于解析仅在内网可见的域名。若终端误用公网 DNS,将无法解析私网域名,表现为间歇性“服务不可用”。反之,若业务需要访问公网 SaaS,而运营商侧 DNS 对特定域名做了劫持或过滤,也会引发疑难故障。调试时应先用 `nslookup` 或模组 AT 指令对比指定 DNS 与默认 DNS 的解析结果。
安全与性能
DNS 是常见的攻击入口,物联网终端若未校验响应完整性,可能遭受缓存投毒或中间人劫持,导致连接到错误服务器。DoH/DoT 在资源受限模组上部署成本较高,更现实的做法是固化可信 DNS、启用 TLS 校验业务连接、并结合设备证书。性能方面,解析超时重试策略应退避,避免在弱网下因 DNS 风暴拖垮模组;可缓存常用解析结果并设合理 TTL,但需注意证书轮换与 CDN 切换时的域名变更。
与 MTU、分片的关联
大型 DNS 响应若走 UDP,可能在某些路径上因分片被丢弃(与 MTU 相关)。若出现“偶发解析失败”,可结合 MTU 探测与 TCP DNS 回退策略排查。IPv6 双栈环境下,错误的全局 DNS 配置可能导致 AAAA 记录优先而实际 IPv6 路径不通,需要在应用层或系统层做 Happy Eyeballs 类策略。
地址已经拿到,解析器却是空的
蜂窝DNS的技术含义,是终端在数据会话建立之后,从核心网随会话下发的参数、或从后续的地址分配过程中,得到递归解析器的地址。它和“已经获得终端自己的地址”不是同一步。使用条件是:固件确实解析了这些参数,业务域名都经过这组解析器,私网域名和公网域名没有被送错地方。解析器字段为空时,所有域名访问失败,直接使用数字地址仍然成功。这是定制固件里很典型的现象,复位模组往往不能改变下一次仍然为空的结果。
私网卡把解析器指到企业内网,才能解析只在内网存在的名字。终端若改用公共解析器,内网名字会失败,公网名字却正常,表现为部分业务不可用。反过来,业务要访问外部服务,而运营商解析器对某些名字做了替换或过滤,也会只在特定域名上失败。调试时要对比指定解析器和默认解析器的结果,并记下是哪一张卡、哪一个接入点。
私网名字被公网解析器拒绝
把解析失败记成“断网”,会把排查引向射频。应先确认会话仍在、本机地址仍在,再看解析器地址和查询是否发出。超时重试若没有退避,弱网下会形成解析风暴,把本已紧张的上行占满。缓存可以减少重复查询,但缓存太久会在证书或内容分发切换后仍指向旧地址。
大的应答走数据报时,可能因路径上的报文长度限制被丢弃,表现为偶发失败。此时应看分片和回退到基于连接的查询,而不是更换天线。双栈环境下只优先选择不可达的地址族,也会让域名“能解析、连不上”。数据会话本身的参数见现有说明;承载这一会话的无线侧则从4G附着查起。需要在网关本地解析再转发时,把缓存放在边缘节点,避免每台子设备各自超时重试。解析器地址应随附着结果一起记下来,空地址和错误地址要分成两类,不要都叫断网。更换接入点后要重新读取解析器,旧缓存不能带到新会话。