Привет всем: Как мне настроить 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.
У меня есть два основных вопроса. Как я могу:
- Найдите диапазон доступных адресов ipv6, которые я могу использовать
- Используйте их программно в golang для выполнения http-запросов (опять же, имитируя прокси)
Я предполагаю, что я спрашиваю: как я могу воспроизвести это: https://github.com/blechschmidt/freebind/blob/master/freebind.c на ходу.