Как использовать блок адреса ipv6 при отправке запросов - PullRequest
0 голосов
/ 09 ноября 2018

Привет всем: Как мне настроить http.transport для обработки с использованием разных адресов ipv6 для выдачи http-запросов (временных прокси). Что я пробовал:

    localAddr, err := net.ResolveIPAddr("ip6", "{ipv6 address}")
if err != nil {
    panic(err)
}
localTCPAddr := net.TCPAddr{
    IP: localAddr.IP,
}

webclient := &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,
    },
}

Это не с адресами ipv6:

panic: Get https://myip.addr.space/: dial tcp [{localAddr}]:0->[{hostip?}]:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

У меня есть два основных вопроса. Как я могу:

  1. Найдите диапазон доступных адресов ipv6, которые я могу использовать
  2. Используйте их программно в golang для выполнения http-запросов (опять же, имитируя прокси)

Я предполагаю, что я спрашиваю: как я могу воспроизвести это: https://github.com/blechschmidt/freebind/blob/master/freebind.c на ходу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...