runsisi's

technical notes

chisel proxy

2019-09-21 runsisi#proxy

前面分别介绍了基于 chisel 的 正向反向 代理,实际上 chisel 服务端支持同时指定 --socks5--reverse 选项,而 chisel 客户端支持指定多个 remote,因此可以将正向和反向代理集成在同一组 chisel 实例中,方案如下图所示:

chisel

注意:以下示例省略了认证信息的设置,具体的设置请参考 chisel --key, --auth, --fingerprint 等选项。

服务端

外网机器(IP 地址为 123.123.123.123)启动 chisel 服务端:

$ chisel server -v --port 80 --reverse --socks5
2019/09/20 14:12:37 server: SOCKS5 server enabled
2019/09/20 14:12:37 server: Reverse tunnelling enabled
2019/09/20 14:12:37 server: Fingerprint 60:2a:4a:aa:76:bb:48:f1:4b:10:70:a7:96:1e:15:7e
2019/09/20 14:12:37 server: Listening on 0.0.0.0:8000...

客户端

连接外网服务端:

$ chisel client -v 123.123.123.123:80 R:8022::8044 8033::socks
2019/09/20 14:17:16 client: Connecting to ws://123.123.123.123:80
2019/09/20 14:17:16 client: proxy#2:127.0.0.1:8033=>socks: Listening
2019/09/20 14:17:16 client: Handshaking...
2019/09/20 14:17:16 client: Fingerprint 60:2a:4a:aa:76:bb:48:f1:4b:10:70:a7:96:1e:15:7e
2019/09/20 14:17:16 client: Sending config
2019/09/20 14:17:16 client: Connected (Latency 1.292822ms)

同时在客户端节点启动 gost 代理:

$ gost -L localhost:8044
2019/09/20 14:17:43 route.go:479: auto://localhost:8044 on 127.0.0.1:8044

测试

此时在客户端节点以 :8033 作为 socks5 代理地址可以访问外网:

$ lsb_release -i
Distributor ID: Ubuntu
$ nc localhost 22
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
$ nc -X 5 -x localhost:8033 localhost 22 
SSH-2.0-OpenSSH_6.6.1

在服务端节点以 :8022 作为 socks5 代理地址可以访问内网:

$ lsb_release -i
Distributor ID: CentOS
$ nc localhost 22
SSH-2.0-OpenSSH_6.6.1
$ nc -4 --proxy-type socks5 --proxy localhost:8022 localhost 22
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3