You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从DNS查询结果与getaddrinfo返回值中排除不可用IP地址?

解决方法分两类,可根据需求选择:

1. 临时过滤getaddrinfo返回结果

getaddrinfo默认只返回IP信息,不会附带IP对应的域名映射,要过滤ns相关IP需要额外做反向解析:

  • 遍历getaddrinfo返回的全部addrinfo结构体链表,逐个提取IP地址
  • 对每个IP调用getnameinfo做PTR反向查询,获取IP绑定的域名
  • 丢弃所有域名匹配ns*.baidu.com规则的IP,剩下的就是可正常访问的百度服务IP

该方案仅适合临时应急,会额外增加解析耗时,且如果IP没有配置PTR反向记录会失效。

2. 根因修复(优先推荐)

正常DNS服务器查询baidu.com的A记录时,只会返回baidu.com自身绑定的Web服务IP,不会混入NS域名服务器的IP,你遇到的返回结果异常本身是WSL2默认DNS服务的bug,修复后无需额外做过滤:

  1. 先关闭WSL2自动生成resolv.conf的逻辑:在/etc/wsl.conf中添加如下配置:
[network]
generateResolvConf = false
  1. 手动修改/etc/resolv.conf,将原有nameserver替换为公共DNS,比如nameserver 8.8.8.8,也可以用国内公共DNS如114.114.114.114、223.5.5.5
  2. 执行wsl --shutdown关闭WSL后重新启动,配置就会生效,之后dig、getaddrinfo查询baidu.com都会返回正确的IP列表。

内容的提问来源于stack exchange,提问作者xmllmx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 10:54:02