Как переопределить DNS по умолчанию - PullRequest
1 голос
/ 07 января 2020

Я некоторое время пытался найти способ переопределить 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 это спросил.

...