代理参数里的“服务器”有时是一串IP,有时是域名。直接填IP路径直观,但服务端换地址时需要逐个客户端修改;使用域名便于服务方通过DNS调整后端,却会受到TTL、客户端缓存、连接池和多地址解析影响。
哪一种更好,要看业务是否需要固定白名单、服务方如何交付,以及客户端能否正确处理DNS更新。
一、域名和IP作为代理主机的差别
| 维度 | 使用域名 | 直接使用IP |
|---|---|---|
| 后端变更 | 可通过DNS更新指向 | 客户端通常要修改配置 |
| 缓存影响 | 受TTL、系统和应用缓存影响 | 没有主机名解析缓存 |
| 多地址 | 可返回多个A/AAAA记录 | 配置通常指向单个地址 |
| 证书与SNI | 域名更适合匹配证书身份 | 证书未必包含IP地址 |
| 白名单 | 目标实际仍按解析后的出口或地址处理 | 便于明确登记当前地址 |
| 容灾 | 可由服务方调整解析 | 需要客户端或配置中心切换 |
二、TTL决定多久切换吗
TTL是DNS记录建议缓存的时间,但实际切换时间还受递归解析器、操作系统、应用缓存和已有连接影响。TTL到期后,新的DNS查询才有机会获得更新结果;已经建立的TCP连接不会因为DNS记录变化自动迁移。
因此“TTL设置为60秒”不代表所有客户端60秒后都切到新IP。
三、客户端可能在哪些地方缓存解析
- 本地DNS缓存服务;
- 浏览器或应用自己的主机缓存;
- Java、.NET等运行时的DNS策略;
- HTTP客户端连接池;
- 公司递归DNS、路由器或运营商解析器;
- 容器、服务网格或本地代理。
排障时不能只运行一次nslookup就认定应用一定使用相同结果。命令行、系统和应用可能走不同解析路径。
四、如何确认域名当前解析到哪里
在Windows可使用:
Resolve-DnsName proxy.example.com -Type A
Resolve-DnsName proxy.example.com -Type AAAA也可以指定企业批准的DNS服务器做对照。记录响应中的地址、TTL、查询服务器和时间。若域名返回多个地址,应逐个测试,而不是只截取第一条。
常用命令差异可参考nslookup、dig与Resolve-DnsName对比。
五、DNS已经更新,为什么代理还连旧地址
常见原因有:
- 客户端仍在TTL有效期内使用缓存;
- 应用对DNS设置了更长缓存;
- 旧TCP连接和连接池仍然存活;
- 本地hosts或企业DNS覆盖了公共解析;
- IPv4记录已更新,但客户端优先使用旧AAAA记录;
- 多地址结果中仍包含旧节点。
代理连接池复用可参考换节点后仍使用旧IP的原因。
六、服务方切换DNS前应该做什么
- 提前评估并逐步降低TTL,而不是故障时临时修改;
- 让新旧节点在过渡期同时可用;
- 确认新地址的协议、认证、证书和容量;
- 监控新旧地址的连接数和错误率;
- 等待主要缓存和旧连接自然退出后再下线旧节点;
- 保留快速恢复原解析的回退方案。
域名迁移降低TTL的通用原理见DNS变更前的TTL规划。
七、客户端侧如何安全刷新
先确认服务方已经发布变更,再按应用文档刷新DNS或重启客户端。不要为了追求“立即生效”盲目清理公司DNS、重启所有服务器或修改hosts。
对关键应用可分批滚动重启,让新实例解析新地址,同时保留旧实例观察。写操作要有幂等和排空机制,避免中断造成重复。
八、IPv4和IPv6要一起检查
代理域名可能同时返回A和AAAA记录。只变更A记录时,支持IPv6的客户端可能继续连接旧AAAA地址;反之亦然。应记录客户端地址选择、Happy Eyeballs行为和两条路径的可达性。
IPv6不能正常使用时,不要长期依靠删除AAAA掩盖根因,应检查路由、防火墙、监听和服务端支持。
九、域名证书和SNI有什么关系
如果代理连接本身使用TLS,客户端通常依据配置的域名验证证书,并在握手中发送SNI。把域名替换成解析出的IP,可能造成证书名称不匹配或路由到错误虚拟主机。
因此,服务方交付域名时应优先按说明使用域名,不要为了“省一次DNS”长期硬编码IP。
十、固定IP白名单场景如何处理
企业白名单看的是实际连接来源或目标地址,而不是主机名文字。若代理域名背后的地址会变化,应先问清服务方是否提供稳定地址段、变更通知和过渡期。严格依赖固定目标IP的防火墙规则,不能只允许域名而不考虑解析变化。
最可靠的运维记录包括:域名、A/AAAA结果、TTL、服务变更时间、客户端缓存策略、连接池寿命和回退地址。这样DNS调整后出现分批切换,也能判断是正常过渡还是配置故障。






