Я использую ssh для создания прокси-соединения с экземпляром EC2:
ssh -v -D 8123 ubuntu@some.ip.address
, и я написал очень простую программу Go, которая делает http-запросы:
package main
import (
"io/ioutil"
"net/http"
"os"
"log"
"fmt"
)
func main(){
resp, err := http.Get("http://example.com")
if err != nil {
log.Println(err)
os.Exit(1)
}
fmt.Println(string(ioutil.ReadAll(resp.Body)))
}
Когда я запускаю свою программу нормально, она работает как положено.Однако, когда я использую HTTP_PROXY env var ( godoc , пример ) для указания прокси-сервера http (или если я создаю собственный http-клиент, который использует этот прокси для транспорта), я получаюследующее:
HTTP_PROXY=localhost:8123 ./main 2018/11/29 23:33:27 Get http://example.com: EOF
и отладка для моего сеанса SSH, на котором я установил прокси-сервер, дает мне:
debug1: Connection to port 8123 forwarding to socks port 0 requested.
debug1: channel 3: new [dynamic-tcpip]
debug1: channel 3: free: dynamic-tcpip, nchannels 4
Когда я настраиваю Wi-Fi-адаптер моего macbook для использования localhost:8123
как прокси SOCKS, похоже, работает.Мой публичный IP-адрес меняется, и трафик, кажется, течет (на самом деле, я использую его сейчас).Есть идеи, почему у моей программы Go проблемы?