【发布时间】:2018-05-08 08:15:23
【问题描述】:
我的客户端应用程序使用 Go 1.10.2。
我正在尝试连接到需要用户名、密码和 IKEv2 证书文件的 socks5 代理。
这是我到目前为止所得到的:
func socks5(proxyAdress string, url string, user string, password string) {
auth := proxy.Auth{User: user, Password: password}
if proxy, err := proxy.SOCKS5("tcp", proxyAdress, &auth, proxy.Direct); err != nil {
log.Fatalf("error: %v", proxy)
} else {
tr := &http.Transport{Dial: proxy.Dial}
// Create client
myClient := &http.Client{
Transport: tr,
}
if resp, err2 := myClient.Get(url); err2 != nil {
log.Fatalf("error: %v", err2)
} else {
if bodyBytes, err3 := ioutil.ReadAll(resp.Body); err3 != nil {
log.Fatalf("error: %v", err3)
} else {
str := string(bodyBytes)
log.Printf(str)
}
}
}
}
当我使用适当的参数执行这个函数时
我从服务器收到一条错误消息,提示我无权访问我请求的网页。那是因为我没有指定 IKEv2 密钥文件。
所以..首先..我该怎么做?
第二个...Dial 已弃用。我应该使用DialContext,但不知道如何使用
谢谢! :)
更新
我使用的操作系统是 MacOS High Sierra 10.13.4
问题是,例如当我执行时
socks5("il7.nordvpn.com:1080", "http://ifconfig.me/ip","MY_USER","MY_PASS")
我得到的错误是
2018/05/15 23:34:49 error: Get http://ifconfig.me/ip: socks connect tcp ifconfig.me:80->ifconfig.me:80: EOF
我不知道在哪里提供 IKEv2 证书
【问题讨论】:
-
freenode 中#go-nuts 上的一个很酷的家伙向我展示了一个解决已弃用 Dial 的方法。仍然没有解决 IKEv2 问题。 play.golang.org/p/NfXO9STkFin
-
您是否绝对 100% 确定您拥有“IKEv2”证书?你需要三重检查这个。 IKEv2 证书用于设置 IPSec,这是操作系统所做的事情,与诸如 strongswan 之类的 IPSec 守护程序一起使用。在任何情况下,您都不会将 IKEv2 证书放入您自己的应用程序中。
-
@MichaelHampton - 我正在尝试连接到一个名为 nordvpn 的付费 ipsec vpn,它使用 IKEv2 证书。
-
好的,那你需要先在你的电脑上设置IPSec。
-
@ufk 你用的是什么操作系统?你也可以发布你得到的实际错误吗?