![](/img/trans.png)
[英]connect to socks5 proxy with IKEv2 certificate using golang 1.10.2
[英]socks5 proxy using go
我想知道是否可以監聽本地端口 ex:1080 socks5,並且該端口上的所有連接都可以作為代理使用外部主機:port socks5
func main() {
l, err := net.Listen("tcp", "127.0.0.1:1080")
if err != nil {
fmt.Print(err)
}
defer l.Close()
for {
conn, err := l.Accept()
if err != nil {
fmt.Print(err)
}
go handle(conn)
}
}
func handle(conn net.Conn) {
defer conn.Close()
dialect, err := proxy.SOCKS5("tcp", "externalhost:externalport", nil, proxy.Direct)
newConn, err := dialect.Dial("tcp", "targethost:targetport")
if err != nil {
log.Printf("Connection error: %s", err.Error())
}
go func() {
_, err = io.Copy(newConn, conn)
if err != nil {
log.Printf("Connection error: %s", err.Error())
}
}()
_, err = io.Copy(conn, newConn)
if err != nil {
log.Printf("Connection error: %s", err.Error())
}
}
func handle(conn net.Conn) {
defer conn.Close()
}
我需要獲取目標地址並驗證連接是否為 socks5,然后使用外部 ip 執行代理並將其傳遞到 dialect.dial
聽起來你想要這個:
在這種情況下,您只需要一個基本的 TCP 代理。 您的工具不需要查看 socks5 請求,也不需要proxy.SOCKS5
來連接到遠程機器。 您只希望將與本地端點的所有連接轉發到遠程端點。
您當前的代碼基本上可以工作,除了您應該只使用net.Dial
(而不是dialect.Dial
)連接到"externalhost:externalport"
,並且您不需要創建proxy.SOCKS5
撥號器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.