关于Golang LookupTXT函数及Windows DNS服务器修改的技术咨询
如何修改DNS服务器IP并在Golang中指定DNS查询TXT记录
我来帮你解决这两个相关问题:Windows系统下修改DNS服务器,以及在Golang中绕过系统DNS、指定特定服务器查询TXT记录。
一、Windows中修改DNS服务器IP地址
你有两种常见方式可选,图形界面适合新手,命令行更高效:
图形界面操作步骤
- 按下Win+I打开设置,进入「网络和互联网」,选择你当前正在使用的网络(比如Wi-Fi或以太网)
- 点击「硬件属性」,下拉找到「DNS服务器分配」选项,切换为「手动」
- 开启IPv4(如果需要IPv6也可以开启),输入你想要的DNS地址——比如国内常用的
114.114.114.114、阿里223.5.5.5,或者继续用谷歌的8.8.8.8,输入后保存即可生效
命令行操作(需管理员权限)
- 按下Win+X,选择「Windows终端(管理员)」(老系统选命令提示符)
- 先查看你的网络适配器名称:
netsh interface show interface - 执行命令修改主DNS:
netsh interface ipv4 set dns name="你的适配器名称" static 8.8.8.8 - 要添加备用DNS的话:
netsh interface ipv4 add dns name="你的适配器名称" 8.8.4.4 index=2
注意:把命令里的
你的适配器名称替换成实际名称,比如「Wi-Fi」或「以太网」
二、Golang中指定DNS服务器查询TXT记录
默认的net.LookupTXT确实只会用系统配置的DNS,但我们可以通过自定义net.Resolver来指定特定服务器查询,直接上实用代码:
package main import ( "context" "fmt" "net" ) func main() { // 自定义解析器,指定要使用的DNS服务器 customResolver := &net.Resolver{ PreferGo: true, // 强制使用Go内置的DNS解析逻辑,不依赖系统 Dial: func(ctx context.Context, network, addr string) (net.Conn, error) { // 这里直接指定目标DNS服务器的地址和端口,比如谷歌的8.8.8.8:53 dialer := net.Dialer{} return dialer.DialContext(ctx, "udp", "8.8.8.8:53") }, } // 替换成你要查询的域名 txtRecords, err := customResolver.LookupTXT(context.Background(), "example.com") if err != nil { fmt.Printf("TXT记录查询失败: %v\n", err) return } fmt.Println("查询到的TXT记录:") for _, record := range txtRecords { fmt.Printf("- %s\n", record) } }
代码要点说明
PreferGo: true确保我们用Go自己的解析器,避免系统DNS的影响Dial函数自定义了DNS查询的连接目标,你可以把"8.8.8.8:53"替换成任意你想使用的DNS服务器(比如114.114.114.114:53)- 如果需要用TCP协议查询(比如大尺寸TXT记录),把
"udp"改成"tcp"就行
内容的提问来源于stack exchange,提问作者user2491067




