xjasonlyu / tun2socks

tun2socks - powered by gVisor TCP/IP stack
https://github.com/xjasonlyu/tun2socks/wiki
GNU General Public License v3.0
3.14k stars 433 forks source link

socks5 connect ipv6 #17

Closed f4nff closed 3 years ago

f4nff commented 3 years ago

./tun2socks-linux-amd64 --loglevel WARN --device tun://tun0 --proxy socks5://[::1]:1080 --interface eth0

不可用

./tun2socks-linux-amd64 --loglevel WARN --device tun://tun0 --proxy socks5://127.0.0.1:1080 --interface eth0

正常。

xjasonlyu commented 3 years ago

有没有详细一点的本地网络配置信息

f4nff commented 3 years ago

gost -L=socks5://:1080

./tun2socks-linux-amd64 --loglevel WARN --device tun://tun0 --proxy socks5://[::1]:1080 --interface eth0

不可用

./tun2socks-linux-amd64 --loglevel WARN --device tun://tun0 --proxy socks5://127.0.0.1:1080 --interface eth0

正常。

f4nff commented 3 years ago

如果socks5服务端是ipv6,连接会失败,

xjasonlyu commented 3 years ago

@f4nff 在新的commit里修复了,多谢😅

f4nff commented 3 years ago

关键我编译不了呀, 若不然,我可以测试更多, 一般我都是

go get github.com/xjasonlyu/tun2socks
go build

现在不行。

f4nff commented 3 years ago
root@yy:~# go get -d github.com/xjasonlyu/tun2socks
/home/gopkg/src/gvisor.dev/gvisor/pkg/tcpip/tcpip.go:41:2: found packages sync (aliases.go) and template (atomicptr_unsafe.go) in /home/gopkg/src/gvisor.dev/gvisor/pkg/sync
/home/gopkg/src/gvisor.dev/gvisor/pkg/tcpip/adapters/gonet/gonet.go:29:2: found packages tcp (accept.go) and rcv (rcv_test.go) in /home/gopkg/src/gvisor.dev/gvisor/pkg/tcpip/transport/tcp
f4nff commented 3 years ago
root@yy:/home/gopkg/src/github.com/xjasonlyu/tun2socks# go build
../../../gvisor.dev/gvisor/pkg/tcpip/tcpip.go:41:2: found packages sync (aliases.go) and template (atomicptr_unsafe.go) in /home/gopkg/src/gvisor.dev/gvisor/pkg/sync
../../../gvisor.dev/gvisor/pkg/tcpip/adapters/gonet/gonet.go:29:2: found packages tcp (accept.go) and rcv (rcv_test.go) in /home/gopkg/src/gvisor.dev/gvisor/pkg/tcpip/transport/tcp
f4nff commented 3 years ago

你可以把依赖都丢到 vendor 目录里面吗,

xjasonlyu commented 3 years ago

噗,你看README,先git clone再make就好了。

xjasonlyu commented 3 years ago

你可以把依赖都丢到 vendor 目录里面吗,

不是全依赖,gvisor库用的是go这个分支,直接go build肯定会报错的。

$ git clone https://github.com/xjasonlyu/tun2socks.git
$ cd tun2socks
$ make
f4nff commented 3 years ago
root@yy:~# git clone https://github.com/xjasonlyu/tun2socks.git
Cloning into 'tun2socks'...
remote: Enumerating objects: 126, done.
remote: Counting objects: 100% (126/126), done.
remote: Compressing objects: 100% (85/85), done.
remote: Total 2739 (delta 50), reused 89 (delta 32), pack-reused 2613
Receiving objects: 100% (2739/2739), 5.22 MiB | 2.48 MiB/s, done.
Resolving deltas: 100% (1341/1341), done.
root@yy:~# cd tun2socks
root@yy:~/tun2socks# make
GOARCH=amd64 GOOS=linux CGO_ENABLED=0 go build "-v" -ldflags '-w -s -buildid= -X "main.Version=v2.0
0-rc.3-3-gfcf9d28" -X "main.BuildTime=2020-11-10T09:03:48Z"  ' -tags '""' -trimpath -o "bin"/"tun2s
cks"-linux-amd64
main.go:7:2: cannot find package "github.com/urfave/cli/v2" in any of:
        /home/go/src/github.com/urfave/cli/v2 (from $GOROOT)
        /home/gopkg/src/github.com/urfave/cli/v2 (from $GOPATH)
package .
        main.go:9:2: use of internal package github.com/xjasonlyu/tun2socks/internal/cmd not allowe
/home/gopkg/src/gvisor.dev/gvisor/pkg/tcpip/tcpip.go:41:2: found packages sync (aliases.go) and tem
late (atomicptr_unsafe.go) in /home/gopkg/src/gvisor.dev/gvisor/pkg/sync
/home/gopkg/src/gvisor.dev/gvisor/pkg/tcpip/adapters/gonet/gonet.go:29:2: found packages tcp (accep
.go) and rcv (rcv_test.go) in /home/gopkg/src/gvisor.dev/gvisor/pkg/tcpip/transport/tcp
make: *** [Makefile:39: linux-amd64] Error 1
root@yy:~/tun2socks#

也不行。不知道为什么

f4nff commented 3 years ago
root@yy:~/tun2socks# go build
package .
        main.go:9:2: use of internal package github.com/xjasonlyu/tun2socks/internal/cmd not allowed
/home/gopkg/src/gvisor.dev/gvisor/pkg/tcpip/tcpip.go:41:2: found packages sync (aliases.go) and template (atomicptr_unsafe.go) in /home/gopkg/src/gvisor.dev/gvisor/pkg/sync
/home/gopkg/src/gvisor.dev/gvisor/pkg/tcpip/adapters/gonet/gonet.go:29:2: found packages tcp (accept.go) and rcv (rcv_test.go) in /home/gopkg/src/gvisor.dev/gvisor/pkg/tcpip
xjasonlyu commented 3 years ago

你go版本是多少,我怎么觉得你没开go module。。

f4nff commented 3 years ago
root@yy:~# go version
go version go1.15.3 linux/amd64

怎么看 go module

f4nff commented 3 years ago
root@yy:~# go env
GO111MODULE="off"
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOENV="/root/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/home/gopkg/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/gopkg"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/home/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/home/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build814065283=/tmp/go-build -gno-record-gcc-switches"
xjasonlyu commented 3 years ago

你go mod没开,那你要先export GO111MODULE=on再make,一般都是默认开启的。

f4nff commented 3 years ago

可以编译了

f4nff commented 3 years ago

自己编译之后,经过测试,连接ipv6的socks5 server 没有问题了。

xjasonlyu commented 3 years ago

嗯对,我昨天测了是没有问题的,之前是ipv6的解析忘开了,多谢反馈🤪

f4nff commented 3 years ago

能把你这个项目跟gost那个项目合并出一个工具不, 如果tun2socks+gost ,本地会多出一次转发,还占用端口,

xjasonlyu commented 3 years ago

应该不打算这么做,一是因为你说的转发和端口的开销很小,对于正常网络环境来说没有什么影响(而且建议跑docker里);其次这个项目主要就是为了把tun流量转成socks连接,至于后端代理是什么并不是这个项目要考虑的,无论是gost,clash,trojan,v2ray什么的只要能支持socks就都可以作为代理后端。

总之就是每个工具有每个工具的重心。

f4nff commented 3 years ago

了解,我测一段时间看看 之前用那个go-tun2socks,里面有gc,静态编译,很麻烦,而且最高只能跑100Mbps 纯go编译的arm丢路由器很方便编译,

xjasonlyu commented 3 years ago

对,我之前也是用go-tun2socks,那个用的cgo,编译还好,但是有时候会有死锁或者panic(原因我没去找),主要是速度只有100Mbps多点。

这个我测的话至少跑到了2.5Gbps,主要还是看CPU性能。不过你放路由器里的话,内存要够(我当时测了100个tcp连接跑满带宽的时候内存占用到了800MB+。。,不过正常用一般50MB左右的样子),纯Go内存消耗挺大的,况且我还没做内存优化。。

f4nff commented 3 years ago

内存那些还没看,路由器8G内存,主要先看看稳定否,功能是否正常。

我还是比较喜欢你这个,就是纯粹的tun2socks,不掺杂添加路由表,什么dns那些, 有几个tun2socks 搞得功能很多,各种平台差异化,很难用。不如只搞好某一块即可。

xjasonlyu commented 3 years ago

稳定性我用了个把星期了暂时没什么问题,你遇到了的话也可以反馈给我。

然后我偏向于路由表什么的交给外部脚本来解决,需要什么自己写就行,集成到一起去反而跨平台不方便而且也莫得意思。

f4nff commented 3 years ago
稳定性我用了个把星期了暂时没什么问题,你遇到了的话也可以反馈给我。

然后我偏向于路由表什么的交给外部脚本来解决,需要什么自己写就行,集成到一起去反而跨平台不方便而且也莫得意思。

非常认同。