ошибка при попытке назначить значение локального адреса - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь установить локальный адрес http-запроса следующим образом:

localAddr, err := net.ResolveIPAddr("ip6", laddr)

if err != nil {
    log.Fatal(err)
}

localTCPAddr := net.TCPAddr{
    IP: localAddr.IP,
}

client := &http.Client{
    Transport: &http.Transport{
        Proxy: http.ProxyFromEnvironment,
        DialContext: (&net.Dialer{
            LocalAddr: &localTCPAddr,
            Timeout:   30 * time.Second,
            KeepAlive: 30 * time.Second,
            DualStack: true,
        }).DialContext,
        MaxIdleConns:          100,
        IdleConnTimeout:       90 * time.Second,
        TLSHandshakeTimeout:   10 * time.Second,
        ExpectContinueTimeout: 1 * time.Second,
    },
}

Для справки: переменная laddr будет выглядеть следующим образом:

 2620:13a:c020:0016:1f7b:169c:846f:218a:49152

Ошибкапроисходит при попытке отправить запрос, и это ошибка: 2018/11/25 00:17:58 поиск 2620: 13a: c020: 0016: 1f7b: 169c: 846f: 218a: 49152: такого хоста нет.

Я не уверен, что является причиной этой ошибки.Некоторые подробности о моей среде: это свежий VPS в Ubuntu, с почти ничего не установленным.

РЕДАКТИРОВАТЬ: Даже при удалении порта, как указано ниже, я все еще получаю эту ошибку: dial tcp [2620: 13a: c020: 16: 1f7b: 169c: 846f: 218a]: 0 -> [remoteip]: [удаленный порт] bind: невозможно назначить запрошенный адрес

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Ошибка была на моем конце: я раньше не назначал адрес интерфейсу.Спасибо, что сообщили мне о портах и ​​обо всем этом, очень признателен.

0 голосов
/ 25 ноября 2018

2620:13a:c020:0016:1f7b:169c:846f:218a:49152 не является действительным адресом IPv6.У вас есть дополнительный 49152, который даже не является действительным шестнадцатеричным IPv6.Этот 2620:13a:c020:0016:1f7b:169c:846f:218a является действительным адресом IPv6.

Validator

Редактировать

Разрешение адреса отличается от разрешениясвязь.Если вы хотите установить соединение, а не разрешать адрес, вам нужен порт.

например

net.Dial("tcp", "[2620:13a:c020:16:1f7b:169c:846f:218a]:49152")
...