TCPproxy基于 swoole 实现的 TCP 数据包转发
TCPproxy 是基于swoole实现的TCP数据包转发,可用于转发请求包到指定应用,可实现内网花生壳等类似功能。
原理图:
假设我们希望有一台机器A(ip 192.168.1.101)要开放端口6379给用户访问,但可能实际情况是用户无法直接访问到A(ip 192.168.1.101), 但却有一台机器B(ip 192.168.1.100) 可以开放一些其他端口给用户访问,为了让用户通过B(ip 192.168.1.100)能访问到A(ip 192.168.1.101)上6379端口,基于swoole实现的Tcpproxy解决了这个问题! 当然你可以联想到我们家里的内部机器是在外网无法访问的,可正好你有一台云服务器,所以我们可以通过Tcpproxy实现外部访问你家里的内网应用, 说到这里你可以完全把它当成内网花生壳的功能. 按照上面描述的情况,配置我们的服务选项后如下:
//守护进程模式 $proxy_conf['daemon'] = 0; //开放给用户的公网的ip $proxy_conf['public_ip'] = '192.168.1.100'; //开放给用户的公网的端口 $proxy_conf['public_port'] = 9999; //代理内部中转端口 $proxy_conf['public_proxy_port'] = 6677; //内部无法开放给公网的ip $proxy_conf['local_ip'] = '192.168.1.101'; //内部无法开放给公网的端口 $proxy_conf['local_port'] = 6379; //开放连接数 $proxy_conf['open_num'] = 10;
在B服务器运行
php proxy_server.php
在A服务器运行
php proxy_client.php
演示
为了在本机测试,我简化A,B为本地,通过本地9999访问本地6379应用,
//开放给用户的公网的ip $proxy_conf['public_ip'] = '127.0.0.1'; //开放给用户的公网的端口 $proxy_conf['public_port'] = 9999; //代理内部中转端口 $proxy_conf['public_proxy_port'] = 6677; //内部无法开放给公网的ip $proxy_conf['local_ip'] = '127.0.0.1'; //内部无法开放给公网的端口 $proxy_conf['local_port'] = 6379; //开放连接数 $proxy_conf['open_num'] = 10;
模拟内网花生壳功能时使用要点
-
需要一台有公网ip运行proxy_server.php开放给用户访问
-
在你的内网运行proxy_client.php来代理你的应用
为了调试更方便,对于内内网无php&swoole环境的,我们提供了sproxy,功能同proxy_client.php
make #单以多进程模式运行 ./sproxy_process -s 127.0.0.1:6677 -t 127.0.0.1:6379 -c 10 -d #或以多进程多线程模式运行 ./sproxy_thread -s 127.0.0.1:6677 -t 127.0.0.1:6379 -c 10 -d
-
-d 指定以守护进程模式运行
-
-s 指定proxy_server.php内部地址和端口
-
-t 指定需要代理app运行地址和端口
-
-c 指定开启进程数量
评论
PropagastUDP数据包转发工具
Propagast抓取UDP广播数据包,并重定向到所有本应在收到这些数据包单播Socket。因此,在某个指定IP上侦听的那些游戏服务器例如HLDS的(用于反恐精英)和q3ded(为雷神之锤三:竞技场)
PropagastUDP数据包转发工具
0
CabalPHP基于 Swoole 的轻量级框架
CabalPHPCabalPHP是一个基于Swoole的轻量、高效、全异步开源框架。亮点全异步单机超高性能,轻松分布式部署支持HTTP、TCP、websocket等多种协议完善数据库引擎,简单高效(其
CabalPHP基于 Swoole 的轻量级框架
0
YurunProxy基于 Swoole 的内网穿透
首先感谢Swoole为我们广大phper带来第二春,可以非常方便地开发各种网络通信应用!YurunProxy是基于Swoole的内网穿透,支持本地微信开发、Web开发,让外网能够访问到!这是宇润这周刚
YurunProxy基于 Swoole 的内网穿透
0
YurunProxy基于 Swoole 的内网穿透
首先感谢 Swoole 为我们广大 phper 带来第二春,可以非常方便地开发各种网络通信应用!Yu
YurunProxy基于 Swoole 的内网穿透
0
swoole-jobs基于 swoole 的 job 调度组件
swoole-jobs基于swoole类似gearman的分布式任务处理系统高性能/动态多woker进程消费队列,加速后端耗时服无需像gearman一个worker配置一条crontab,swoole
swoole-jobs基于 swoole 的 job 调度组件
0
swoole-jobs基于 swoole 的 job 调度组件
swoole-jobs基于swoole类似gearman的分布式任务处理系统高性能/动态多woker
swoole-jobs基于 swoole 的 job 调度组件
0