Golang如何做DNS查询_Golang DNS解析教程【精选】

张开发
2026/4/10 1:27:04 15 分钟阅读

分享文章

Golang如何做DNS查询_Golang DNS解析教程【精选】
net.LookupIP 返回空或报错最常见原因是传入带协议的URL如https://example.com或无效子域它只接受纯域名如example.com或IP字符串且默认不读/etc/hosts需设PreferGo:true才生效。net.LookupIP 为什么返回空或报错最常见原因是传了带协议的 URL比如 https://example.com 或 www.example.comwww 不是必须但若该子域未注册就会 NXDOMAIN。net.LookupIP 只认纯域名如 example.com或 IP 字符串。检查输入是否含 http://、https://、ftp:// 等前缀——删掉确认系统 DNS 配置可用Linux/macOS 看 /etc/resolv.confWindows 查网络适配器 DNS 设置内网环境如公司代理后可能拦截 DNS 请求临时换用 1.1.1.1 或 8.8.8.8 测试net.LookupIP 默认走系统解析器libc 的 getaddrinfo不读 /etc/hosts想让它生效得显式设 PreferGo: trueLookupIP vs LookupHost该用哪个如果你要拿 net.IP 做后续网络操作比如 dial TCP、构造 UDP 包用 net.LookupIP如果只是打印、日志、配置校验net.LookupHost 更省心。net.LookupIP(example.com) 返回 []net.IP含 IPv4/IPv6 混合结果顺序不保证net.LookupHost(example.com) 返回 []string内容取决于系统配置但至少不混版本想只查 A 记录用 resolver.LookupNetIP(ctx, ip4, example.com)想只查 AAAA用 ip6想查全部用 ip注意Kubernetes Headless Service 必须用这个才能拿到所有 Pod IP超时控制不能靠 context.Background()net.LookupIP 本身不接受 context.Context默认使用系统级 DNS 超时几秒到十几秒goroutine 容易卡死。别指望包一层 context.Background() 就能解决。 文心快码 文心快码Comate是百度推出的一款AI辅助编程工具

更多文章