Pages

Thursday, 1 April 2021

利用xSocks翻墙

 A transparent proxy tool based on quic/websocket+tls.

一个基于quic/websocket+tls的透明代理工具,支持智能DNS(windows 不支持),本软件只用于学习网络原理使用编程学习练手. 要求go的版本最低为1.16

优点

1.部署超级简单

2.纯go语言编写交叉编译简单,移植简单

3.维护简单要换传输协议,只要在server/client目录各加一个实现文件,然后tunnel增加一个类型即可。

编译方法

1.git clone https://github.com/dosgo/xSocks.git

2.cd cli

3.go build server.go //编译服务器端

4.go build client.go //编译客户端

使用方法

一.自签名证书使用

1.运行server -webPort 443 -quicPort 5002 -password 123456 //运行启动后会在当前目录生成你xx_server.key/xx_server.perm/xx_ca.perm/xx_ca.key; 4个文件。

2.使用quic协议 client -sock5Addr "127.0.0.1:6000" -serverAddr "quic://你的vps公网Ip:5002" -password 123456 //启动好后使用SwitchyOmega填写127.0.0.1:6000地址就可以了

3.使用websocket+tls client -caFile "第一步生成的xx_ca.perm" -sock5Addr "127.0.0.1:6000" -serverAddr "wss://你的vps公网Ip" -password 123456 //启动好后使用SwitchyOmega填写127.0.0.1:6000地址就可以了

二.收费tls证书使用

1.运行server -webPort 443 -quicPort 5002 -password 123456 -certFile "购买的收费证书路径" -keyFile "私钥路径"

2.使用quic协议 client -sock5Addr "127.0.0.1:6000" -serverAddr "quic://你的vps公网Ip:5002" -password 123456 //启动好后使用SwitchyOmega填写127.0.0.1:6000地址就可以了

3.使用websocket+tls client -sock5Addr "127.0.0.1:6000" -serverAddr "wss://你证书签名的域名" -password 123456 //启动好后使用SwitchyOmega填写127.0.0.1:6000地址就可以了

Android

https://github.com/dosgo/xSocks-android

感谢

github.com/google/netstack

github.com/yinghuocho/gotun2socks

github.com/miekg/dns

github.com/xtaci/smux

github.com/hashicorp/yamux


from  https://github.com/dosgo/xSocks

--------


我的补充说明


在linux vps上。

安装go1.16环境:
wget https://dl.google.com/go/go1.16.3.linux-amd64.tar.gz
mkdir go1.16.3
mv go1.16.3.linux-amd64.tar.gz go1.16.3
cd go1.16.3
tar xvf  go1.16.3.linux-amd64.tar.gz
echo 'export PATH=$PATH:/root/go1.16.3/go/bin' >> /etc/profile
cd go
mkdir gopath
echo 'export GOROOT=/root/go1.16.3/go' >> /etc/profile
echo 'export GOPATH=/root/go1.16.3/go/gopath' >> /etc/profile
echo 'export PATH=$PATH:/root/go1.16.3/go/gopath/bin' >> /etc/profile
. /etc/profile

这样,go1.16.3环境就搭建好了
(https://golang.org/dl/)
cd ~
git clone https://github.com/dosgo/xSocks xSocks-by-dosgo
cd xSocks-by-dosgo
cd cli
go build server.go
(会在当前目录下,生成可执行文件server)
运行./server -webPort 2443 -quicPort 5002 -password mypassword
(会在当前目录生成localhost_ca.key  localhost_server.key localhost_ca.pem  localhost_server.pem
4个文件)
会显示:
...

Quic Port:5002

webSocket Port:2443

passWord:mypassword

client run: ./client   -serverAddr "quic://vps-public-ip:5002"

client run: ./client   -serverAddr "wss://vps-public-ip:2443" -caFile xx_ca.pem

client run: ./client   -serverAddr "http2://vps-public-ip:2443" -caFile xx_ca.pem

client run: ./client   -serverAddr "kcp://vps-public-ip:5005"

client run: ./client   -tunType 2   -serverAddr "sudp://vps-public-ip:5006"

2021/04/02 03:10:40 packet_handler_map.go:99: failed to sufficiently increase receive buffer size (was: 208 kiB, wanted: 2048 kiB, got: 416 kiB). See https://github.com/lucas-clemente/quic-go/wiki/UDP-Receive-Buffer-Size for details.


此命令./server -webPort 2443 -quicPort 5002 -password mypassword是运行在前台的,我们可以利用boa来把此命令运行在后台:

boa /root/xSocks-by-dosgo/cli/server -webPort 2443 -quicPort 5002 -password mypassword && reboot

服务器端搭建完成。


在客户机器Mac上。安装go1.16环境:

wget https://golang.org/dl/go1.16.3.darwin-amd64.tar.gz

mkdir go1.16.3

mv go1.16.3.darwin-amd64.tar.gz go1.16.3

cd go1.16.3

tar xvf  go1.16.3.darwin-amd64.tar.gz
echo 'export PATH=$PATH:~/go1.16.3/go/bin' >> ~/.profile
cd go
mkdir gopath
echo 'export GOROOT=~/go1.16.3/go' >> ~/.profile
echo 'export GOPATH=~/go1.16.3/go/gopath' >> ~/.profile
echo 'export PATH=$PATH:~/go1.16.3/go/gopath/bin' >> ~/.profile
. ~/.profile

这样,go1.16.3环境就搭建好了
cd ~
git clone https://github.com/dosgo/xSocks xSocks-by-dosgo
cd xSocks-by-dosgo
cd cli
go build client.go
(会在当前目录下,生成可执行文件client)

 ./client   -serverAddr "quic://vps-public-ip:5002" -sock5Addr "127.0.0.1:6000" -password mypassword

不要关闭此terminal.

设置浏览器的socks5代理为127.0.0.1 ,端口为6000 ,浏览器即可翻墙。

不过打不开gmail.com和google.com,怪事。



No comments:

Post a Comment