Skip to content

A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. 通过反向代理把局域网内的端口服务暴露到公网,一个脚本搞定无需安装vpn

Notifications You must be signed in to change notification settings

panii/simple-socket-proxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

simple-socket-proxy

2013年左右写的小工具,用来转发tcp消息,用了几年做内网服务的代理,一直很稳定。编译成docker后只需要一行命令。

运行环境: erlang 17以上
转发各类tcp消息,如mysql、redis、windows远程链接、ssh等
模式一,正向代理:
命令 proxy -listen-left 13306 -connect-right 192.168.1.222:3306 -dump no 可以实现13306到3306的端口转发
上述命令是监听本机的 13306 端口,当收到tcp请求,就去建立与另一台机器 192.168.1.222 的 3306 端口的链接,并转发它们的数据包

模式二,反向代理:
先在公网运行命令监听两方端口,再从内网运行命令连到公网,这样可以开启一个守护链接。之后就可以通过连接公网,透传连到内网的服务了
命令如下图:

%    +------------------------[ Company Network ]-----------------------------+  
%    |   Second Step:                                                         |  
%    |   <proxy -connect-left internel_ip:22 -connect-right public_ip:2222>   | <-------------------+  
%    |                                |                                       |                     |  
%    |                                |                                       |                     |  
%    |           +------------+       |                                       |                     |  
%    |           | ssh server | <-----+                                       |                     |  
%    |           +------------+                                               |                     |  
%    |                                                                        |                     |  
%    +------------------------[ Company Network ]-----------------------------+                     |  
%                                                                                                   |  
%                                                                                                   |  
%                                                                                                   |  
%   +----------[ Home ]----------+      +--------------[ Public Network ]---------------+           |  
%   |                            |      |                                               |           |  
%   | Third Step:                |      | First Step:                                   |           |  
%   | <ssh root@x.x.x.x -p 1222> | ---> | <proxy -listen-left 1222 -listen-right 2222>  | <---------+  
%   |                            |      |                                               |  
%   |                            |      |                                               |  
%   +----------[ Home ]----------+      +--------------[ Public Network ]---------------+  

2024年1月24日 update
fix peername异常的情况, docker镜像也更新了时间戳

sudo docker run -d --net=host panii/simple-socket-proxy -listen-left 33306 -connect-right 127.0.0.1:3306 -dump str 日志的时间默认按北京时间显示
sudo docker run -d -e TZ=America/Phoenix --net=host panii/simple-socket-proxy -listen-left 33306 -connect-right 127.0.0.1:3306 -dump str 日志的时间修改成其它时区显示

2022年5月9日 update
可以方便在docker中执行, 开放自己的13306端口, 数据包与172.19.133.87:3306端口进行转发

1. git clone git@github.com:panii/simple-socket-proxy.git
2. cd simple-socket-proxy
3. sudo docker run --rm --name mysql_proxy -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime -d --net=host -v "$PWD":/usr/src/myapp -w /usr/src/myapp erlang:23.3-alpine escript proxy -listen-left 13306 -connect-right 172.19.133.87:3306 -dump str
4. sudo docker logs -f mysql_proxy
5. sudo docker stop mysql_proxy

2021年7月26日 update
编译了一个单独的docker image

可以方便的这样用
sudo docker run panii/simple-socket-proxy --help
sudo docker run -d --net=host panii/simple-socket-proxy -listen-left 33306 -connect-right 192.168.3.73:3306 -dump str
sudo docker run -d --net=host --restart=always panii/simple-socket-proxy -connect-left 127.0.0.1:3389 -connect-right 120.55.171.141:23389 -dump no

备注

sudo docker build -t simple-socket-proxy .
sudo docker login -u panii
sudo docker run simple-socket-proxy --help
sudo docker tag simple-socket-proxy:latest panii/simple-socket-proxy:latest
sudo docker push panii/simple-socket-proxy:latest

About

A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. 通过反向代理把局域网内的端口服务暴露到公网,一个脚本搞定无需安装vpn

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages