Я некоторое время пытался найти способ переопределить DNS-сервер по умолчанию для программы Go, но, к сожалению, все еще безуспешно.
Текущее решение, которое, как я думал, работа была:
package main
import (
"context"
"fmt"
"net"
"time"
)
func main() {
DNS := "1.1.1.1"
net.DefaultResolver = &net.Resolver{
PreferGo: true,
Dial: func(ctx context.Context, network, address string) (net.Conn, error) {
d := net.Dialer{
Timeout: time.Millisecond * time.Duration(3000),
}
return d.DialContext(ctx, "udp", fmt.Sprintf("%s:53", DNS))
},
}
resp, err := net.LookupHost("tsdfsdf.com")
if err != nil {
fmt.Printf(err.Error())
}
fmt.Printf("%+v", resp)
}
Но ответ таков:
lookup tsdfsdf.com on 192.168.0.1:53: no such host[]
К сожалению, мой DNS-сервер по умолчанию установлен в моем reslov.conf, который я пытался заставить использовать Go Разрешить, установив export GODEBUG=netdns=go
Долгосрочное решение состоит в том, чтобы иметь возможность переопределять распознаватель по умолчанию для HTTP-клиента, который, в свою очередь, будет использоваться некоторыми AWS SDK.
Кто-нибудь сталкивался с этим или знает, как я могу обойти это?
К вашему сведению, я знаю, что «tsdfsdf.com» не является реальным доменом, я просто использую его, чтобы выплевывать Нет такой ошибки хоста, чтобы увидеть, что DNS это спросил.