使用 golang 1.10.2 连接到带有 IKEv2 证书的 socks5 代理

Posted

技术标签:

【中文标题】使用 golang 1.10.2 连接到带有 IKEv2 证书的 socks5 代理【英文标题】:connect to socks5 proxy with IKEv2 certificate using golang 1.10.2 【发布时间】:2018-05-08 08:15:23 【问题描述】:

我的客户端应用程序使用 Go 1.10.2。

我正在尝试连接到需要用户名、密码和 IKEv2 证书文件的 socks5 代理。

这是我到目前为止所得到的:

 func socks5(proxyAdress string, url string, user string, password string) 
        auth := proxy.AuthUser: user, Password: password
        if proxy, err := proxy.SOCKS5("tcp", proxyAdress, &auth, proxy.Direct);  err != nil 
            log.Fatalf("error: %v", proxy)
         else 
            tr := &http.TransportDial: 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.nord***.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 - 我正在尝试连接到一个名为 nord*** 的付费 ipsec ***,它使用 IKEv2 证书。 好的,那你需要先在你的电脑上设置IPSec。 @ufk 你用的是什么操作系统?你也可以发布你得到的实际错误吗? 【参考方案1】:

我认为您需要先在您的计算机上设置 IPSec。

设置 IPSec 的步骤

    初始配置(第一次仅一次) 启动 *** 连接

关注here

【讨论】:

感谢您的回答。因此,即使我设置了初始配置,也无法以编程方式启动和停止它,也无法决定哪些请求将通过 ***,哪些不会?

以上是关于使用 golang 1.10.2 连接到带有 IKEv2 证书的 socks5 代理的主要内容,如果未能解决你的问题,请参考以下文章

如何从 GoLang 应用程序连接到 Bigtable Emulator?如何使用它?

无法从 golang 连接到 docker postgres 容器

从golang mysql连接到mysql容器时,用户'root'@'localhost'的访问被拒绝(使用密码:YES)

使用 Golang mgo 连接到 MongoDB Atlas:Persistent no reachable server to replica set

Golang将不正确的字符连接到字符串[重复]

Google App Engine Golang 连接到 Cloud SQL Postgres unix dial no such file or directory