shootback 是一个反向 TCP 隧道,让你可以访问 NAT 或防火墙后面的目标
反向TCP隧道, 使得NAT或防火墙后的内网机器可以被外网访问.
在 800 并发下消耗不到 1% 的 CPU 和 8MB 内存.
slaver 是 单文件,且仅依赖 python(2.7/3.4+) 标准库.

需求:
下载 git clone https://github.com/aploium/shootback
(可选)如果你需要单文件 slaver.py,运行 python3 build_singlefile_slaver.py
运行以下命令
# master listen :10000 for slaver, :10080 for you
python3 master.py -m 0.0.0.0:10000 -c 127.0.0.1:10080
# slaver connect to master, and use example.com as tunnel target
# ps: you can use python2 in slaver, not only py3
python3 slaver.py -m 127.0.0.1:10000 -t example.com:80
# doing request to master
curl -v -H "host: example.com" 127.0.0.1:10080
# -- some HTML content from example.com --
# -- some HTML content from example.com --
# -- some HTML content from example.com --
一个更实际的例子(带SSL):
假设你的 master 是 22.33.44.55 (就像上图中的那样)
# slaver_local_ssh <---> slaver <--[SSL]--> master(22.33.44.55) <--> You
# ---- master ----
python3 master.py -m 0.0.0.0:10000 -c 0.0.0.0:10022 --ssl
# ---- slaver ----
# ps: the `--ssl` option is for slaver-master encryption, not for SSH
python(or python3) slaver.py -m 22.33.44.55:10000 -t 127.0.0.1:22 --ssl
# ---- YOU ----
ssh 22.33.44.55 -p 10022
更多帮助,请参阅 python3 master.py --help 和 python3 slaver.py --help
后台运行:
nohup python(or python3) slaver.py -m host:port -t host:port -q &
或者:
# screen is a linux command
screen
python(or python3) slaver.py -m host:port -t host:port
# press ctrl-a d to detach screen
# and if necessary, use "screen -r" to reattach
任何使用 TCP 的服务都可以被 shootback 传输。HTTP/FTP/代理/SSH/VNC/...
shootback 本身只进行传输工作,不处理加密或代理。
但你可以使用第三方代理(例如 shadowsocks)作为 slaver 的目标。
例如:
shadowsocks_server<-->shootback_slaver<-->shootback_master<-->shadowsocks_client(socks5)
select.select() 的限制,shootback 无法处理超过 512 并发,你可能会遇到ValueError: too many file descriptors in select()