
역방향 TCP 터널을 통해 NAT나 방화벽 뒤에 있는 대상에 접근할 수 있습니다.
shootback는 NAT나 방화벽 뒤에 있는 대상을 접근할 수 있게 해주는 역방향 TCP 터널입니다.
反向TCP隧道, 使得NAT或防火墙后的内网机器可以被外网访问.
800개의 동시 연결에서 CPU 1% 미만, 메모리 8MB를 사용합니다.
slaver는 __단일 파일__이며 python(2.7/3.4+) 표준 라이브러리만 필요합니다.

요구 사항:
다운로드 git clone https://github.com/aploium/shootback
(선택 사항) 단일 파일 slaver.py가 필요하면 python3 build_singlefile_slaver.py 실행
다음 명령 실행
# master는 slaver를 위해 :10000, 사용자를 위해 :10080을 수신
python3 master.py -m 0.0.0.0:10000 -c 127.0.0.1:10080
# slaver는 master에 연결하고 터널 대상으로 example.com 사용
# 참고: slaver에서는 python2도 사용 가능하며 py3만 필요한 것은 아님
python3 slaver.py -m 127.0.0.1:10000 -t example.com:80
# master에 요청 보내기
curl -v -H "host: example.com" 127.0.0.1:10080
# -- example.com의 HTML 내용 일부 --
# -- example.com의 HTML 내용 일부 --
# -- example.com의 HTML 내용 일부 --
보다 현실적인 예제 (SSL 사용):
master IP가 22.33.44.55라고 가정 (위 그림과 동일)
# slaver_local_ssh <---> slaver <--[SSL]--> master(22.33.44.55) <--> 사용자
# ---- master ----
python3 master.py -m 0.0.0.0:10000 -c 0.0.0.0:10022 --ssl
# ---- slaver ----
# 참고: `--ssl` 옵션은 slaver-master 암호화를 위한 것이며 SSH용이 아님
python(or python3) slaver.py -m 22.33.44.55:10000 -t 127.0.0.1:22 --ssl
# ---- 사용자 ----
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은 리눅스 명령어
screen
python(or python3) slaver.py -m host:port -t host:port
# ctrl-a d 를 눌러 screen 분리
# 필요한 경우 "screen -r"로 재연결
TCP를 사용하는 모든 서비스는 shootback 가능합니다. HTTP/FTP/프록시/SSH/VNC/...
shootback 자체는 전송 작업만 수행하며 암호화나 프록시를 처리하지 않습니다.
하지만 3rd party 프록시(예: shadowsocks)를 slaver 대상으로 사용할 수 있습니다.
예:
shadowsocks_server<-->shootback_slaver<-->shootback_master<-->shadowsocks_client(socks5)
select.select()의 제한으로 인해ValueError: too many file descriptors in select() 오류가 발생할 수 있습니다.